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

Allan McRae allan at archlinux.org
Fri Feb 27 19:50:56 UTC 2015


On 27/02/15 08:04, Will Miles wrote:
> This small refactor reduces the number of replications of the local
> imeplementation of strndup.
> 

Typo ^

Fixed and pulled to my patchqueue.

> 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
> 


More information about the pacman-dev mailing list