diff options
| -rw-r--r-- | scripts/config/confdata.c | 23 | ||||
| -rw-r--r-- | scripts/config/lkc_proto.h | 1 | ||||
| -rw-r--r-- | scripts/config/mconf.c | 5 | 
3 files changed, 29 insertions, 0 deletions
diff --git a/scripts/config/confdata.c b/scripts/config/confdata.c index a1abdeb08..641aa4891 100644 --- a/scripts/config/confdata.c +++ b/scripts/config/confdata.c @@ -83,6 +83,29 @@ char *conf_get_default_confname(void)  	return name;  } +void conf_reset(void) +{ +	struct symbol *sym; +	int i; +	 +	for_all_symbols(i, sym) { +		sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; +		if (sym_is_choice(sym)) +			sym->flags &= ~SYMBOL_NEW; +		sym->flags &= ~SYMBOL_VALID; +		switch (sym->type) { +		case S_INT: +		case S_HEX: +		case S_STRING: +			if (sym->user.val) +				free(sym->user.val); +		default: +			sym->user.val = NULL; +			sym->user.tri = no; +		} +	} +} +  int conf_read_simple(const char *name)  {  	FILE *in = NULL; diff --git a/scripts/config/lkc_proto.h b/scripts/config/lkc_proto.h index b6a389c5f..15fafd01b 100644 --- a/scripts/config/lkc_proto.h +++ b/scripts/config/lkc_proto.h @@ -2,6 +2,7 @@  /* confdata.c */  P(conf_parse,void,(const char *name));  P(conf_read,int,(const char *name)); +P(conf_reset,void,(void));  P(conf_read_simple,int,(const char *name));  P(conf_write,int,(const char *name)); diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c index 2ef24aa5b..5caf82280 100644 --- a/scripts/config/mconf.c +++ b/scripts/config/mconf.c @@ -737,6 +737,8 @@ static void conf(struct menu *menu)  		if (menu == &rootmenu) {  			cprint(":");  			cprint("--- "); +			cprint("D"); +			cprint(_("    Reset to defaults"));  			cprint("L");  			cprint(_("    Load an Alternate Configuration File"));  			cprint("S"); @@ -783,6 +785,9 @@ static void conf(struct menu *menu)  			case 's':  				conf_string(submenu);  				break; +			case 'D': +				conf_reset(); +				break;  			case 'L':  				conf_load();  				break;  | 
