From 27d9c25ee2fd6a03fb1ec1afdfbe105048875bae Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Thu, 3 Jan 2013 20:49:33 +1000 Subject: 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 --- lib/libalpm/Makefile.am | 1 + lib/libalpm/util-common.c | 1 + lib/libalpm/util-common.h | 1 + lib/libalpm/util.c | 33 --------------------------------- lib/libalpm/util.h | 5 +---- 5 files changed, 4 insertions(+), 37 deletions(-) create mode 120000 lib/libalpm/util-common.c create mode 120000 lib/libalpm/util-common.h (limited to 'lib') 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 #include @@ -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 */ #define SYMEXPORT __attribute__((visibility("default"))) #define SYMHIDDEN __attribute__((visibility("internal"))) -- cgit v1.2.3-70-g09d2