diff options
Diffstat (limited to 'scripts/kconfig/menu.c')
| -rw-r--r-- | scripts/kconfig/menu.c | 28 | 
1 files changed, 26 insertions, 2 deletions
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 059a2465c57..203632cc30b 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -38,7 +38,7 @@ static void prop_warn(struct property *prop, const char *fmt, ...)  	va_end(ap);  } -void menu_init(void) +void _menu_init(void)  {  	current_entry = current_menu = &rootmenu;  	last_entry_ptr = &rootmenu.list; @@ -197,7 +197,7 @@ static void sym_check_prop(struct symbol *sym)  			if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&  			    prop->expr->type != E_SYMBOL)  				prop_warn(prop, -				    "default for config symbol '%'" +				    "default for config symbol '%s'"  				    " must be a single symbol", sym->name);  			break;  		case P_SELECT: @@ -390,6 +390,13 @@ void menu_finalize(struct menu *parent)  	}  } +bool menu_has_prompt(struct menu *menu) +{ +	if (!menu->prompt) +		return false; +	return true; +} +  bool menu_is_visible(struct menu *menu)  {  	struct menu *child; @@ -398,6 +405,7 @@ bool menu_is_visible(struct menu *menu)  	if (!menu->prompt)  		return false; +  	sym = menu->sym;  	if (sym) {  		sym_calc_value(sym); @@ -407,12 +415,14 @@ bool menu_is_visible(struct menu *menu)  	if (visible != no)  		return true; +  	if (!sym || sym_get_tristate_value(menu->sym) == no)  		return false;  	for (child = menu->list; child; child = child->next)  		if (menu_is_visible(child))  			return true; +  	return false;  } @@ -515,6 +525,20 @@ void get_symbol_str(struct gstr *r, struct symbol *sym)  	str_append(r, "\n\n");  } +struct gstr get_relations_str(struct symbol **sym_arr) +{ +	struct symbol *sym; +	struct gstr res = str_new(); +	int i; + +	for (i = 0; sym_arr && (sym = sym_arr[i]); i++) +		get_symbol_str(&res, sym); +	if (!i) +		str_append(&res, _("No matches found.\n")); +	return res; +} + +  void menu_get_ext_help(struct menu *menu, struct gstr *help)  {  	struct symbol *sym = menu->sym;  |