Browse Source

Define a strnlen replacement on platforms (win32) that lack it

Right now this is only needed for test_util_format_time_interval, so
define it as a static function.  We can move it into compat later if
we need to.
Nick Mathewson 9 years ago
parent
commit
21fe945ebd
2 changed files with 12 additions and 0 deletions
  1. 1 0
      configure.ac
  2. 11 0
      src/test/test_util.c

+ 1 - 0
configure.ac

@@ -365,6 +365,7 @@ AC_CHECK_FUNCS(
         socketpair \
         strlcat \
         strlcpy \
+	strnlen \
         strptime \
         strtok_r \
         strtoull \

+ 11 - 0
src/test/test_util.c

@@ -2072,6 +2072,17 @@ test_util_sscanf(void *arg)
 #define tt_char_op(a,op,b) tt_assert_op_type(a,op,b,char,"%c")
 #define tt_ci_char_op(a,op,b) tt_char_op(tolower(a),op,tolower(b))
 
+#ifndef HAVE_STRNLEN
+static size_t
+strnlen(const char *s, size_t len)
+{
+  const char *p = memchr(s, 0, len);
+  if (!p)
+    return len;
+  return p - s;
+}
+#endif
+
 static void
 test_util_format_time_interval(void *arg)
 {