summaryrefslogtreecommitdiff
path: root/common/compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/compat.c')
-rw-r--r--common/compat.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/common/compat.c b/common/compat.c
index af28e1d..ff8ee08 100644
--- a/common/compat.c
+++ b/common/compat.c
@@ -424,6 +424,28 @@ memdup (const void *data,
#endif /* HAVE_MEMDUP */
+#ifndef HAVE_STRNDUP
+
+char *
+strndup (const char *data,
+ size_t length)
+{
+ char *ret;
+ size_t len;
+
+ len = strlen (data);
+ if (length > len)
+ length = len;
+
+ ret = memdup (data, length + 1);
+ if (ret != NULL)
+ ret[length] = 0;
+
+ return ret;
+}
+
+#endif /* HAVE_STRDUP */
+
#ifndef HAVE_STRCONCAT
#include <stdarg.h>