menu: Return an error code if Ctrl-C is pressed
authorTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Thu, 7 May 2015 18:29:19 +0000 (21:29 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 27 May 2015 17:35:54 +0000 (13:35 -0400)
Previously, if the menu activated by the 'sysboot' command gets
interrupted by a Ctrl-C, the behaviour is as if the menu timeout was
reached - i.e. boot the default menu entry. This patch fixes that
so a Ctrl-C now terminates the command as the user would expect.

Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/menu.c

index e81c074f36c60a92e8223eed055e5b022c697ad8..eda96d68bc564e5cc45e1478fdd4b4aaad41a66f 100644 (file)
@@ -202,6 +202,9 @@ static inline int menu_interactive_choice(struct menu *m, void **choice)
                                choice_item = menu_item_by_key(m, cbuf);
                                if (!choice_item)
                                        printf("%s not found\n", cbuf);
+                       } else if (readret == -1)  {
+                               printf("<INTERRUPT>\n");
+                               return -EINTR;
                        } else {
                                return menu_default_choice(m, choice);
                        }