summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-02-03 18:48:12 -0800
committerLinus Torvalds <torvalds@home.osdl.org>2004-02-03 18:48:12 -0800
commitccd3fed5b2bddf20be5fcd2d4bffd79df08db411 (patch)
tree675daa2b40ba8f18cac27f259da2f0154d9a9b99 /scripts
parenteb32911f1d4f9e27e10fa23c0dd500e11d9e6802 (diff)
[PATCH] fix menuconfig choice item help display
From: Bjorn Helgaas <bjorn.helgaas@hp.com> Anders Gustafsson <andersg@0x63.nu> Roman Zippel <zippel@linux-m68k.org> This patch fixes menuconfig so it can display help text for individual choice group config entries. Previously it would only display the help text attached to the "choice" item. There was no way to display the help attached to individual config entries inside the choice group. Typically, the "choice" item has no help text, and all the useful help is attached to the individual entries, so this was a bit of a problem.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/kconfig/mconf.c19
-rw-r--r--scripts/lxdialog/checklist.c10
2 files changed, 21 insertions, 8 deletions
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index 1a8e7c414445..b3c24cb98bfe 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -607,6 +607,7 @@ static void conf_choice(struct menu *menu)
struct symbol *active;
int stat;
+ active = sym_get_choice_value(menu->sym);
while (1) {
cprint_init();
cprint("--title");
@@ -618,24 +619,32 @@ static void conf_choice(struct menu *menu)
cprint("6");
current_menu = menu;
- active = sym_get_choice_value(menu->sym);
for (child = menu->list; child; child = child->next) {
if (!menu_is_visible(child))
continue;
cprint("%p", child);
cprint("%s", menu_get_prompt(child));
- cprint(child->sym == active ? "ON" : "OFF");
+ if (child->sym == sym_get_choice_value(menu->sym))
+ cprint("ON");
+ else if (child->sym == active)
+ cprint("SELECTED");
+ else
+ cprint("OFF");
}
stat = exec_conf();
switch (stat) {
case 0:
- if (sscanf(input_buf, "%p", &menu) != 1)
+ if (sscanf(input_buf, "%p", &child) != 1)
break;
- sym_set_tristate_value(menu->sym, yes);
+ sym_set_tristate_value(child->sym, yes);
return;
case 1:
- show_help(menu);
+ if (sscanf(input_buf, "%p", &child) == 1) {
+ show_help(child);
+ active = child->sym;
+ } else
+ show_help(menu);
break;
case 255:
return;
diff --git a/scripts/lxdialog/checklist.c b/scripts/lxdialog/checklist.c
index 4f78688ed28a..99705fe65bf1 100644
--- a/scripts/lxdialog/checklist.c
+++ b/scripts/lxdialog/checklist.c
@@ -138,9 +138,11 @@ dialog_checklist (const char *title, const char *prompt, int height, int width,
/* Initializes status */
for (i = 0; i < item_no; i++) {
status[i] = !strcasecmp (items[i * 3 + 2], "on");
- if (!choice && status[i])
- choice = i;
+ if ((!choice && status[i]) || !strcasecmp (items[i * 3 + 2], "selected"))
+ choice = i + 1;
}
+ if (choice)
+ choice--;
max_choice = MIN (list_height, item_no);
@@ -302,6 +304,7 @@ dialog_checklist (const char *title, const char *prompt, int height, int width,
case 'H':
case 'h':
case '?':
+ fprintf (stderr, "%s", items[(scroll + choice) * 3]);
delwin (dialog);
free (status);
return 1;
@@ -347,7 +350,8 @@ dialog_checklist (const char *title, const char *prompt, int height, int width,
}
}
- }
+ } else
+ fprintf (stderr, "%s", items[(scroll + choice) * 3]);
delwin (dialog);
free (status);
return button;