The following commit has been merged in the master branch:
commit 514b67de00c11709b8103d80b7e2cd18e786c69f
Author: Guillem Jover <[email protected]>
Date: Fri Nov 11 05:10:20 2011 +0100
libcompat: Add new strndup()
diff --git a/configure.ac b/configure.ac
index 6dd5529..7edcd26 100644
--- a/configure.ac
+++ b/configure.ac
@@ -86,7 +86,7 @@ DPKG_CHECK_DECL([WCOREDUMP], [sys/wait.h])
DPKG_CHECK_DECL([TIOCNOTTY], [sys/ioctl.h])
DPKG_CHECK_PROGNAME
DPKG_CHECK_COMPAT_FUNCS([getopt getopt_long obstack_free \
- strnlen strerror strsignal asprintf \
+ strnlen strndup strerror strsignal asprintf \
scandir alphasort unsetenv])
AC_CHECK_DECLS([strnlen], [[#include <string.h>]])
AC_CHECK_FUNCS([memcpy lchown],
diff --git a/lib/compat/Makefile.am b/lib/compat/Makefile.am
index cb3224a..33da1bd 100644
--- a/lib/compat/Makefile.am
+++ b/lib/compat/Makefile.am
@@ -28,6 +28,10 @@ if !HAVE_STRNLEN
libcompat_a_SOURCES += strnlen.c strnlen.h
endif
+if !HAVE_STRNDUP
+libcompat_a_SOURCES += strndup.c
+endif
+
if !HAVE_STRERROR
libcompat_a_SOURCES += strerror.c
endif
diff --git a/lib/compat/compat.h b/lib/compat/compat.h
index daf9cc7..4086bdd 100644
--- a/lib/compat/compat.h
+++ b/lib/compat/compat.h
@@ -64,6 +64,13 @@ int asprintf(char *str, char const *fmt, ...);
int vasprintf(char *str, const char *fmt, va_list args);
#endif
+#ifndef HAVE_STRNDUP
+#include <stddef.h>
+
+#undef strndup
+char *strndup(const char *s, size_t n);
+#endif
+
#ifndef HAVE_STRERROR
const char *strerror(int);
#endif
diff --git a/lib/compat/unsetenv.c b/lib/compat/strndup.c
similarity index 71%
copy from lib/compat/unsetenv.c
copy to lib/compat/strndup.c
index 7551629..2159a46 100644
--- a/lib/compat/unsetenv.c
+++ b/lib/compat/strndup.c
@@ -1,7 +1,7 @@
/*
* libcompat - system compatibility library
*
- * Copyright © 1995 Ian Jackson <[email protected]>
+ * Copyright © 2011 Guillem Jover <[email protected]>
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,22 +18,28 @@
*/
#include <config.h>
+#include <compat.h>
#include <string.h>
#include <stdlib.h>
-#ifndef HAVE_UNSETENV
-int
-unsetenv(const char *p)
+#ifndef HAVE_STRNDUP
+#undef strndup
+
+char *
+strndup(const char *s, size_t n)
{
- char *q;
+ size_t len;
+ char *str;
+
+ len = strnlen(s, n);
+ str = malloc(len + 1);
+ if (str == NULL)
+ return NULL;
- q = malloc(strlen(p) + 3);
- if (!q)
- return -1;
+ memcpy(str, s, len);
+ str[len] = '\0';
- strcpy(q, p);
- strcat(q, "=");
- return putenv(q);
+ return str;
}
#endif
--
dpkg's main repository
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]