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

Reply via email to