diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-01-29 02:20:22 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-01-29 02:20:22 -0500 |
commit | a16c2b178f6cd5591fd11f8497d2e570d81e9b06 (patch) | |
tree | 5fea37a10403a427843ad673977a972c3f7b185e /libsbutil | |
parent | sandbox: use $(LIBDL) rather than -ldl (diff) | |
download | sandbox-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.c | 16 |
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) { |