linux-kbuild.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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

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).