# HG changeset patch # User Rob Landley # Date 1400673771 18000 # Node ID a87b61ed18ff839d31dbaa26f6afc4dc94f848c6 # Parent 314b1486d502e2861a1936fcb29be82d655926f1 Make fsck.c use common list free function, collate cleanup code and move inline. diff -r 314b1486d502 -r a87b61ed18ff toys/pending/fsck.c --- a/toys/pending/fsck.c Wed May 21 07:01:16 2014 -0500 +++ b/toys/pending/fsck.c Wed May 21 07:02:51 2014 -0500 @@ -351,30 +351,6 @@ TT.sig_num = sig; } -static void list_free(void *node) //for satisfying Valgrind -{ - free(((struct double_list*)node)->data); - free(node); -} - -static void free_all(void) -{ - struct f_sys_info *finfo, *temp; - - llist_traverse(TT.devices, list_free); - free(TT.arr_type); - free(TT.arr_flag); - for (finfo = filesys_info; finfo;) { - temp = finfo->next; - free(finfo->device); - free(finfo->mountpt); - free(finfo->type); - free(finfo->opts); - free(finfo); - finfo = temp; - } -} - void fsck_main(void) { struct mntent mt; @@ -399,11 +375,11 @@ if (!(toys.optflags & FLAG_T)) xprintf("fsck ----- (Toybox)\n"); - if ((tmp = getenv("FSCK_MAX_INST"))) TT.max_nr_run = strtol_range(tmp, 0, INT_MAX); + if ((tmp = getenv("FSCK_MAX_INST"))) + TT.max_nr_run = strtol_range(tmp, 0, INT_MAX); if (!TT.devices || (toys.optflags & FLAG_A)) { toys.exitval = scan_all(); - if (CFG_TOYBOX_FREE) free_all(); - return; + if (CFG_TOYBOX_FREE) goto free_all; } dev = TT.devices; @@ -428,5 +404,22 @@ if (TT.sig_num) kill_all(); toys.exitval |= wait_for(1); finfo = filesys_info; - if (CFG_TOYBOX_FREE) free_all(); + +free_all: + if (CFG_TOYBOX_FREE) { + struct f_sys_info *finfo, *temp; + + llist_traverse(TT.devices, llist_free_double); + free(TT.arr_type); + free(TT.arr_flag); + for (finfo = filesys_info; finfo;) { + temp = finfo->next; + free(finfo->device); + free(finfo->mountpt); + free(finfo->type); + free(finfo->opts); + free(finfo); + finfo = temp; + } + } }