aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libstrongswan/utils/windows.c15
-rw-r--r--src/libstrongswan/utils/windows.h5
2 files changed, 20 insertions, 0 deletions
diff --git a/src/libstrongswan/utils/windows.c b/src/libstrongswan/utils/windows.c
index feefcd497..48a70b6c2 100644
--- a/src/libstrongswan/utils/windows.c
+++ b/src/libstrongswan/utils/windows.c
@@ -49,6 +49,21 @@ int usleep(useconds_t usec)
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.
*/
diff --git a/src/libstrongswan/utils/windows.h b/src/libstrongswan/utils/windows.h
index e070a79a2..4e1e6b6c2 100644
--- a/src/libstrongswan/utils/windows.h
+++ b/src/libstrongswan/utils/windows.h
@@ -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);