[pacman-dev] [PATCH 1/6] util: Use util-common for strndup in pacsort and pactree

Will Miles wmiles at sgl.com
Fri Feb 27 19:43:23 UTC 2015


This small refactor reduces the number of replications of the local
imeplementation of strndup.

Signed-off-by: Will Miles <wmiles at sgl.com>
---
 src/util/Makefile.am   |  4 ++--
 src/util/pacsort.c     | 23 +----------------------
 src/util/pactree.c     | 24 ++----------------------
 src/util/util-common.c |  1 +
 src/util/util-common.h |  1 +
 5 files changed, 7 insertions(+), 46 deletions(-)
 create mode 120000 src/util/util-common.c
 create mode 120000 src/util/util-common.h

diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 25c025b..936d7ff 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -20,10 +20,10 @@ AM_CFLAGS = -pedantic -D_GNU_SOURCE $(WARNING_CFLAGS)
 cleanupdelta_SOURCES = cleanupdelta.c
 cleanupdelta_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
 
-pacsort_SOURCES = pacsort.c
+pacsort_SOURCES = pacsort.c util-common.c
 pacsort_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
 
-pactree_SOURCES = pactree.c
+pactree_SOURCES = pactree.c util-common.c
 pactree_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la
 
 testpkg_SOURCES = testpkg.c
diff --git a/src/util/pacsort.c b/src/util/pacsort.c
index 02b9084..7081f5a 100644
--- a/src/util/pacsort.c
+++ b/src/util/pacsort.c
@@ -25,6 +25,7 @@
 #include <string.h>
 
 #include <alpm.h>
+#include "util-common.h"
 
 #define DELIM ' '
 
@@ -69,28 +70,6 @@ static struct options_t {
 	char delim;
 } opts;
 
-#ifndef HAVE_STRNDUP
-/* A quick and dirty implementation derived from glibc */
-static size_t strnlen(const char *s, size_t max)
-{
-	register const char *p;
-	for(p = s; *p && max--; ++p);
-	return (p - s);
-}
-
-char *strndup(const char *s, size_t n)
-{
-	size_t len = strnlen(s, n);
-	char *new = (char *) malloc(len + 1);
-
-	if(new == NULL)
-		return NULL;
-
-	new[len] = '\0';
-	return (char *)memcpy(new, s, len);
-}
-#endif
-
 static struct buffer_t *buffer_new(size_t initial_size)
 {
 	struct buffer_t *buf;
diff --git a/src/util/pactree.c b/src/util/pactree.c
index 67f456f..11ad7ca 100644
--- a/src/util/pactree.c
+++ b/src/util/pactree.c
@@ -29,6 +29,8 @@
 #include <langinfo.h>
 #endif
 
+#include "util-common.h"
+
 #define LINE_MAX     512
 
 typedef struct tdepth {
@@ -121,28 +123,6 @@ int searchsyncs = 0;
 const char *dbpath = DBPATH;
 const char *configfile = CONFFILE;
 
-#ifndef HAVE_STRNDUP
-/* A quick and dirty implementation derived from glibc */
-static size_t strnlen(const char *s, size_t max)
-{
-	register const char *p;
-	for(p = s; *p && max--; ++p);
-	return (p - s);
-}
-
-char *strndup(const char *s, size_t n)
-{
-	size_t len = strnlen(s, n);
-	char *new = (char *) malloc(len + 1);
-
-	if(new == NULL)
-		return NULL;
-
-	new[len] = '\0';
-	return (char *)memcpy(new, s, len);
-}
-#endif
-
 static size_t strtrim(char *str)
 {
 	char *end, *pch = str;
diff --git a/src/util/util-common.c b/src/util/util-common.c
new file mode 120000
index 0000000..a2f6c50
--- /dev/null
+++ b/src/util/util-common.c
@@ -0,0 +1 @@
+../common/util-common.c
\ No newline at end of file
diff --git a/src/util/util-common.h b/src/util/util-common.h
new file mode 120000
index 0000000..3f0b982
--- /dev/null
+++ b/src/util/util-common.h
@@ -0,0 +1 @@
+../common/util-common.h
\ No newline at end of file
-- 
2.3.0


More information about the pacman-dev mailing list