diff options
author | Mike Frysinger <vapier@gentoo.org> | 2011-09-27 18:37:22 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-09-27 18:37:22 +0000 |
commit | 0e1c701519303d513ec57c2f7cceb49f9fcb5d55 (patch) | |
tree | 60f47bbbdf98d19b8d9281b16c1ebcfff50ce454 /xfuncs.c | |
parent | constify the return of scanelf_file_{sections,sym} (diff) | |
download | pax-utils-0e1c701519303d513ec57c2f7cceb49f9fcb5d55.tar.gz pax-utils-0e1c701519303d513ec57c2f7cceb49f9fcb5d55.tar.bz2 pax-utils-0e1c701519303d513ec57c2f7cceb49f9fcb5d55.zip |
allow people to search for multiple libraries (-N) or data sections (-k)
Diffstat (limited to 'xfuncs.c')
-rw-r--r-- | xfuncs.c | 42 |
1 files changed, 41 insertions, 1 deletions
@@ -1,7 +1,7 @@ /* * Copyright 2003-2007 Gentoo Foundation * Distributed under the terms of the GNU General Public License v2 - * $Header: /var/cvsroot/gentoo-projects/pax-utils/xfuncs.c,v 1.9 2010/02/13 23:27:12 vapier Exp $ + * $Header: /var/cvsroot/gentoo-projects/pax-utils/xfuncs.c,v 1.10 2011/09/27 18:37:22 vapier Exp $ * * Copyright 2003-2007 Ned Ludd - <solar@gentoo.org> * Copyright 2004-2007 Mike Frysinger - <vapier@gentoo.org> @@ -64,3 +64,43 @@ void xchrcat(char **dst, const char append, size_t *curr_len) my_app[1] = '\0'; xstrcat(dst, my_app, curr_len); } + +void *xmemdup(const void *src, size_t n) +{ + void *ret = xmalloc(n); + memcpy(ret, src, n); + return ret; +} + +void xarraypush(array_t *arr, const void *ele, size_t ele_len) +{ + size_t n = arr->num++; + arr->eles = xrealloc_array(arr->eles, arr->num, sizeof(ele)); + arr->eles[n] = xmemdup(ele, ele_len); +} + +void xarrayfree(array_t *arr) +{ + array_t blank = array_init_decl; + size_t n; + + for (n = 0; n < arr->num; ++n) + free(arr->eles[n]); + free(arr->eles); + + *arr = blank; +} + +char *array_flatten_str(array_t *array) +{ + size_t n, len = 0; + char *str, *ret = NULL; + + array_for_each(array, n, str) { + if (ret) + xchrcat(&ret, ',', &len); + xstrcat(&ret, str, &len); + } + + return ret; +} |