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 --- src/pacman/Makefile.am | 3 ++- src/pacman/util-common.c | 1 + src/pacman/util-common.h | 1 + src/pacman/util.c | 50 ------------------------------------------------ src/pacman/util.h | 8 ++------ 5 files changed, 6 insertions(+), 57 deletions(-) create mode 120000 src/pacman/util-common.c create mode 120000 src/pacman/util-common.h (limited to 'src/pacman') diff --git a/src/pacman/Makefile.am b/src/pacman/Makefile.am index 311f7c5b..ed515739 100644 --- a/src/pacman/Makefile.am +++ b/src/pacman/Makefile.am @@ -38,7 +38,8 @@ pacman_SOURCES = \ sync.c \ callback.h callback.c \ upgrade.c \ - util.h util.c + util.h util.c \ + util-common.h util-common.c LDADD = $(LTLIBINTL) $(top_builddir)/lib/libalpm/.libs/libalpm.la diff --git a/src/pacman/util-common.c b/src/pacman/util-common.c new file mode 120000 index 00000000..a2f6c508 --- /dev/null +++ b/src/pacman/util-common.c @@ -0,0 +1 @@ +../common/util-common.c \ No newline at end of file diff --git a/src/pacman/util-common.h b/src/pacman/util-common.h new file mode 120000 index 00000000..3f0b9826 --- /dev/null +++ b/src/pacman/util-common.h @@ -0,0 +1 @@ +../common/util-common.h \ No newline at end of file diff --git a/src/pacman/util.c b/src/pacman/util.c index 81eec67d..014be1fc 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -210,56 +210,6 @@ int rmrf(const char *path) } } -/** Parse the basename of a program from a path. -* @param path path to parse basename from -* -* @return everything following the final '/' -*/ -const char *mbasename(const char *path) -{ - const char *last = strrchr(path, '/'); - if(last) { - return last + 1; - } - return path; -} - -/** Parse the dirname of a program from a path. -* The path returned should be freed. -* @param path path to parse dirname from -* -* @return everything preceding the final '/' -*/ -char *mdirname(const char *path) -{ - char *ret, *last; - - /* null or empty path */ - if(path == NULL || path == '\0') { - return strdup("."); - } - - if((ret = strdup(path)) == NULL) { - return NULL; - } - - last = strrchr(ret, '/'); - - if(last != NULL) { - /* we found a '/', so terminate our string */ - if(last == ret) { - /* return "/" for root */ - last++; - } - *last = '\0'; - return ret; - } - - /* no slash found */ - free(ret); - return strdup("."); -} - /* output a string, but wrap words properly with a specified indentation */ void indentprint(const char *str, unsigned short indent, unsigned short cols) diff --git a/src/pacman/util.h b/src/pacman/util.h index 0c58a470..c38291a9 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -26,6 +26,8 @@ #include +#include "util-common.h" + #ifdef ENABLE_NLS #include /* here so it doesn't need to be included elsewhere */ /* define _() as shortcut for gettext() */ @@ -49,8 +51,6 @@ int needs_root(void); int check_syncdbs(size_t need_repos, int check_valid); unsigned short getcols(int fd); int rmrf(const char *path); -const char *mbasename(const char *path); -char *mdirname(const char *path); void indentprint(const char *str, unsigned short indent, unsigned short cols); size_t strtrim(char *str); char *strreplace(const char *str, const char *needle, const char *replace); @@ -80,10 +80,6 @@ int pm_asprintf(char **string, const char *format, ...); int pm_vfprintf(FILE *stream, alpm_loglevel_t level, const char *format, va_list args) __attribute__((format(printf,3,0))); int pm_vasprintf(char **string, alpm_loglevel_t level, const char *format, va_list args) __attribute__((format(printf,3,0))); -#ifndef HAVE_STRNDUP -char *strndup(const char *s, size_t n); -#endif - #endif /* _PM_UTIL_H */ /* vim: set ts=2 sw=2 noet: */ -- cgit v1.2.3-70-g09d2