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
