summaryrefslogtreecommitdiff
path: root/src/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc')
-rw-r--r--src/lib/libc/include/string.h9
-rw-r--r--src/lib/libc/src/string/strlen.c14
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;
+}