* [Patch] menuconfig: Display current values with symbols.
@ 2009-09-09 18:25 Robin Holt
2009-11-25 10:22 ` Michal Marek
0 siblings, 1 reply; 2+ messages in thread
From: Robin Holt @ 2009-09-09 18:25 UTC (permalink / raw)
To: linux-kbuild; +Cc: holt
While investigating why a CONFIG_ symbol was not displayed, I was
frustrated with finding each of the dependent symbol's values. This patch
adds a display of the symbol's value along side the symbol's name.
Signed-off-by: Robin Holt <holt@sgi.com>
---
One additional suggestion would be an easy way to navigate from the
search screen to the spot in the menus where that CONFIG_ value is set.
I could not figure out a clear and convenient method for that. Some of
the menus are fairly long and since they are not sorted, can result in
some frustration while searching for the individual setting.
Index: xpmem_numatools_kernel/scripts/kconfig/expr.c
===================================================================
--- xpmem_numatools_kernel.orig/scripts/kconfig/expr.c 2009-09-08 13:30:57.000000000 -0500
+++ xpmem_numatools_kernel/scripts/kconfig/expr.c 2009-09-09 11:53:07.000000000 -0500
@@ -1013,6 +1013,19 @@ int expr_compare_type(enum expr_type t1,
#endif
}
+void expr_print_symbol(void (*fn)(void *, struct symbol *, const char *), void *data, struct symbol *sym)
+{
+ char sym_value_str[5];
+
+ if (sym->name) {
+ fn(data, sym, sym->name);
+ if (snprintf(sym_value_str, 5, "[=%s]", sym_get_string_value(sym)) < 5)
+ fn(data, sym, sym_value_str);
+ } else {
+ fn(data, NULL, "<choice>");
+ }
+}
+
void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
{
if (!e) {
@@ -1024,28 +1037,19 @@ void expr_print(struct expr *e, void (*f
fn(data, NULL, "(");
switch (e->type) {
case E_SYMBOL:
- if (e->left.sym->name)
- fn(data, e->left.sym, e->left.sym->name);
- else
- fn(data, NULL, "<choice>");
+ expr_print_symbol(fn, data, e->left.sym);
break;
case E_NOT:
fn(data, NULL, "!");
expr_print(e->left.expr, fn, data, E_NOT);
break;
case E_EQUAL:
- if (e->left.sym->name)
- fn(data, e->left.sym, e->left.sym->name);
- else
- fn(data, NULL, "<choice>");
+ expr_print_symbol(fn, data, e->left.sym);
fn(data, NULL, "=");
fn(data, e->right.sym, e->right.sym->name);
break;
case E_UNEQUAL:
- if (e->left.sym->name)
- fn(data, e->left.sym, e->left.sym->name);
- else
- fn(data, NULL, "<choice>");
+ expr_print_symbol(fn, data, e->left.sym);
fn(data, NULL, "!=");
fn(data, e->right.sym, e->right.sym->name);
break;
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [Patch] menuconfig: Display current values with symbols.
2009-09-09 18:25 [Patch] menuconfig: Display current values with symbols Robin Holt
@ 2009-11-25 10:22 ` Michal Marek
0 siblings, 0 replies; 2+ messages in thread
From: Michal Marek @ 2009-11-25 10:22 UTC (permalink / raw)
To: Robin Holt; +Cc: linux-kbuild, Roman Zippel, lkml
Added kconfig maintainer to CC.
On 9.9.2009 20:25, Robin Holt wrote:
>
> While investigating why a CONFIG_ symbol was not displayed, I was
> frustrated with finding each of the dependent symbol's values. This patch
> adds a display of the symbol's value along side the symbol's name.
>
> Signed-off-by: Robin Holt <holt@sgi.com>
>
> ---
>
> One additional suggestion would be an easy way to navigate from the
> search screen to the spot in the menus where that CONFIG_ value is set.
> I could not figure out a clear and convenient method for that. Some of
> the menus are fairly long and since they are not sorted, can result in
> some frustration while searching for the individual setting.
>
>
> Index: xpmem_numatools_kernel/scripts/kconfig/expr.c
> ===================================================================
> --- xpmem_numatools_kernel.orig/scripts/kconfig/expr.c 2009-09-08 13:30:57.000000000 -0500
> +++ xpmem_numatools_kernel/scripts/kconfig/expr.c 2009-09-09 11:53:07.000000000 -0500
> @@ -1013,6 +1013,19 @@ int expr_compare_type(enum expr_type t1,
> #endif
> }
>
> +void expr_print_symbol(void (*fn)(void *, struct symbol *, const char *), void *data, struct symbol *sym)
> +{
> + char sym_value_str[5];
> +
> + if (sym->name) {
> + fn(data, sym, sym->name);
> + if (snprintf(sym_value_str, 5, "[=%s]", sym_get_string_value(sym)) < 5)
> + fn(data, sym, sym_value_str);
> + } else {
> + fn(data, NULL, "<choice>");
> + }
> +}
> +
The subject says menuconfig, but expr_print() is also used by xconfig.
Did you check that xconfig still works after this change?
Thanks.
Michal
> void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
> {
> if (!e) {
> @@ -1024,28 +1037,19 @@ void expr_print(struct expr *e, void (*f
> fn(data, NULL, "(");
> switch (e->type) {
> case E_SYMBOL:
> - if (e->left.sym->name)
> - fn(data, e->left.sym, e->left.sym->name);
> - else
> - fn(data, NULL, "<choice>");
> + expr_print_symbol(fn, data, e->left.sym);
> break;
> case E_NOT:
> fn(data, NULL, "!");
> expr_print(e->left.expr, fn, data, E_NOT);
> break;
> case E_EQUAL:
> - if (e->left.sym->name)
> - fn(data, e->left.sym, e->left.sym->name);
> - else
> - fn(data, NULL, "<choice>");
> + expr_print_symbol(fn, data, e->left.sym);
> fn(data, NULL, "=");
> fn(data, e->right.sym, e->right.sym->name);
> break;
> case E_UNEQUAL:
> - if (e->left.sym->name)
> - fn(data, e->left.sym, e->left.sym->name);
> - else
> - fn(data, NULL, "<choice>");
> + expr_print_symbol(fn, data, e->left.sym);
> fn(data, NULL, "!=");
> fn(data, e->right.sym, e->right.sym->name);
> break;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-11-25 10:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-09 18:25 [Patch] menuconfig: Display current values with symbols Robin Holt
2009-11-25 10:22 ` Michal Marek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).