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

Reply via email to