X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/451518eba5be299ae1ef004112a6ecdc3b2e26c0..ae774d3615d6a2c66871accfd3b07ca8459ef7c7:/scripts/config/mconf.c diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c index 69cd56f13..a62e924dc 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" @@ -34,12 +35,12 @@ static const char mconf_readme[] = N_( "may be completely removed altogether.\n" "\n" "Menu items beginning with [*], or [ ] represent features\n" -"configured to be built in, modularized or removed respectively.\n" -"Pointed brackets <> represent module capable features.\n" +"configured to be included, built as package or removed respectively.\n" +"Pointed brackets <> represent packaging capable features.\n" "\n" "To change any of these features, highlight it with the cursor\n" -"keys and press to build it in, to make it a module or\n" -" to removed it. You may also press the to cycle\n" +"keys and press to include it, to make it a package or\n" +" to remove it. You may also press the to cycle\n" "through the available options (ie. Y->N->M->Y).\n" "\n" "Some additional keyboard hints:\n" @@ -162,9 +163,9 @@ menu_instructions[] = N_( "Arrow keys navigate the menu. " " selects submenus --->. " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " + "Pressing includes, excludes, builds as package. " "Press to exit, for Help, for Search. " - "Legend: [*] built-in [ ] excluded module < > module capable"), + "Legend: [*] built-in [ ] excluded package < > package capable"), radiolist_instructions[] = N_( "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " @@ -181,8 +182,8 @@ inputbox_instructions_string[] = N_( "Please enter a string value. " "Use the key to move from the input field to the buttons below it."), setmod_text[] = N_( - "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module."), + "This feature depends on another which has been configured as a package.\n" + "As a result, this feature will be built as a package."), nohelp_text[] = N_( "There is no help available for this config option.\n"), load_config_text[] = N_( @@ -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; @@ -404,6 +405,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym) sym_get_string_value(sym)); for_all_prompts(sym, prop) get_prompt_str(r, prop); + hit = false; for_all_properties(sym, prop, P_SELECT) { if (!hit) { @@ -415,11 +417,29 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym) } if (hit) str_append(r, "\n"); + + hit = false; + for_all_properties(sym, prop, P_DESELECT) { + if (!hit) { + str_append(r, " Deselects: "); + hit = true; + } else + str_printf(r, " && "); + expr_gstr_print(prop->expr, r); + } + if (hit) + str_append(r, "\n"); + if (sym->rev_dep.expr) { str_append(r, " Selected by: "); expr_gstr_print(sym->rev_dep.expr, r); str_append(r, "\n"); } + if (sym->rev_dep_inv.expr) { + str_append(r, " Deselected by: "); + expr_gstr_print(sym->rev_dep_inv.expr, r); + str_append(r, "\n"); + } str_append(r, "\n\n"); } @@ -737,6 +757,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 +805,9 @@ static void conf(struct menu *menu) case 's': conf_string(submenu); break; + case 'D': + conf_reset(); + break; case 'L': conf_load(); break; @@ -847,6 +872,8 @@ static void show_help(struct menu *menu) struct gstr help = str_new(); struct symbol *sym = menu->sym; + help.max_width = cols - 10; + if (sym->help) { if (sym->name) { @@ -882,6 +909,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); @@ -914,6 +942,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: