menu: Update bootmenu_loop() to return the code
authorSimon Glass <sjg@chromium.org>
Fri, 6 Jan 2023 14:52:24 +0000 (08:52 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 16 Jan 2023 19:14:11 +0000 (14:14 -0500)
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>
cmd/bootmenu.c
cmd/eficonfig.c
common/menu.c
include/menu.h

index 086d041..43553db 100644 (file)
@@ -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) {
index 8f246bc..96cb1a3 100644 (file)
@@ -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:
index bafc847..6842f54 100644 (file)
@@ -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;
 }
index 9f30a3c..8b9b362 100644 (file)
@@ -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__ */