Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=acca5341410febd26dd12ba6ad390116b18a330e

commit acca5341410febd26dd12ba6ad390116b18a330e
Author: James Buren <[email protected]>
Date:   Sat Aug 11 19:09:51 2012 -0500

add list_free

diff --git a/fwsetup.h b/fwsetup.h
index 7eae3bc..e7ded09 100644
--- a/fwsetup.h
+++ b/fwsetup.h
@@ -69,6 +69,8 @@ extern void eprintf(const char *s,...) 
__attribute__((format(printf,1,2)));;
extern void *list_append(void *list,size_t n);
extern void *list_find_start(void *list);
extern void *list_find_end(void *list);
+extern void list_free(void *list,void (*cb) (void *));
+extern void string_free(void *string);
extern int main(void);
extern struct module begin_module;
extern struct module partition_setup_module;
diff --git a/utility.c b/utility.c
index e9a5192..71ff796 100644
--- a/utility.c
+++ b/utility.c
@@ -88,7 +88,7 @@ extern void *list_find_start(void *list)

struct list *p = list;

-  while(p->prev)
+  while(p->prev != 0)
p = p->prev;

return p;
@@ -100,12 +100,41 @@ extern void *list_find_end(void *list)

struct list *p = list;

-  while(p->next)
+  while(p->next != 0)
p = p->next;

return p;
}

+extern void list_free(void *list,void (*cb) (void *))
+{
+  assert(list != 0);
+  assert(cb != 0);
+
+  struct list *a = list_find_start(list);
+  struct list *b = 0;
+
+  while(a != 0)
+  {
+    b = a->next;
+
+    cb(a);
+
+    free(a);
+
+    a = b;
+  }
+}
+
+extern void string_free(void *string)
+{
+  assert(string != 0);
+
+  struct string *p = string;
+
+  free(p->data);
+}
+
#ifdef NEWT
extern bool get_text_size(const char *text,int *width,int *height)
{
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to