* configure.ac (AC_CHECK_FUNCS): Add strndup.
* defs.h (xstrndup): New prototype.
* xmalloc.c (xstrndup): New function.
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
signalfd
stpcpy
strerror
+ strndup
strsignal
sync_file_range
utimensat
void *xreallocarray(void *ptr, size_t nmemb, size_t size)
ATTRIBUTE_ALLOC_SIZE((2, 3));
char *xstrdup(const char *str) ATTRIBUTE_MALLOC;
+char *xstrndup(const char *str, size_t n) ATTRIBUTE_MALLOC;
extern int read_int_from_file(const char *, int *);
return p;
}
+
+char *xstrndup(const char *str, size_t n)
+{
+ char *p;
+
+#ifdef HAVE_STRNDUP
+ p = strndup(str, n);
+#else
+ p = xmalloc(n + 1);
+#endif
+
+ if (!p)
+ die_out_of_memory();
+
+#ifndef HAVE_STRNDUP
+ strncpy(p, str, n);
+ p[n] = '\0';
+#endif
+
+ return p;
+}