summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-06 08:52:24 -0600
committerTom Rini <trini@konsulko.com>2023-01-16 14:14:11 -0500
commitd0ca98dbd99c2534c9e96e4c226e52ab80f2248f (patch)
treeec90d07fc24388bde0ffb63d35da3f0cc5c77061
parent5712976b26f7865f348aba51c9fa367c456e1795 (diff)
menu: Update bootmenu_loop() to return the code
Use the return value to save having to pass around a pointer. This also resolves any ambiguity about what *key contains when the function is called. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--cmd/bootmenu.c2
-rw-r--r--cmd/eficonfig.c4
-rw-r--r--common/menu.c30
-rw-r--r--include/menu.h11
4 files changed, 24 insertions, 23 deletions
diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c
index 086d04148a..43553dbcc9 100644
--- a/cmd/bootmenu.c
+++ b/cmd/bootmenu.c
@@ -96,7 +96,7 @@ static char *bootmenu_choice_entry(void *data)
key = bootmenu_autoboot_loop(menu, &esc);
} else {
/* Some key was pressed, so autoboot was stopped */
- bootmenu_loop(menu, &key, &esc);
+ key = bootmenu_loop(menu, &esc);
}
switch (key) {
diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c
index 8f246bc271..96cb1a367f 100644
--- a/cmd/eficonfig.c
+++ b/cmd/eficonfig.c
@@ -191,7 +191,7 @@ static char *eficonfig_choice_entry(void *data)
struct efimenu *efi_menu = data;
while (1) {
- bootmenu_loop((struct bootmenu_data *)efi_menu, &key, &esc);
+ key = bootmenu_loop((struct bootmenu_data *)efi_menu, &esc);
switch (key) {
case BKEY_UP:
@@ -1868,7 +1868,7 @@ static efi_status_t eficonfig_choice_change_boot_order(struct efimenu *efi_menu)
struct eficonfig_entry *entry, *tmp;
while (1) {
- bootmenu_loop(NULL, &key, &esc);
+ key = bootmenu_loop(NULL, &esc);
switch (key) {
case BKEY_PLUS:
diff --git a/common/menu.c b/common/menu.c
index bafc8470d7..6842f5409d 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -476,9 +476,9 @@ enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, int *esc)
return key;
}
-void bootmenu_loop(struct bootmenu_data *menu,
- enum bootmenu_key *key, int *esc)
+enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu, int *esc)
{
+ enum bootmenu_key key = BKEY_NONE;
int c;
if (*esc == 1) {
@@ -505,17 +505,17 @@ void bootmenu_loop(struct bootmenu_data *menu,
/* First char of ANSI escape sequence '\e' */
if (c == '\e') {
*esc = 1;
- *key = BKEY_NONE;
+ key = BKEY_NONE;
}
break;
case 1:
/* Second char of ANSI '[' */
if (c == '[') {
*esc = 2;
- *key = BKEY_NONE;
+ key = BKEY_NONE;
} else {
/* Alone ESC key was pressed */
- *key = BKEY_QUIT;
+ key = BKEY_QUIT;
*esc = (c == '\e') ? 1 : 0;
}
break;
@@ -524,7 +524,7 @@ void bootmenu_loop(struct bootmenu_data *menu,
/* Third char of ANSI (number '1') - optional */
if (*esc == 2 && c == '1') {
*esc = 3;
- *key = BKEY_NONE;
+ key = BKEY_NONE;
break;
}
@@ -532,31 +532,33 @@ void bootmenu_loop(struct bootmenu_data *menu,
/* ANSI 'A' - key up was pressed */
if (c == 'A')
- *key = BKEY_UP;
+ key = BKEY_UP;
/* ANSI 'B' - key down was pressed */
else if (c == 'B')
- *key = BKEY_DOWN;
+ key = BKEY_DOWN;
/* other key was pressed */
else
- *key = BKEY_NONE;
+ key = BKEY_NONE;
break;
}
/* enter key was pressed */
if (c == '\r')
- *key = BKEY_SELECT;
+ key = BKEY_SELECT;
/* ^C was pressed */
if (c == 0x3)
- *key = BKEY_QUIT;
+ key = BKEY_QUIT;
if (c == '+')
- *key = BKEY_PLUS;
+ key = BKEY_PLUS;
if (c == '-')
- *key = BKEY_MINUS;
+ key = BKEY_MINUS;
if (c == ' ')
- *key = BKEY_SPACE;
+ key = BKEY_SPACE;
+
+ return key;
}
diff --git a/include/menu.h b/include/menu.h
index 9f30a3c1ac..8b9b36214f 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -83,7 +83,10 @@ enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, int *esc);
* character is recognised
*
* @menu: Menu being processed
- * @key: Returns the code for the key the user pressed:
+ * @esc: On input, a non-zero value indicates that an escape sequence has
+ * resulted in that many characters so far. On exit this is updated to the
+ * new number of characters
+ * Returns: code for the key the user pressed:
* enter: BKEY_SELECT
* Ctrl-C: BKEY_QUIT
* Up arrow: BKEY_UP
@@ -92,11 +95,7 @@ enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, int *esc);
* Plus: BKEY_PLUS
* Minus: BKEY_MINUS
* Space: BKEY_SPACE
- * @esc: On input, a non-zero value indicates that an escape sequence has
- * resulted in that many characters so far. On exit this is updated to the
- * new number of characters
*/
-void bootmenu_loop(struct bootmenu_data *menu,
- enum bootmenu_key *key, int *esc);
+enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu, int *esc);
#endif /* __MENU_H__ */