diff options
author | Ian Moffett <ian@osmora.org> | 2025-09-26 22:54:12 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-09-26 22:54:12 -0400 |
commit | cb10d0bee9c62a096b1a3571d1d7e896e6864ecc (patch) | |
tree | 50dc1cabe858e33b4f521df8c187ae139ab8829e /src/lib | |
parent | b338e2a75550c035dabd04538fdc2843bce85870 (diff) |
libc: string: Add POSIX strnlen()
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/lib')
-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; +} |