aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/core/strs.c14
-rw-r--r--src/core/strs.h1
3 files changed, 16 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 87320843..06009b28 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -242,6 +242,7 @@ endif ()
nng_check_sym (strdup string.h NNG_HAVE_STRDUP)
nng_check_sym (strlcat string.h NNG_HAVE_STRLCAT)
nng_check_sym (strlcpy string.h NNG_HAVE_STRLCPY)
+nng_check_sym (strnlen string.h NNG_HAVE_STRNLEN)
add_subdirectory (src)
diff --git a/src/core/strs.c b/src/core/strs.c
index 7f236236..08338499 100644
--- a/src/core/strs.c
+++ b/src/core/strs.c
@@ -96,3 +96,17 @@ nni_strlcat(char *dst, const char *src, size_t len)
return (n - 1);
#endif
}
+
+size_t
+nni_strnlen(const char *s, size_t len)
+{
+#ifdef NNG_HAVE_STRNLEN
+ return (strnlen(s, len));
+#else
+ size_t n;
+ for (n = 0; (n < len) && (*s); n++) {
+ s++;
+ }
+ return (n);
+#endif
+}
diff --git a/src/core/strs.h b/src/core/strs.h
index 741504cd..42ec4997 100644
--- a/src/core/strs.h
+++ b/src/core/strs.h
@@ -17,5 +17,6 @@ extern char * nni_strdup(const char *);
extern void nni_strfree(char *);
extern size_t nni_strlcpy(char *, const char *, size_t);
extern size_t nni_strlcat(char *, const char *, size_t);
+extern size_t nni_strnlen(const char *, size_t);
#endif // CORE_STRS_H