aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-01-29 02:20:22 -0500
committerMike Frysinger <vapier@gentoo.org>2009-01-29 02:20:22 -0500
commita16c2b178f6cd5591fd11f8497d2e570d81e9b06 (patch)
tree5fea37a10403a427843ad673977a972c3f7b185e /libsbutil
parentsandbox: use $(LIBDL) rather than -ldl (diff)
downloadsandbox-a16c2b178f6cd5591fd11f8497d2e570d81e9b06.tar.gz
sandbox-a16c2b178f6cd5591fd11f8497d2e570d81e9b06.tar.bz2
sandbox-a16c2b178f6cd5591fd11f8497d2e570d81e9b06.zip
libsbutil: add fallback strndup() implementation
Not all systems provide strndup() in their C library, and getting rid of the last consumer is a bit painful atm, so just provide a simple replacement. URL: http://bugs.gentoo.org/256741 Signed-off-by: Mike Frysinger <vapier@gentoo.org> Reported-by: Javier Villavicencio <the_paya@gentoo.org>
Diffstat (limited to 'libsbutil')
-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)
{