From 8238905c983e0725592e14513330a150155572da Mon Sep 17 00:00:00 2001 From: rocky Date: Mon, 16 Jan 2012 20:14:41 -0500 Subject: [PATCH] Add replacement for strndup(). MinGW doesn't have it. From Pete Batard again. --- configure.ac | 4 ++-- lib/driver/abs_path.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 330c0281..b2fba59b 100644 --- a/configure.ac +++ b/configure.ac @@ -499,8 +499,8 @@ AC_DEFINE_UNQUOTED(LIBCDIO_SOURCE_PATH, "$LIBCDIO_SOURCE_PATH", AC_SUBST(LIBCDIO_SOURCE_PATH) AC_CHECK_FUNCS( [bzero chdir drand48 ftruncate geteuid getgid \ - getuid getpwuid gettimeofday lstat memcpy memset \ - rand seteuid setegid snprintf setenv unsetenv tzset \ + getuid getpwuid gettimeofday lstat memcpy memset rand \ + seteuid setegid snprintf setenv strndup unsetenv tzset \ sleep usleep vsnprintf readlink realpath gmtime_r localtime_r] ) # check for timegm() support diff --git a/lib/driver/abs_path.c b/lib/driver/abs_path.c index 4588e930..9b01489b 100644 --- a/lib/driver/abs_path.c +++ b/lib/driver/abs_path.c @@ -59,6 +59,21 @@ # define CharNext(p) ((p) + 1) #endif +#ifndef HAVE_STRNDUP +static inline char *strndup(const char *s, size_t n) +{ + char *result; + size_t len = strlen (s); + if (n < len) + len = n; + result = (char *) malloc (len + 1); + if (!result) + return 0; + result[len] = '\0'; + return (char *) strncpy (result, s, len); +} +#endif /*HAVE_STRNDUP*/ + static char * strrdirsep(const char *path) {