[U-Boot] [PATCH 2/2] menu: Return an error code if Ctrl-C is pressed

Simon Glass sjg at chromium.org
Fri May 8 00:23:11 CEST 2015


Hi Tuomas,

On 7 May 2015 at 12:29, Tuomas Tynkkynen <tuomas.tynkkynen at iki.fi> wrote:
> 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 at iki.fi>
> ---
>  common/menu.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git common/menu.c common/menu.c
> index e81c074..eda96d6 100644
> --- common/menu.c
> +++ common/menu.c
> @@ -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);
>                         }
> --
> 2.4.0
>

Reviewed-by: Simon Glass <sjg at chromium.org>

If you feel like doing another patch, you could update the
cli_readline_into_buffer() and cread_line() to describe the meaning of
the return values (-1 and -2). Even better if you can use -EINTR and
-ETIMEDOUT.

Regards,
Simon


More information about the U-Boot mailing list