[Buildroot] [PATCH 1/1] kconfig: Add "execute" config-type

Konrad Eisele konrad at gaisler.com
Fri Nov 18 09:04:32 UTC 2011


New kconfig config-type "execute":
Type "execute" is similar to "string". However instead of editing, the string is executed
using call to "system(<string>)" i.e.:
config EXECUTE_BUILD
	execute "title"
	default "make CFLAGS=\"\" build"
	help
	  Execute "make build"

Signed-off-by: Konrad Eisele <konrad at gaisler.com>
---
 support/kconfig/conf.c               |    2 +
 support/kconfig/confdata.c           |    6 +
 support/kconfig/expr.h               |    2 +-
 support/kconfig/gconf.c              |    7 +-
 support/kconfig/lkc_proto.h          |    1 +
 support/kconfig/mconf.c              |    3 +
 support/kconfig/menu.c               |    2 +-
 support/kconfig/nconf.c              |    3 +
 support/kconfig/qconf.cc             |   13 ++-
 support/kconfig/qconf.h              |    1 +
 support/kconfig/symbol.c             |    7 ++
 support/kconfig/util.c               |   24 +++++
 support/kconfig/zconf.gperf          |    1 +
 support/kconfig/zconf.hash.c_shipped |  190 +++++++++++++++++-----------------
 support/kconfig/zconf.tab.c_shipped  |    3 +
 support/kconfig/zconf.y              |    3 +
 16 files changed, 170 insertions(+), 98 deletions(-)

diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c
index 692f779..e6986f2 100644
--- a/support/kconfig/conf.c
+++ b/support/kconfig/conf.c
@@ -120,6 +120,7 @@ static int conf_askvalue(struct symbol *sym, const char *def)
 	case S_STRING:
 		printf("%s\n", def);
 		return 1;
+	case S_EXECUTE:
 	default:
 		;
 	}
@@ -394,6 +395,7 @@ static void conf(struct menu *menu)
 	switch (sym->type) {
 	case S_INT:
 	case S_HEX:
+	case S_EXECUTE:
 	case S_STRING:
 		conf_string(menu);
 		break;
diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c
index 3fb4f09..d558e84 100644
--- a/support/kconfig/confdata.c
+++ b/support/kconfig/confdata.c
@@ -147,6 +147,7 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
 			sym->type = S_STRING;
 			goto done;
 		}
+	case S_EXECUTE:
 	case S_STRING:
 		if (*p++ != '"')
 			break;
@@ -233,6 +234,7 @@ load:
 		switch (sym->type) {
 		case S_INT:
 		case S_HEX:
+		case S_EXECUTE:
 		case S_STRING:
 			if (sym->def[def].val)
 				free(sym->def[def].val);
@@ -408,6 +410,7 @@ int conf_read_level(const char *name, struct conf_level *l)
 			if (sym->visible == no && !conf_unsaved)
 				sym->flags &= ~SYMBOL_DEF_USER;
 			switch (sym->type) {
+			case S_EXECUTE:
 			case S_STRING:
 			case S_INT:
 			case S_HEX:
@@ -491,6 +494,7 @@ static void conf_write_symbol(struct symbol *sym, FILE *out, bool write_no)
 			break;
 		}
 		break;
+	case S_EXECUTE:
 	case S_STRING:
 		conf_write_string(false, CONFPREFIX(sym), sym->name, sym_get_string_value(sym), out);
 		break;
@@ -762,6 +766,7 @@ static int conf_split_config(void)
 					    sym->def[S_DEF_AUTO].tri)
 						continue;
 					break;
+				case S_EXECUTE:
 				case S_STRING:
 				case S_HEX:
 				case S_INT:
@@ -936,6 +941,7 @@ int conf_write_autoconf(void)
 				break;
 			}
 			break;
+		case S_EXECUTE:
 		case S_STRING:
 			conf_write_string(true, CONFPREFIX(sym), sym->name, sym_get_string_value(sym), out_h);
 			break;
diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h
index b2d8b4a..1a7fcf2 100644
--- a/support/kconfig/expr.h
+++ b/support/kconfig/expr.h
@@ -74,7 +74,7 @@ struct symbol_value {
 };
 
 enum symbol_type {
-	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
+	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_EXECUTE, S_OTHER
 };
 
 /* enum values are used as index to symbol.def[] */
diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c
index 1c3cb81..d44ec15 100644
--- a/support/kconfig/gconf.c
+++ b/support/kconfig/gconf.c
@@ -968,8 +968,10 @@ on_treeview2_button_press_event(GtkWidget * widget,
 	if (event->type == GDK_2BUTTON_PRESS) {
 		enum prop_type ptype;
 		ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
-
-		if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) {
+		if (menu->sym && (sym_get_type(menu->sym) == S_EXECUTE) &&
+		    (col == COL_OPTION || col == COL_VALUE || col == COL_NAME)) {
+			execute_sym(menu->sym, 0);
+		} if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) {
 			// goes down into menu
 			current = menu;
 			display_tree_part();
@@ -1205,6 +1207,7 @@ static gchar **fill_row(struct menu *menu)
 		break;
 	case S_INT:
 	case S_HEX:
+	case S_EXECUTE:
 	case S_STRING:
 		def = sym_get_string_value(sym);
 		row[COL_VALUE] = g_strdup(def);
diff --git a/support/kconfig/lkc_proto.h b/support/kconfig/lkc_proto.h
index 334fdfc..276001f 100644
--- a/support/kconfig/lkc_proto.h
+++ b/support/kconfig/lkc_proto.h
@@ -56,3 +56,4 @@ P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const cha
 
 /* util.c */
 P(resolve_vars,char*,(const char *n, struct conf_level *l));
+P(execute_sym,void,(struct symbol *sym, int isterm));
diff --git a/support/kconfig/mconf.c b/support/kconfig/mconf.c
index 6711085..5720179 100644
--- a/support/kconfig/mconf.c
+++ b/support/kconfig/mconf.c
@@ -714,6 +714,9 @@ static void conf_string(struct menu *menu)
 		case S_HEX:
 			heading = _(inputbox_instructions_hex);
 			break;
+		case S_EXECUTE:
+			execute_sym(menu->sym, 1);
+			return;
 		case S_STRING:
 			heading = _(inputbox_instructions_string);
 			break;
diff --git a/support/kconfig/menu.c b/support/kconfig/menu.c
index 1ffaeac..1629613 100644
--- a/support/kconfig/menu.c
+++ b/support/kconfig/menu.c
@@ -217,7 +217,7 @@ static void sym_check_prop(struct symbol *sym)
 	for (prop = sym->prop; prop; prop = prop->next) {
 		switch (prop->type) {
 		case P_DEFAULT:
-			if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
+			if ((sym->type == S_STRING || sym->type == S_EXECUTE || sym->type == S_INT || sym->type == S_HEX) &&
 			    prop->expr->type != E_SYMBOL)
 				prop_warn(prop,
 				    "default for config symbol '%s'"
diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c
index ca1b055..b6dcb19 100644
--- a/support/kconfig/nconf.c
+++ b/support/kconfig/nconf.c
@@ -1373,6 +1373,9 @@ static void conf_string(struct menu *menu)
 		case S_HEX:
 			heading = _(inputbox_instructions_hex);
 			break;
+		case S_EXECUTE:
+			execute_sym(menu->sym, 1);
+			return;
 		case S_STRING:
 			heading = _(inputbox_instructions_string);
 			break;
diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc
index 0760f4f..8c0d7c5 100644
--- a/support/kconfig/qconf.cc
+++ b/support/kconfig/qconf.cc
@@ -296,6 +296,14 @@ ConfigLineEdit::ConfigLineEdit(ConfigView* parent)
 	connect(this, SIGNAL(lostFocus()), SLOT(hide()));
 }
 
+void ConfigLineEdit::execute(ConfigItem* i)
+{
+	struct symbol *sym;
+	item = i;
+	sym = item->menu->sym;
+	execute_sym(sym, 0);
+}
+
 void ConfigLineEdit::show(ConfigItem* i)
 {
 	item = i;
@@ -537,7 +545,10 @@ void ConfigList::changeValue(ConfigItem* item)
 		if (oldexpr != newexpr)
 			parent()->updateList(item);
 		break;
-	case S_INT:
+	case S_EXECUTE:
+		parent()->lineEdit->execute(item);
+		break;
+ 	case S_INT:
 	case S_HEX:
 	case S_STRING:
 		if (colMap[dataColIdx] >= 0)
diff --git a/support/kconfig/qconf.h b/support/kconfig/qconf.h
index 91677d9..1537671 100644
--- a/support/kconfig/qconf.h
+++ b/support/kconfig/qconf.h
@@ -209,6 +209,7 @@ public:
 		return (ConfigView*)Parent::parent();
 	}
 	void show(ConfigItem *i);
+	void execute(ConfigItem *i);
 	void keyPressEvent(QKeyEvent *e);
 
 public:
diff --git a/support/kconfig/symbol.c b/support/kconfig/symbol.c
index 941152e..b7d6c09 100644
--- a/support/kconfig/symbol.c
+++ b/support/kconfig/symbol.c
@@ -92,6 +92,8 @@ const char *sym_type_name(enum symbol_type type)
 		return "integer";
 	case S_HEX:
 		return "hex";
+	case S_EXECUTE:
+		return "execute";
 	case S_STRING:
 		return "string";
 	case S_UNKNOWN:
@@ -308,6 +310,7 @@ void sym_calc_value(struct symbol *sym)
 	switch (sym->type) {
 	case S_INT:
 	case S_HEX:
+	case S_EXECUTE:
 	case S_STRING:
 		newval = symbol_empty.curr;
 		break;
@@ -374,6 +377,7 @@ void sym_calc_value(struct symbol *sym)
 		if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
 			newval.tri = yes;
 		break;
+	case S_EXECUTE:
 	case S_STRING:
 	case S_HEX:
 	case S_INT:
@@ -550,6 +554,7 @@ bool sym_string_valid(struct symbol *sym, const char *str)
 	signed char ch;
 
 	switch (sym->type) {
+	case S_EXECUTE:
 	case S_STRING:
 		return true;
 	case S_INT:
@@ -594,6 +599,7 @@ bool sym_string_within_range(struct symbol *sym, const char *str)
 	int val;
 
 	switch (sym->type) {
+	case S_EXECUTE:
 	case S_STRING:
 		return sym_string_valid(sym, str);
 	case S_INT:
@@ -744,6 +750,7 @@ const char *sym_get_string_default(struct symbol *sym)
 	case S_INT:
 	case S_HEX:
 		return str;
+	case S_EXECUTE:
 	case S_STRING:
 		return str;
 	case S_OTHER:
diff --git a/support/kconfig/util.c b/support/kconfig/util.c
index cb8df5f..b970c7e 100644
--- a/support/kconfig/util.c
+++ b/support/kconfig/util.c
@@ -318,3 +318,27 @@ error_out:
 		free(var);
 	return 0;
 }
+
+void execute_sym(struct symbol *sym, int isterm) 
+{
+	if (sym
+	    && sym_get_string_value(sym)
+	    && sym_get_type(sym) == S_EXECUTE) {
+		const char *cmd = sym_get_string_value(sym);
+		char *rcmd = resolve_vars(cmd, sym->level);
+		if (rcmd) {
+			if (isterm) {
+				char *tcmd;
+				tcmd = malloc(strlen(rcmd) + 32);
+				tcmd[0] = 0;
+				strcat(tcmd, "xterm -e ");
+				strcat(tcmd, rcmd);
+				free(rcmd);
+				rcmd = tcmd;
+			}
+			conf_write(NULL);
+			system(rcmd);
+			free(rcmd);
+		}
+	}
+}
diff --git a/support/kconfig/zconf.gperf b/support/kconfig/zconf.gperf
index 88228c6..3a624d3 100644
--- a/support/kconfig/zconf.gperf
+++ b/support/kconfig/zconf.gperf
@@ -37,6 +37,7 @@ def_bool,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN
 int,		T_TYPE,		TF_COMMAND, S_INT
 hex,		T_TYPE,		TF_COMMAND, S_HEX
 string,		T_TYPE,		TF_COMMAND, S_STRING
+execute,	T_TYPE,		TF_COMMAND, S_EXECUTE
 select,		T_SELECT,	TF_COMMAND
 range,		T_RANGE,	TF_COMMAND
 visible,	T_VISIBLE,	TF_COMMAND
diff --git a/support/kconfig/zconf.hash.c_shipped b/support/kconfig/zconf.hash.c_shipped
index dd11aab..0e07a55 100644
--- a/support/kconfig/zconf.hash.c_shipped
+++ b/support/kconfig/zconf.hash.c_shipped
@@ -32,7 +32,7 @@
 struct kconf_id;
 
 static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
-/* maximum key range = 47, duplicates = 0 */
+/* maximum key range = 52, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -46,32 +46,32 @@ kconf_id_hash (register const char *str, register unsigned int len)
 {
   static unsigned char asso_values[] =
     {
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 30,  5,
-       0,  0,  5, 49,  0, 20, 49, 49, 20, 20,
-       5,  0, 40, 49, 15,  0,  0, 25, 35, 49,
-       0, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
-      49, 49, 49, 49, 49, 49
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 35, 10,
+       5,  0,  5, 54, 10, 25, 54, 54, 20, 20,
+       5,  0, 40, 54,  5,  0,  0, 25, 40, 54,
+       0, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+      54, 54, 54, 54, 54, 54
     };
   register int hval = len;
 
@@ -91,72 +91,74 @@ kconf_id_hash (register const char *str, register unsigned int len)
 struct kconf_id_strings_t
   {
     char kconf_id_strings_str2[sizeof("on")];
-    char kconf_id_strings_str3[sizeof("hex")];
-    char kconf_id_strings_str5[sizeof("endif")];
     char kconf_id_strings_str6[sizeof("option")];
-    char kconf_id_strings_str7[sizeof("endmenu")];
+    char kconf_id_strings_str7[sizeof("execute")];
     char kconf_id_strings_str8[sizeof("optional")];
-    char kconf_id_strings_str9[sizeof("endchoice")];
-    char kconf_id_strings_str11[sizeof("choice")];
-    char kconf_id_strings_str12[sizeof("default")];
-    char kconf_id_strings_str13[sizeof("def_bool")];
-    char kconf_id_strings_str16[sizeof("config")];
-    char kconf_id_strings_str17[sizeof("def_tristate")];
-    char kconf_id_strings_str19[sizeof("defconfig_list")];
-    char kconf_id_strings_str21[sizeof("string")];
-    char kconf_id_strings_str22[sizeof("if")];
-    char kconf_id_strings_str23[sizeof("int")];
-    char kconf_id_strings_str24[sizeof("help")];
-    char kconf_id_strings_str25[sizeof("range")];
+    char kconf_id_strings_str10[sizeof("endif")];
+    char kconf_id_strings_str11[sizeof("string")];
+    char kconf_id_strings_str12[sizeof("endmenu")];
+    char kconf_id_strings_str13[sizeof("hex")];
+    char kconf_id_strings_str14[sizeof("endchoice")];
+    char kconf_id_strings_str15[sizeof("range")];
+    char kconf_id_strings_str16[sizeof("choice")];
+    char kconf_id_strings_str17[sizeof("default")];
+    char kconf_id_strings_str18[sizeof("def_bool")];
+    char kconf_id_strings_str21[sizeof("config")];
+    char kconf_id_strings_str22[sizeof("def_tristate")];
+    char kconf_id_strings_str24[sizeof("defconfig_list")];
     char kconf_id_strings_str26[sizeof("select")];
-    char kconf_id_strings_str27[sizeof("modules")];
-    char kconf_id_strings_str28[sizeof("tristate")];
+    char kconf_id_strings_str27[sizeof("if")];
+    char kconf_id_strings_str28[sizeof("int")];
     char kconf_id_strings_str29[sizeof("menu")];
     char kconf_id_strings_str31[sizeof("source")];
-    char kconf_id_strings_str32[sizeof("comment")];
-    char kconf_id_strings_str34[sizeof("bool")];
+    char kconf_id_strings_str32[sizeof("modules")];
+    char kconf_id_strings_str33[sizeof("tristate")];
+    char kconf_id_strings_str34[sizeof("help")];
     char kconf_id_strings_str35[sizeof("menuconfig")];
-    char kconf_id_strings_str37[sizeof("boolean")];
-    char kconf_id_strings_str38[sizeof("env")];
-    char kconf_id_strings_str39[sizeof("subsource")];
-    char kconf_id_strings_str42[sizeof("visible")];
+    char kconf_id_strings_str37[sizeof("comment")];
+    char kconf_id_strings_str39[sizeof("bool")];
+    char kconf_id_strings_str42[sizeof("boolean")];
+    char kconf_id_strings_str43[sizeof("env")];
+    char kconf_id_strings_str44[sizeof("subsource")];
     char kconf_id_strings_str46[sizeof("prompt")];
-    char kconf_id_strings_str47[sizeof("depends")];
-    char kconf_id_strings_str48[sizeof("mainmenu")];
+    char kconf_id_strings_str47[sizeof("visible")];
+    char kconf_id_strings_str52[sizeof("depends")];
+    char kconf_id_strings_str53[sizeof("mainmenu")];
   };
 static struct kconf_id_strings_t kconf_id_strings_contents =
   {
     "on",
-    "hex",
-    "endif",
     "option",
-    "endmenu",
+    "execute",
     "optional",
+    "endif",
+    "string",
+    "endmenu",
+    "hex",
     "endchoice",
+    "range",
     "choice",
     "default",
     "def_bool",
     "config",
     "def_tristate",
     "defconfig_list",
-    "string",
+    "select",
     "if",
     "int",
-    "help",
-    "range",
-    "select",
-    "modules",
-    "tristate",
     "menu",
     "source",
+    "modules",
+    "tristate",
+    "help",
+    "menuconfig",
     "comment",
     "bool",
-    "menuconfig",
     "boolean",
     "env",
     "subsource",
-    "visible",
     "prompt",
+    "visible",
     "depends",
     "mainmenu"
   };
@@ -172,59 +174,61 @@ kconf_id_lookup (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 33,
+      TOTAL_KEYWORDS = 34,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 14,
       MIN_HASH_VALUE = 2,
-      MAX_HASH_VALUE = 48
+      MAX_HASH_VALUE = 53
     };
 
   static struct kconf_id wordlist[] =
     {
       {-1}, {-1},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2,		T_ON,		TF_PARAM},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3,		T_TYPE,		TF_COMMAND, S_HEX},
-      {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5,		T_ENDIF,	TF_COMMAND},
+      {-1}, {-1}, {-1},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6,		T_OPTION,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_ENDMENU,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_TYPE,		TF_COMMAND, S_EXECUTE},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8,	T_OPTIONAL,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9,	T_ENDCHOICE,	TF_COMMAND},
       {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,		T_CHOICE,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10,		T_ENDIF,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,		T_TYPE,		TF_COMMAND, S_STRING},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_ENDMENU,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,		T_TYPE,		TF_COMMAND, S_HEX},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14,	T_ENDCHOICE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15,		T_RANGE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,		T_CHOICE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
       {-1}, {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,		T_CONFIG,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21,		T_CONFIG,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
       {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19,	T_OPT_DEFCONFIG_LIST,TF_OPTION},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24,	T_OPT_DEFCONFIG_LIST,TF_OPTION},
       {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21,		T_TYPE,		TF_COMMAND, S_STRING},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,		T_IF,		TF_COMMAND|TF_PARAM},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23,		T_TYPE,		TF_COMMAND, S_INT},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24,		T_HELP,		TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25,		T_RANGE,	TF_COMMAND},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26,		T_SELECT,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_OPT_MODULES,	TF_OPTION},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,	T_TYPE,		TF_COMMAND, S_TRISTATE},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,		T_IF,		TF_COMMAND|TF_PARAM},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,		T_TYPE,		TF_COMMAND, S_INT},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29,		T_MENU,		TF_COMMAND},
       {-1},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31,		T_SOURCE,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_COMMENT,	TF_COMMAND},
-      {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_OPT_MODULES,	TF_OPTION},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33,	T_TYPE,		TF_COMMAND, S_TRISTATE},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34,		T_HELP,		TF_COMMAND},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35,	T_MENUCONFIG,	TF_COMMAND},
       {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str38,		T_OPT_ENV,	TF_OPTION},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39,	T_SUBSOURCE,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_COMMENT,	TF_COMMAND},
+      {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
       {-1}, {-1},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42,	T_VISIBLE,	TF_COMMAND},
-      {-1}, {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43,		T_OPT_ENV,	TF_OPTION},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str44,	T_SUBSOURCE,	TF_COMMAND},
+      {-1},
       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46,		T_PROMPT,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47,	T_DEPENDS,	TF_COMMAND},
-      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48,	T_MAINMENU,	TF_COMMAND}
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47,	T_VISIBLE,	TF_COMMAND},
+      {-1}, {-1}, {-1}, {-1},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str52,	T_DEPENDS,	TF_COMMAND},
+      {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str53,	T_MAINMENU,	TF_COMMAND}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff --git a/support/kconfig/zconf.tab.c_shipped b/support/kconfig/zconf.tab.c_shipped
index 347c5a5..e5be5fb 100644
--- a/support/kconfig/zconf.tab.c_shipped
+++ b/support/kconfig/zconf.tab.c_shipped
@@ -2447,6 +2447,9 @@ static void print_symbol(FILE *out, struct menu *menu)
 	case S_STRING:
 		fputs("  string\n", out);
 		break;
+	case S_EXECUTE:
+		fputs("  execute\n", out);
+		break;
 	case S_INT:
 		fputs("  integer\n", out);
 		break;
diff --git a/support/kconfig/zconf.y b/support/kconfig/zconf.y
index a3ca573..de7c498 100644
--- a/support/kconfig/zconf.y
+++ b/support/kconfig/zconf.y
@@ -648,6 +648,9 @@ static void print_symbol(FILE *out, struct menu *menu)
 	case S_STRING:
 		fputs("  string\n", out);
 		break;
+	case S_EXECUTE:
+		fputs("  execute\n", out);
+		break;
 	case S_INT:
 		fputs("  integer\n", out);
 		break;
-- 
1.6.4.1




More information about the buildroot mailing list