Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f8b764f8b049f846b04dc43fe126b0ccb06ecbff
commit f8b764f8b049f846b04dc43fe126b0ccb06ecbff Author: Michel Hermier <herm...@frugalware.org> Date: Sat Nov 16 23:53:07 2013 +0100 libpacman: Rename _pacman_list_free to f_ptrlist_free. diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c index 75efa1f..4052c48 100644 --- a/lib/libpacman/util/list.c +++ b/lib/libpacman/util/list.c @@ -44,20 +44,6 @@ pmlist_t *_pacman_list_new() return(list); } -void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn) -{ - pmlist_t *ptr, *it = list; - - while(it) { - ptr = it->next; - if(fn) { - fn(it->data); - } - free(it); - it = ptr; - } -} - int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void *compar_data) { for(; list != NULL; list = list->next) { @@ -260,4 +246,23 @@ pmlist_t *_pacman_list_reverse(pmlist_t *list) return(newlist); } +void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data) +{ + f_ptrlist_clear(list, visitor, visitor_data); +} + +void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data) +{ + pmlist_t *next; + + while(list != NULL) { + next = list->next; + if(visitor != NULL) { + visitor(list->data, visitor_data); + } + free(list); + list = next; + } +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h index 620110b..e729590 100644 --- a/lib/libpacman/util/list.h +++ b/lib/libpacman/util/list.h @@ -23,6 +23,8 @@ #include "pacman.h" +typedef int (*FVisitorFunc)(void *ptr, void *visitor_data); + typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data); typedef int (*flist_visitor_t)(pmlist_t *item, void *visitor_data); @@ -34,16 +36,14 @@ struct __pmlist_t { struct __pmlist_t *last; /* Quick access to last item in list */ }; -#define _FREELIST(p, f) do { if(p) { _pacman_list_free(p, f); p = NULL; } } while(0) +#define _FREELIST(p, f) do { if(p) { f_ptrlist_free(p, (FVisitorFunc)f, NULL); p = NULL; } } while(0) #define FREELIST(p) _FREELIST(p, free) #define FREELISTPTR(p) _FREELIST(p, NULL) -typedef void (*_pacman_fn_free)(void *); /* Sort comparison callback function declaration */ typedef int (*_pacman_fn_cmp)(const void *, const void *); pmlist_t *_pacman_list_new(void); -void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn); int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void *compar_data); int _pacman_list_count(const pmlist_t *list); @@ -57,6 +57,10 @@ pmlist_t *_pacman_list_remove(pmlist_t *haystack, void *needle, _pacman_fn_cmp f pmlist_t *_pacman_list_last(pmlist_t *list); pmlist_t *_pacman_list_reverse(pmlist_t *list); +void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data); + +void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data); + #endif /* _PACMAN_LIST_H */ /* vim: set ts=2 sw=2 noet: */ _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git