summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-06 17:52:23 +0300
committerTom Rini <trini@konsulko.com>2023-01-16 22:14:11 +0300
commit5712976b26f7865f348aba51c9fa367c456e1795 (patch)
treedb46234be425f7f86318957feac2896f8bdc19ec
parent2da4a15e7e947d2d304ec1ba392556c3e0393e13 (diff)
downloadu-boot-5712976b26f7865f348aba51c9fa367c456e1795.tar.xz
menu: Update bootmenu_autoboot_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--common/menu.c16
-rw-r--r--include/menu.h7
3 files changed, 13 insertions, 12 deletions
diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c
index 1a14e8a190..086d04148a 100644
--- a/cmd/bootmenu.c
+++ b/cmd/bootmenu.c
@@ -93,7 +93,7 @@ static char *bootmenu_choice_entry(void *data)
while (1) {
if (menu->delay >= 0) {
/* Autoboot was not stopped */
- bootmenu_autoboot_loop(menu, &key, &esc);
+ key = bootmenu_autoboot_loop(menu, &esc);
} else {
/* Some key was pressed, so autoboot was stopped */
bootmenu_loop(menu, &key, &esc);
diff --git a/common/menu.c b/common/menu.c
index a245c5a9c6..bafc8470d7 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -425,9 +425,9 @@ int menu_destroy(struct menu *m)
return 1;
}
-void bootmenu_autoboot_loop(struct bootmenu_data *menu,
- enum bootmenu_key *key, int *esc)
+enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, int *esc)
{
+ enum bootmenu_key key = BKEY_NONE;
int i, c;
while (menu->delay > 0) {
@@ -446,16 +446,16 @@ void bootmenu_autoboot_loop(struct bootmenu_data *menu,
switch (c) {
case '\e':
*esc = 1;
- *key = BKEY_NONE;
+ key = BKEY_NONE;
break;
case '\r':
- *key = BKEY_SELECT;
+ key = BKEY_SELECT;
break;
case 0x3: /* ^C */
- *key = BKEY_QUIT;
+ key = BKEY_QUIT;
break;
default:
- *key = BKEY_NONE;
+ key = BKEY_NONE;
break;
}
@@ -471,7 +471,9 @@ void bootmenu_autoboot_loop(struct bootmenu_data *menu,
printf(ANSI_CURSOR_POSITION ANSI_CLEAR_LINE, menu->count + 5, 1);
if (menu->delay == 0)
- *key = BKEY_SELECT;
+ key = BKEY_SELECT;
+
+ return key;
}
void bootmenu_loop(struct bootmenu_data *menu,
diff --git a/include/menu.h b/include/menu.h
index 29b457921e..9f30a3c1ac 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -65,14 +65,13 @@ enum bootmenu_key {
* indicating that the current option should be chosen.
*
* @menu: Menu being processed
- * @key: Returns the code for the key the user pressed:
+ * @esc: Set to 1 if the escape key is pressed, otherwise not updated
+ * Returns: code for the key the user pressed:
* enter: KEY_SELECT
* Ctrl-C: KEY_QUIT
* anything else: KEY_NONE
- * @esc: Set to 1 if the escape key is pressed, otherwise not updated
*/
-void bootmenu_autoboot_loop(struct bootmenu_data *menu,
- enum bootmenu_key *key, int *esc);
+enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, int *esc);
/**
* bootmenu_loop() - handle waiting for a keypress when autoboot is disabled