|
@@ -170,32 +170,6 @@ static inline struct menu_item *menu_item_by_key(struct menu *m,
|
|
|
return menu_items_iter(m, menu_item_key_match, item_key);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Wait for the user to hit a key according to the timeout set for the menu.
|
|
|
- * Returns 1 if the user hit a key, or 0 if the timeout expired.
|
|
|
- */
|
|
|
-static inline int menu_interrupted(struct menu *m)
|
|
|
-{
|
|
|
- if (!m->timeout)
|
|
|
- return 0;
|
|
|
-
|
|
|
- if (abortboot(m->timeout/10))
|
|
|
- return 1;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Checks whether or not the default menu item should be used without
|
|
|
- * prompting for a user choice. If the menu is set to always prompt, or the
|
|
|
- * user hits a key during the timeout period, return 0. Otherwise, return 1 to
|
|
|
- * indicate we should use the default menu item.
|
|
|
- */
|
|
|
-static inline int menu_use_default(struct menu *m)
|
|
|
-{
|
|
|
- return !m->prompt && !menu_interrupted(m);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Set *choice to point to the default item's data, if any default item was
|
|
|
* set, and returns 1. If no default item was set, returns -ENOENT.
|
|
@@ -231,7 +205,7 @@ static inline int menu_interactive_choice(struct menu *m, void **choice)
|
|
|
menu_display(m);
|
|
|
|
|
|
readret = readline_into_buffer("Enter choice: ", cbuf,
|
|
|
- m->timeout);
|
|
|
+ m->timeout / 10);
|
|
|
|
|
|
if (readret >= 0) {
|
|
|
choice_item = menu_item_by_key(m, cbuf);
|
|
@@ -240,10 +214,8 @@ static inline int menu_interactive_choice(struct menu *m, void **choice)
|
|
|
printf("%s not found\n", cbuf);
|
|
|
m->timeout = 0;
|
|
|
}
|
|
|
- } else {
|
|
|
- puts("^C\n");
|
|
|
- return -EINTR;
|
|
|
- }
|
|
|
+ } else
|
|
|
+ return menu_default_choice(m, choice);
|
|
|
}
|
|
|
|
|
|
*choice = choice_item->data;
|
|
@@ -300,7 +272,7 @@ int menu_get_choice(struct menu *m, void **choice)
|
|
|
if (!m || !choice)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (menu_use_default(m))
|
|
|
+ if (!m->prompt)
|
|
|
return menu_default_choice(m, choice);
|
|
|
|
|
|
return menu_interactive_choice(m, choice);
|