X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=scripts%2Fconfig%2Fmconf.c;h=8c58b623863d54d91c6ad1df1379103fe66303a0;hb=927764abf2c7710c29a100332587e4235fb36cf2;hp=489648194251e742a37428d71c0276aeeb3aeffb;hpb=b11d6447e452998d7b104aec1ddbd2e2346b97a5;p=openwrt-10.03%2F.git diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c index 489648194..8c58b6238 100644 --- a/scripts/config/mconf.c +++ b/scripts/config/mconf.c @@ -405,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) { @@ -416,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"); } @@ -888,6 +907,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); @@ -920,6 +940,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: