summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2013-01-03 11:49:33 +0100
committerAllan McRae <allan@archlinux.org>2013-01-04 12:49:37 +0100
commit27d9c25ee2fd6a03fb1ec1afdfbe105048875bae (patch)
treec5f6739e5f72a153fb358b2702965c39352ef630 /lib
parent965e1de2174148a7a6c0860a7514d9bb1969bf03 (diff)
downloadpacman-27d9c25ee2fd6a03fb1ec1afdfbe105048875bae.tar.gz
pacman-27d9c25ee2fd6a03fb1ec1afdfbe105048875bae.tar.xz
Split common utility functions for libalpm and pacman
There is duplicated code in the util.c files in the libalpm and pacman source code. Split this into a separate file so that it can be shared via a symlink. This prevents code divergence between the two code bases. Also, move mbasename and mdirname from pacman/util.c into util-common.c in preparation for the following patch that uses them to add an extension to pacsave files. Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/Makefile.am1
l---------lib/libalpm/util-common.c1
l---------lib/libalpm/util-common.h1
-rw-r--r--lib/libalpm/util.c33
-rw-r--r--lib/libalpm/util.h5
5 files changed, 4 insertions, 37 deletions
diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index c935e2db..5cf66b91 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -53,6 +53,7 @@ libalpm_la_SOURCES = \
sync.h sync.c \
trans.h trans.c \
util.h util.c \
+ util-common.h util-common.c \
version.c
if !HAVE_LIBSSL
diff --git a/lib/libalpm/util-common.c b/lib/libalpm/util-common.c
new file mode 120000
index 00000000..cf965176
--- /dev/null
+++ b/lib/libalpm/util-common.c
@@ -0,0 +1 @@
+../../src/common/util-common.c \ No newline at end of file
diff --git a/lib/libalpm/util-common.h b/lib/libalpm/util-common.h
new file mode 120000
index 00000000..988c2acc
--- /dev/null
+++ b/lib/libalpm/util-common.h
@@ -0,0 +1 @@
+../../src/common/util-common.h \ No newline at end of file
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index c33e32a3..f6e66321 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -1256,37 +1256,4 @@ void _alpm_alloc_fail(size_t size)
fprintf(stderr, "alloc failure: could not allocate %zd bytes\n", size);
}
-#ifndef HAVE_STRNDUP
-/* A quick and dirty implementation derived from glibc */
-/** Determines the length of a fixed-size string.
- * @param s string to be measured
- * @param max maximum number of characters to search for the string end
- * @return length of s or max, whichever is smaller
- */
-static size_t strnlen(const char *s, size_t max)
-{
- register const char *p;
- for(p = s; *p && max--; ++p);
- return (p - s);
-}
-
-/** Copies a string.
- * Returned string needs to be freed
- * @param s string to be copied
- * @param n maximum number of characters to copy
- * @return pointer to the new string on success, NULL on error
- */
-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
-
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h
index 734e0e5f..3a6b14af 100644
--- a/lib/libalpm/util.h
+++ b/lib/libalpm/util.h
@@ -28,6 +28,7 @@
#include "alpm.h"
#include "package.h" /* alpm_pkg_t */
#include "handle.h" /* alpm_handle_t */
+#include "util-common.h"
#include <stdio.h>
#include <string.h>
@@ -142,10 +143,6 @@ int _alpm_fnmatch(const void *pattern, const void *string);
char *strsep(char **, const char *);
#endif
-#ifndef HAVE_STRNDUP
-char *strndup(const char *s, size_t n);
-#endif
-
/* check exported library symbols with: nm -C -D <lib> */
#define SYMEXPORT __attribute__((visibility("default")))
#define SYMHIDDEN __attribute__((visibility("internal")))