diff mbox

menuconfig: Display current values with symbols.

Message ID 20090909182518.GB9913@sgi.com (mailing list archive)
State New, archived
Headers show

Commit Message

Robin Holt Sept. 9, 2009, 6:25 p.m. UTC
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.


--
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
diff mbox

Patch

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;