windows: Provide a strndup(3) replacement
authorMartin Willi <martin@revosec.ch>
Fri, 25 Oct 2013 14:41:48 +0000 (16:41 +0200)
committerMartin Willi <martin@revosec.ch>
Wed, 4 Jun 2014 13:53:02 +0000 (15:53 +0200)
src/libstrongswan/utils/windows.c
src/libstrongswan/utils/windows.h

index feefcd4..48a70b6 100644 (file)
@@ -49,6 +49,21 @@ int usleep(useconds_t usec)
        return 0;
 }
 
        return 0;
 }
 
+/**
+ * See header.
+ */
+char* strndup(const char *s, size_t n)
+{
+       char *dst;
+
+       n = min(strnlen(s, n), n);
+       dst = malloc(n + 1);
+       memcpy(dst, s, n);
+       dst[n] = '\0';
+
+       return dst;
+}
+
 /*
  * See header.
  */
 /*
  * See header.
  */
index e070a79..4e1e6b6 100644 (file)
@@ -106,6 +106,11 @@ static inline char* strdup_windows(const char *src)
 }
 
 /**
 }
 
 /**
+ * strndup(3)
+ */
+char* strndup(const char *s, size_t n);
+
+/**
  * Provided via ws2_32
  */
 const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
  * Provided via ws2_32
  */
 const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);