Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=eda8c09a3f0b644d14807b6e22c2caf9876859e1

commit eda8c09a3f0b644d14807b6e22c2caf9876859e1
Author: Michel Hermier <[email protected]>
Date:   Mon Aug 11 08:33:34 2014 +0200

libpacman: Extra list work to remove warning and prepare list implementation 
change.

diff --git a/lib/libpacman/util/fdispatchlogger.c 
b/lib/libpacman/util/fdispatchlogger.c
index db75fc2..49d1d66 100644
--- a/lib/libpacman/util/fdispatchlogger.c
+++ b/lib/libpacman/util/fdispatchlogger.c
@@ -38,8 +38,8 @@ void f_dispatchlogger_log(unsigned char flag, const char 
*message, void *data)
FPtrListItem *end, *it;

end = f_ptrlist_end(list);
-       for (it = f_ptrlist_first(list); it != end; it = it->next) {
-               f_logger_logs((FLogger *)it->data, flag, message);
+       for (it = f_ptrlist_first(list); it != end; it = 
f_ptrlistitem_next(it)) {
+               f_logger_logs((FLogger *)f_ptrlistitem_data(it), flag, message);
}
}

diff --git a/lib/libpacman/util/fptrlist.c b/lib/libpacman/util/fptrlist.c
index 93c2fcf..1ebc694 100644
--- a/lib/libpacman/util/fptrlist.c
+++ b/lib/libpacman/util/fptrlist.c
@@ -156,15 +156,15 @@ int f_ptrlist_append(FPtrList *self, void *data)

int f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
{
-       FPtrList *next;
+       FPtrListItem *end = f_ptrlist_end(list), *it = f_ptrlist_first(list), 
*next;

-       while(list != NULL) {
-               next = list->next;
+       while(it != end) {
+               next = f_ptrlistitem_next(it);
if(visitor != NULL) {
-                       f_visit(list->data, visitor);
+                       f_visit(f_ptrlistitem_data(it), visitor);
}
-               free(list);
-               list = next;
+               free(it);
+               it = next;
}
return 0;
}
@@ -177,11 +177,16 @@ int f_ptrlist_contains_ptr(const FPtrList *list, const 
void *ptr)
FPtrList *f_ptrlist_filter(const FPtrList *list, const FMatcher *matcher)
{
FPtrList *retlist = NULL;
+       const FPtrListItem *end = f_ptrlist_end_const(list), *it = 
f_ptrlist_first_const(list);

-       for(; list != NULL; list = list->next) {
-               if(f_match(list->data, matcher)) {
-                       retlist = f_ptrlist_append(retlist, list->data);
+       for(; it != end; it = f_ptrlistitem_next(it)) {
+               void *data = f_ptrlistitem_data(it);
+
+               if(f_match(data, matcher)) {
+                       retlist = f_ptrlist_append(retlist, data);
}
}
return retlist;
}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/fptrlist.h b/lib/libpacman/util/fptrlist.h
index 634da63..43afa33 100644
--- a/lib/libpacman/util/fptrlist.h
+++ b/lib/libpacman/util/fptrlist.h
@@ -66,17 +66,17 @@ FPtrList *f_ptrlist_append(FPtrList *list, void *data);
int f_ptrlist_append(FPtrList *list, void *data);
#endif
int f_ptrlist_clear(FPtrList *list, FVisitor *visitor);
-#define f_ptrlist_contains f_list_contains
+#define f_ptrlist_contains(self, comparator, comparator_data) 
f_list_contains(f_ptrlist_as_FList_const(self), 
(FListItemComparatorFunc)comparator, comparator_data)
int f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr);
#define f_ptrlist_count f_list_count
#define f_ptrlist_empty f_list_empty
#define f_ptrlist_end(list) ((FPtrListItem *)f_ptrlist_end_const(list))
#define f_ptrlist_end_const(list) ((const FPtrListItem 
*)f_list_end_const(f_ptrlist_as_FList_const(list)))
FPtrList *f_ptrlist_filter(const FPtrList *list, const FMatcher *matcher);
-#define f_ptrlist_first(self) ((FPtrListItem *)f_list_first(self))
-#define f_ptrlist_first_const(self) ((const FPtrListItem 
*)f_list_first_const(self))
-#define f_ptrlist_last(self) ((FPtrListItem *)f_list_last(self))
-#define f_ptrlist_last_const(self) ((const FPtrListItem 
*)f_list_last_const(self))
+#define f_ptrlist_first(self) ((FPtrListItem *)f_ptrlist_first_const(self))
+#define f_ptrlist_first_const(self) ((const FPtrListItem 
*)f_list_first_const(f_ptrlist_as_FList_const(self)))
+#define f_ptrlist_last(self) ((FPtrListItem *)f_ptrlist_last_const(self))
+#define f_ptrlist_last_const(self) ((const FPtrListItem 
*)f_list_last_const(f_ptrlist_as_FList_const(self)))

#ifdef __cplusplus
}
diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index ef8fa49..ffd2b4c 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -34,17 +34,15 @@
/* Add items to a list in sorted order. Use the given comparison function to
* determine order.
*/
-pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void *data, _pacman_fn_cmp 
fn)
+FPtrList *_pacman_list_add_sorted(FPtrList *list, void *data, _pacman_fn_cmp 
fn)
{
-       pmlist_t *add;
-       pmlist_t *prev = NULL;
-       pmlist_t *iter = list;
+       FPtrListItem *add, *end = f_ptrlist_end(list), *prev = NULL, *iter = 
f_ptrlist_first(list);

add = _pacman_list_new();
add->data = data;

/* Find insertion point. */
-       while(iter) {
+       while(iter != end) {
if(fn(add->data, iter->data) <= 0) break;
prev = iter;
iter = iter->next;
@@ -73,11 +71,11 @@ pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void 
*data, _pacman_fn_cmp fn)
* Otherwise, it is set to NULL.
* Return the new list (without the removed element).
*/
-pmlist_t *_pacman_list_remove(pmlist_t *haystack, void *needle, _pacman_fn_cmp 
fn, void **data)
+FPtrList *_pacman_list_remove(FPtrList *haystack, void *needle, _pacman_fn_cmp 
fn, void **data)
{
-       pmlist_t *i = haystack;
+       FPtrListItem *end = f_ptrlist_end(haystack), *i = 
f_ptrlist_first(haystack);

-       if(data) {
+       if(data != end) {
*data = NULL;
}

@@ -118,16 +116,16 @@ pmlist_t *_pacman_list_remove(pmlist_t *haystack, void 
*needle, _pacman_fn_cmp f
*
* The caller is responsible for freeing the old list
*/
-pmlist_t *_pacman_list_reverse(pmlist_t *list)
+FPtrList *_pacman_list_reverse(FPtrList *list)
{
/* simple but functional -- we just build a new list, starting
* with the old list's tail
*/
-       pmlist_t *newlist = NULL;
-       pmlist_t *lp;
+       FPtrList *newlist = f_ptrlist_new();
+       FPtrListItem *it;

-       for(lp = f_ptrlist_last(list); lp; lp = lp->prev) {
-               newlist = _pacman_list_add(newlist, lp->data);
+       for(it = f_ptrlist_last(list); it; it = f_ptrlistitem_previous(it)) {
+               newlist = _pacman_list_add(newlist, it->data);
}

return(newlist);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 795878f..ffd918b 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -46,9 +46,9 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);
#define _pacman_list_empty f_ptrlist_empty
#define _pacman_list_last f_ptrlist_last

-pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void *data, _pacman_fn_cmp 
fn);
-pmlist_t *_pacman_list_remove(pmlist_t *haystack, void *needle, _pacman_fn_cmp 
fn, void **data);
-pmlist_t *_pacman_list_reverse(pmlist_t *list);
+FPtrList *_pacman_list_add_sorted(FPtrList *list, void *data, _pacman_fn_cmp 
fn);
+FPtrList *_pacman_list_remove(FPtrList *haystack, void *needle, _pacman_fn_cmp 
fn, void **data);
+FPtrList *_pacman_list_reverse(FPtrList *list);

#ifdef __cplusplus
}
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to