diff --git a/cmdedit.c b/cmdedit.c index 0de18e81f..0ce64beeb 100644 --- a/cmdedit.c +++ b/cmdedit.c @@ -115,6 +115,18 @@ void cmdedit_reset_term(void) if (reset_term) /* sparc and other have broken termios support: use old termio handling. */ setTermSettings(fileno(stdin), (void*) &initial_settings); +#ifdef BB_FEATURE_CLEAN_UP + if (his_front) { + struct history *n; + //while(his_front!=his_end) { + while(his_front!=his_end) { + n = his_front->n; + free(his_front->s); + free(his_front); + his_front=n; + } + } +#endif } void clean_up_and_die(int sig) diff --git a/coreutils/dd.c b/coreutils/dd.c index 86899194c..6df2588ca 100644 --- a/coreutils/dd.c +++ b/coreutils/dd.c @@ -173,7 +173,7 @@ extern int dd_main(int argc, char **argv) cleanup: /* Note that we are not freeing memory or closing * files here, to save a few bytes. */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP close(inFd); close(outFd); free(buf); diff --git a/dd.c b/dd.c index 86899194c..6df2588ca 100644 --- a/dd.c +++ b/dd.c @@ -173,7 +173,7 @@ extern int dd_main(int argc, char **argv) cleanup: /* Note that we are not freeing memory or closing * files here, to save a few bytes. */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP close(inFd); close(outFd); free(buf); diff --git a/editors/sed.c b/editors/sed.c index b54a9bb9c..69a5e0324 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -92,7 +92,7 @@ static int ncmds = 0; /* number of sed commands */ /*static char *cur_file = NULL;*/ /* file currently being processed XXX: do I need this? */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP static void destroy_cmd_strs() { if (sed_cmds == NULL) @@ -663,7 +663,7 @@ extern int sed_main(int argc, char **argv) { int opt; -#if 0 +#ifdef BB_FEATURE_CLEAN_UP /* destroy command strings on exit */ if (atexit(destroy_cmd_strs) == -1) { perror("sed"); diff --git a/fsck_minix.c b/fsck_minix.c index c3c493fd2..f980fe9ea 100644 --- a/fsck_minix.c +++ b/fsck_minix.c @@ -1319,7 +1319,7 @@ static void alloc_name_list(void) name_list[i] = xmalloc(sizeof(char) * BUFSIZ + 1); } -#if 0 +#ifdef BB_FEATURE_CLEAN_UP /* execute this atexit() to deallocate name_list[] */ /* piptigger was here */ static void free_name_list(void) @@ -1344,9 +1344,11 @@ extern int fsck_minix_main(int argc, char **argv) int retcode = 0; alloc_name_list(); +#ifdef BB_FEATURE_CLEAN_UP /* Don't bother to free memory. Exit does * that automagically, so we can save a few bytes */ - //atexit(free_name_list); + atexit(free_name_list); +#endif if (INODE_SIZE * MINIX_INODES_PER_BLOCK != BLOCK_SIZE) die("bad inode size"); diff --git a/mount.c b/mount.c index 610d12d34..6e95cdc79 100644 --- a/mount.c +++ b/mount.c @@ -347,9 +347,9 @@ extern int mount_main(int argc, char **argv) mntentlist[i].mnt_opts, mntentlist[i].mnt_freq, mntentlist[i].mnt_passno); } +#ifdef BB_FEATURE_CLEAN_UP /* Don't bother to close files or free memory. Exit * does that automagically, so we can save a few bytes */ -#if 0 free( mntentlist); close(fd); #endif diff --git a/sed.c b/sed.c index b54a9bb9c..69a5e0324 100644 --- a/sed.c +++ b/sed.c @@ -92,7 +92,7 @@ static int ncmds = 0; /* number of sed commands */ /*static char *cur_file = NULL;*/ /* file currently being processed XXX: do I need this? */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP static void destroy_cmd_strs() { if (sed_cmds == NULL) @@ -663,7 +663,7 @@ extern int sed_main(int argc, char **argv) { int opt; -#if 0 +#ifdef BB_FEATURE_CLEAN_UP /* destroy command strings on exit */ if (atexit(destroy_cmd_strs) == -1) { perror("sed"); diff --git a/shell/cmdedit.c b/shell/cmdedit.c index 0de18e81f..0ce64beeb 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c @@ -115,6 +115,18 @@ void cmdedit_reset_term(void) if (reset_term) /* sparc and other have broken termios support: use old termio handling. */ setTermSettings(fileno(stdin), (void*) &initial_settings); +#ifdef BB_FEATURE_CLEAN_UP + if (his_front) { + struct history *n; + //while(his_front!=his_end) { + while(his_front!=his_end) { + n = his_front->n; + free(his_front->s); + free(his_front); + his_front=n; + } + } +#endif } void clean_up_and_die(int sig) diff --git a/umount.c b/umount.c index df075f7d9..6a5e4cad8 100644 --- a/umount.c +++ b/umount.c @@ -142,7 +142,7 @@ char *mtab_next(void **iter) /* Don't bother to clean up, since exit() does that * automagically, so we can save a few bytes */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP void mtab_free(void) { struct _mtab_entry_t *this, *next; @@ -235,6 +235,9 @@ extern int umount_main(int argc, char **argv) if (argc < 2) { usage(umount_usage); } +#ifdef BB_FEATURE_CLEAN_UP + atexit(mtab_free); +#endif /* Parse any options */ while (--argc > 0 && **(++argv) == '-') { diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index c3c493fd2..f980fe9ea 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c @@ -1319,7 +1319,7 @@ static void alloc_name_list(void) name_list[i] = xmalloc(sizeof(char) * BUFSIZ + 1); } -#if 0 +#ifdef BB_FEATURE_CLEAN_UP /* execute this atexit() to deallocate name_list[] */ /* piptigger was here */ static void free_name_list(void) @@ -1344,9 +1344,11 @@ extern int fsck_minix_main(int argc, char **argv) int retcode = 0; alloc_name_list(); +#ifdef BB_FEATURE_CLEAN_UP /* Don't bother to free memory. Exit does * that automagically, so we can save a few bytes */ - //atexit(free_name_list); + atexit(free_name_list); +#endif if (INODE_SIZE * MINIX_INODES_PER_BLOCK != BLOCK_SIZE) die("bad inode size"); diff --git a/util-linux/mount.c b/util-linux/mount.c index 610d12d34..6e95cdc79 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -347,9 +347,9 @@ extern int mount_main(int argc, char **argv) mntentlist[i].mnt_opts, mntentlist[i].mnt_freq, mntentlist[i].mnt_passno); } +#ifdef BB_FEATURE_CLEAN_UP /* Don't bother to close files or free memory. Exit * does that automagically, so we can save a few bytes */ -#if 0 free( mntentlist); close(fd); #endif diff --git a/util-linux/umount.c b/util-linux/umount.c index df075f7d9..6a5e4cad8 100644 --- a/util-linux/umount.c +++ b/util-linux/umount.c @@ -142,7 +142,7 @@ char *mtab_next(void **iter) /* Don't bother to clean up, since exit() does that * automagically, so we can save a few bytes */ -#if 0 +#ifdef BB_FEATURE_CLEAN_UP void mtab_free(void) { struct _mtab_entry_t *this, *next; @@ -235,6 +235,9 @@ extern int umount_main(int argc, char **argv) if (argc < 2) { usage(umount_usage); } +#ifdef BB_FEATURE_CLEAN_UP + atexit(mtab_free); +#endif /* Parse any options */ while (--argc > 0 && **(++argv) == '-') {