Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9fb39ce909cd6ebae269649cab5060fe33d9a045
commit 9fb39ce909cd6ebae269649cab5060fe33d9a045 Author: Michel Hermier <[email protected]> Date: Sun May 12 17:44:55 2013 +0200 libflib: Add f_list_remove. Regroup item operations. diff --git a/lib/libflib/flist.c b/lib/libflib/flist.c index 7d7c263..4a9f92a 100644 --- a/lib/libflib/flist.c +++ b/lib/libflib/flist.c @@ -69,12 +69,7 @@ FList *f_list_free (FList *item, FVisitorFunc fn, void *user_data) { fn (item->data, user_data); } next = item->next; - if (item->prev != NULL) { - item->prev->next = next; - } - if (next != NULL) { - next->prev = item->prev; - } + f_list_remove (item); free (item); } return next; @@ -90,23 +85,6 @@ void f_list_set (FList *item, void *data) { } } -size_t f_list_count(FList *list) -{ - size_t count; - - for (count = 0; list != NULL; list = list->next, count++) - /* Do nothing */; - return count; -} - -FList *f_list_first (FList *list) { - if (list != NULL) { - for (; list->prev != NULL; list = list->prev) - /* Do nothing */; - } - return list; -} - void f_list_insert_after (FList *item, FList *list) { FList *last = f_list_last (list); @@ -137,6 +115,39 @@ void f_list_insert_before (FList *item, FList *list) { } } +/** + * Remove a list item from the list it belongs. + */ +void f_list_remove (FList *item) { + if (item != NULL) { + if (item->prev != NULL) { + item->prev->next = item->next; + } + if (item->next != NULL) { + item->next->prev = item->prev; + } + item->prev = NULL; + item->next = NULL; + } +} + +size_t f_list_count(FList *list) +{ + size_t count; + + for (count = 0; list != NULL; list = list->next, count++) + /* Do nothing */; + return count; +} + +FList *f_list_first (FList *list) { + if (list != NULL) { + for (; list->prev != NULL; list = list->prev) + /* Do nothing */; + } + return list; +} + FList *f_list_last (FList *list) { if (list != NULL) { for (; list->next != NULL; list = list->next) diff --git a/lib/libflib/flist.h b/lib/libflib/flist.h index 1be0336..5ef00de 100644 --- a/lib/libflib/flist.h +++ b/lib/libflib/flist.h @@ -53,11 +53,12 @@ FList *f_list_alloc (void *data); FList *f_list_free (FList *item, FVisitorFunc fn, void *user_data); void *f_list_get (FList *item); void f_list_set (FList *item, void *data); +void f_list_insert_after (FList *item, FList *list); +void f_list_insert_before (FList *item, FList *list); +void f_list_remove (FList *item); size_t f_list_count (FList *list); FList *f_list_first (FList *list); -void f_list_insert_after (FList *item, FList *list); -void f_list_insert_before (FList *item, FList *list); FList *f_list_last (FList *list); FList *f_list_next (FList *list); FList *f_list_next_filtered (FList *list, FDetectFunc dfn, void *user_data); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
