diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-07-21 00:00:36 +0200 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-07-25 21:14:26 +0200 |
commit | 03d29122738f0bd81afd44b1f566e64ebf8d06fe (patch) | |
tree | 10038c037b7b82577fec387fa6cd8042fc8633e7 /scripts/kconfig/conf.c | |
parent | 4a645d5ea65baaa5736bcb566673bf4a351b2ad8 (diff) |
kconfig: attach help text to menus
Roman Zippel wrote:
> A simple example would be
> help texts, right now they are per symbol, but they should really be per
> menu, so archs can provide different help texts for something.
This patch does this and at the same time introduce a few API
funtions used to access the help text.
The relevant api functions are introduced in the various frontends.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Diffstat (limited to 'scripts/kconfig/conf.c')
-rw-r--r-- | scripts/kconfig/conf.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 1199baf866c..8be6a4269e6 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -37,6 +37,14 @@ static struct menu *rootEntry; static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"); +static const char *get_help(struct menu *menu) +{ + if (menu_has_help(menu)) + return menu_get_help(menu); + else + return nohelp_text; +} + static void strip(char *str) { char *p = str; @@ -171,7 +179,7 @@ static void conf_askvalue(struct symbol *sym, const char *def) int conf_string(struct menu *menu) { struct symbol *sym = menu->sym; - const char *def, *help; + const char *def; while (1) { printf("%*s%s ", indent - 1, "", menu->prompt->text); @@ -186,10 +194,7 @@ int conf_string(struct menu *menu) case '?': /* print help */ if (line[1] == '\n') { - help = nohelp_text; - if (menu->sym->help) - help = menu->sym->help; - printf("\n%s\n", menu->sym->help); + printf("\n%s\n", get_help(menu)); def = NULL; break; } @@ -207,7 +212,6 @@ static int conf_sym(struct menu *menu) struct symbol *sym = menu->sym; int type; tristate oldval, newval; - const char *help; while (1) { printf("%*s%s ", indent - 1, "", menu->prompt->text); @@ -233,7 +237,7 @@ static int conf_sym(struct menu *menu) printf("/m"); if (oldval != yes && sym_tristate_within_range(sym, yes)) printf("/y"); - if (sym->help) + if (menu_has_help(menu)) printf("/?"); printf("] "); conf_askvalue(sym, sym_get_string_value(sym)); @@ -269,10 +273,7 @@ static int conf_sym(struct menu *menu) if (sym_set_tristate_value(sym, newval)) return 0; help: - help = nohelp_text; - if (sym->help) - help = sym->help; - printf("\n%s\n", help); + printf("\n%s\n", get_help(menu)); } } @@ -342,7 +343,7 @@ static int conf_choice(struct menu *menu) goto conf_childs; } printf("[1-%d", cnt); - if (sym->help) + if (menu_has_help(menu)) printf("?"); printf("]: "); switch (input_mode) { @@ -359,8 +360,7 @@ static int conf_choice(struct menu *menu) fgets(line, 128, stdin); strip(line); if (line[0] == '?') { - printf("\n%s\n", menu->sym->help ? - menu->sym->help : nohelp_text); + printf("\n%s\n", get_help(menu)); continue; } if (!line[0]) @@ -391,8 +391,7 @@ static int conf_choice(struct menu *menu) if (!child) continue; if (line[strlen(line) - 1] == '?') { - printf("\n%s\n", child->sym->help ? - child->sym->help : nohelp_text); + printf("\n%s\n", get_help(child)); continue; } sym_set_choice_value(sym, child->sym); |