From 0b8f3441aa032b69770f59cafc37087a6d505cee Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 20 Sep 2017 12:07:16 -0700 Subject: console_countdown: ignore errors in getchar() The getchar() call may return an error reported as a -1, e.g. when the console detects a RATP message and switches to RATP mode. In general it probably is a good idea to ignore these errors in the console countdown operation; and in particular for the RATP usecase, this also prevents from interfering with the countdown and menu just when switching one of the consoles to RATP mode. As a hint, this is what the standard console was printing due to this issue when the RATP console was activated: Hit m for menu or any other key to stop autoboot: [: missing `]' Signed-off-by: Aleksander Morgado Signed-off-by: Sascha Hauer --- common/console_countdown.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/common/console_countdown.c b/common/console_countdown.c index 03b9b33538..36da1ce577 100644 --- a/common/console_countdown.c +++ b/common/console_countdown.c @@ -47,12 +47,14 @@ int console_countdown(int timeout_s, unsigned flags, char *out_key) do { if (tstc()) { key = getchar(); - if (flags & CONSOLE_COUNTDOWN_ANYKEY) - goto out; - if (flags & CONSOLE_COUNTDOWN_RETURN && key == '\n') - goto out; - if (flags & CONSOLE_COUNTDOWN_CTRLC && key == 3) - goto out; + if (key >= 0) { + if (flags & CONSOLE_COUNTDOWN_ANYKEY) + goto out; + if (flags & CONSOLE_COUNTDOWN_RETURN && key == '\n') + goto out; + if (flags & CONSOLE_COUNTDOWN_CTRLC && key == 3) + goto out; + } key = 0; } if ((flags & CONSOLE_COUNTDOWN_EXTERN) && -- cgit v1.2.3