aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libsbutil/sb_memory.c')
-rw-r--r--libsbutil/sb_memory.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libsbutil/sb_memory.c b/libsbutil/sb_memory.c
index 23d74af..40a4762 100644
--- a/libsbutil/sb_memory.c
+++ b/libsbutil/sb_memory.c
@@ -73,6 +73,22 @@ __xstrdup(const char *str, const char *file, const char *func, size_t line)
return ret;
}
+#ifndef HAVE_STRNDUP
+static inline char *sb_strndup(const char *str, size_t n)
+{
+ size_t r;
+ for (r = 0; r < n; ++r)
+ if (!str[r])
+ break;
+
+ char *ret = xmalloc(r + 1);
+ memcpy(ret, str, r);
+ ret[r] = '\0';
+ return ret;
+}
+# define strndup sb_strndup
+#endif
+
char *
__xstrndup(const char *str, size_t size, const char *file, const char *func, size_t line)
{