diff options
Diffstat (limited to 'src/lib/libc')
-rw-r--r-- | src/lib/libc/include/string.h | 9 | ||||
-rw-r--r-- | src/lib/libc/src/string/strlen.c | 14 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/libc/include/string.h b/src/lib/libc/include/string.h index 83bb551..58a7caa 100644 --- a/src/lib/libc/include/string.h +++ b/src/lib/libc/include/string.h @@ -39,4 +39,13 @@ */ size_t strlen(const char *s); +/* + * Get the length of a string with a maximum + * length + * + * @s: String to check length of + * @maxlen: Max length of string to check + */ +size_t strnlen(const char *s, size_t maxlen); + #endif /* _STRING_H */ diff --git a/src/lib/libc/src/string/strlen.c b/src/lib/libc/src/string/strlen.c index de02ad9..59184e8 100644 --- a/src/lib/libc/src/string/strlen.c +++ b/src/lib/libc/src/string/strlen.c @@ -38,3 +38,17 @@ strlen(const char *s) while (s[len++] != '\0'); return len - 1; } + +size_t +strnlen(const char *s, size_t maxlen) +{ + size_t len = 0; + + while (s[len++] != '\0') { + if (len >= maxlen) { + return len - 1; + } + } + + return len - 1; +} |