diff options
author | Martin Willi <martin@revosec.ch> | 2013-10-25 16:41:48 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-06-04 15:53:02 +0200 |
commit | f3c809e615f0e8eb476efcc85a3c8cf2cbe3f7c3 (patch) | |
tree | 9a0353c7509eec50e5677b9629576cabdf13c388 | |
parent | 8f3a3656d371d067e71908e78755bb4a3dd2b057 (diff) | |
download | strongswan-f3c809e615f0e8eb476efcc85a3c8cf2cbe3f7c3.tar.bz2 strongswan-f3c809e615f0e8eb476efcc85a3c8cf2cbe3f7c3.tar.xz |
windows: Provide a strndup(3) replacement
-rw-r--r-- | src/libstrongswan/utils/windows.c | 15 | ||||
-rw-r--r-- | src/libstrongswan/utils/windows.h | 5 |
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); |