X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/6a1be2701196d69f20806067cee93a2d81d7229f..1e90ce08b5070f6170a7a086036cddf149167296:/scripts/config/mconf.c?ds=inline diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c index 5caf82280..74036174f 100644 --- a/scripts/config/mconf.c +++ b/scripts/config/mconf.c @@ -22,6 +22,7 @@ #include #include +#define BUFSIZE 524288 #define LKC_DIRECT_LINK #include "lkc.h" @@ -254,10 +255,10 @@ search_help[] = N_( " USB$ => find all CONFIG_ symbols ending with USB\n" "\n"); -static char buf[4096], *bufptr = buf; -static char input_buf[4096]; +static char buf[BUFSIZE], *bufptr = buf; +static char input_buf[BUFSIZE]; static char filename[PATH_MAX+1] = ".config"; -static char *args[1024], **argptr = args; +static char *args[BUFSIZE], **argptr = args; static int indent; static struct termios ios_org; static int rows = 0, cols = 0; @@ -887,6 +888,7 @@ static void conf_choice(struct menu *menu) const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; + struct property *prop; int stat; active = sym_get_choice_value(menu->sym); @@ -919,6 +921,13 @@ static void conf_choice(struct menu *menu) case 0: if (sscanf(input_buf, "%p", &child) != 1) break; + + if (sym_get_tristate_value(child->sym) != yes) { + for_all_properties(menu->sym, prop, P_RESET) { + if (expr_calc_value(prop->visible.expr) != no) + conf_reset(); + } + } sym_set_tristate_value(child->sym, yes); return; case 1: