Merge pull request #9345 from bergzand/pr/fmt/strnlen
fmt: Add fmt_strnlen function
This commit is contained in:
commit
4219ec9265
@ -83,6 +83,15 @@ size_t fmt_strlen(const char *str)
|
||||
return (tmp - str);
|
||||
}
|
||||
|
||||
size_t fmt_strnlen(const char *str, size_t maxlen)
|
||||
{
|
||||
const char *tmp = str;
|
||||
while(*tmp && maxlen--) {
|
||||
tmp++;
|
||||
}
|
||||
return (tmp - str);
|
||||
}
|
||||
|
||||
size_t fmt_str(char *out, const char *str)
|
||||
{
|
||||
int len = 0;
|
||||
|
||||
@ -294,6 +294,17 @@ size_t fmt_float(char *out, float f, unsigned precision);
|
||||
*/
|
||||
size_t fmt_strlen(const char *str);
|
||||
|
||||
/**
|
||||
* @brief Count at most @p maxlen characters until '\0' (exclusive) in @p str
|
||||
*
|
||||
* @param[in] str Pointer to string
|
||||
* @param[in] maxlen Maximum number of chars to count
|
||||
*
|
||||
* @return nr of characters in string @p str points to, or @p maxlen if no
|
||||
* null terminator is found within @p maxlen chars
|
||||
*/
|
||||
size_t fmt_strnlen(const char *str, size_t maxlen);
|
||||
|
||||
/**
|
||||
* @brief Copy null-terminated string (excluding terminating \0)
|
||||
*
|
||||
|
||||
@ -704,6 +704,17 @@ static void test_fmt_strlen(void)
|
||||
TEST_ASSERT_EQUAL_INT(21, fmt_strlen(long_str));
|
||||
}
|
||||
|
||||
static void test_fmt_strnlen(void)
|
||||
{
|
||||
const char *empty_str = "";
|
||||
const char *short_str = "short";
|
||||
const char *long_str = "this is a long string";
|
||||
|
||||
TEST_ASSERT_EQUAL_INT(0, fmt_strnlen(empty_str, 16));
|
||||
TEST_ASSERT_EQUAL_INT(5, fmt_strnlen(short_str, 16));
|
||||
TEST_ASSERT_EQUAL_INT(16, fmt_strnlen(long_str, 16));
|
||||
}
|
||||
|
||||
static void test_fmt_str(void)
|
||||
{
|
||||
const char *string1 = "string1";
|
||||
@ -778,6 +789,7 @@ Test *tests_fmt_tests(void)
|
||||
new_TestFixture(test_fmt_s16_dfp),
|
||||
new_TestFixture(test_fmt_s32_dfp),
|
||||
new_TestFixture(test_fmt_strlen),
|
||||
new_TestFixture(test_fmt_strnlen),
|
||||
new_TestFixture(test_fmt_str),
|
||||
new_TestFixture(test_scn_u32_dec),
|
||||
new_TestFixture(test_fmt_lpad),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user