Commit bce590f1 authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

kconfig: add sym_get_prompt_menu() helper function



Split out the code that retrieves the menu entry with a prompt, so it
can be reused in other functions.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 929ce506
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ bool sym_string_valid(struct symbol *sym, const char *newval);
bool sym_string_within_range(struct symbol *sym, const char *str);
bool sym_set_string_value(struct symbol *sym, const char *newval);
bool sym_is_changeable(const struct symbol *sym);
struct menu *sym_get_prompt_menu(const struct symbol *sym);
struct menu *sym_get_choice_menu(const struct symbol *sym);
const char * sym_get_string_value(struct symbol *sym);

+19 −7
Original line number Diff line number Diff line
@@ -70,6 +70,24 @@ const char *sym_type_name(enum symbol_type type)
	return "???";
}

/**
 * sym_get_prompt_menu - get the menu entry with a prompt
 *
 * @sym: a symbol pointer
 *
 * Return: the menu entry with a prompt.
 */
struct menu *sym_get_prompt_menu(const struct symbol *sym)
{
	struct menu *m;

	list_for_each_entry(m, &sym->menus, link)
		if (m->prompt)
			return m;

	return NULL;
}

/**
 * sym_get_choice_menu - get the parent choice menu if present
 *
@@ -80,18 +98,12 @@ const char *sym_type_name(enum symbol_type type)
struct menu *sym_get_choice_menu(const struct symbol *sym)
{
	struct menu *menu = NULL;
	struct menu *m;

	/*
	 * Choice members must have a prompt. Find a menu entry with a prompt,
	 * and assume it resides inside a choice block.
	 */
	list_for_each_entry(m, &sym->menus, link)
		if (m->prompt) {
			menu = m;
			break;
		}

	menu = sym_get_prompt_menu(sym);
	if (!menu)
		return NULL;