scanner: Add configure check for strndup
authorJoshua Watt <JPEWhacker@gmail.com>
Sat, 26 Oct 2019 02:03:23 +0000 (21:03 -0500)
committerJoshua Watt <JPEWhacker@gmail.com>
Tue, 5 Nov 2019 14:59:58 +0000 (08:59 -0600)
Some platforms may not have strndup() (e.g. MinGW), so provide a
equivalent implementation if it's not found.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
configure.ac
src/scanner.c

index c332107..eb85977 100644 (file)
@@ -63,7 +63,7 @@ fi
 AC_SUBST(GCC_CFLAGS)
 
 AC_CHECK_HEADERS([sys/prctl.h])
-AC_CHECK_FUNCS([accept4 mkostemp posix_fallocate prctl memfd_create])
+AC_CHECK_FUNCS([accept4 mkostemp posix_fallocate prctl memfd_create strndup])
 
 # *BSD don't have libdl, but they have its functions in libc
 WESTON_SEARCH_LIBS([DL], [dl], [dlsym])
index 7ed1ba1..2b3adbd 100644 (file)
@@ -975,6 +975,17 @@ verify_arguments(struct parse_context *ctx,
 
 }
 
+#ifndef HAVE_STRNDUP
+char *
+strndup(const char *s, size_t size)
+{
+       char *r = malloc(size + 1);
+       strncpy(r, s, size);
+       r[size] = '\0';
+       return r;
+}
+#endif
+
 static void
 end_element(void *data, const XML_Char *name)
 {