From 03d9429468c752c8c89f7cec72dcc9f08e86f68b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 16 Jul 2019 18:48:15 +0200 Subject: [PATCH] firstboot: actually accept empty input to mean skip We'd loop if the input was empty. We need to return to the caller. --- src/basic/terminal-util.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 76d6d1a20c9..bd4944c9684 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -200,38 +200,33 @@ int ask_char(char *ret, const char *replies, const char *fmt, ...) { } int ask_string(char **ret, const char *text, ...) { + _cleanup_free_ char *line = NULL; + va_list ap; int r; assert(ret); assert(text); - for (;;) { - _cleanup_free_ char *line = NULL; - va_list ap; + if (colors_enabled()) + fputs(ANSI_HIGHLIGHT, stdout); - if (colors_enabled()) - fputs(ANSI_HIGHLIGHT, stdout); + va_start(ap, text); + vprintf(text, ap); + va_end(ap); - va_start(ap, text); - vprintf(text, ap); - va_end(ap); + if (colors_enabled()) + fputs(ANSI_NORMAL, stdout); - if (colors_enabled()) - fputs(ANSI_NORMAL, stdout); + fflush(stdout); - fflush(stdout); - - r = read_line(stdin, LONG_LINE_MAX, &line); - if (r < 0) - return r; - if (r == 0) - return -EIO; + r = read_line(stdin, LONG_LINE_MAX, &line); + if (r < 0) + return r; + if (r == 0) + return -EIO; - if (!isempty(line)) { - *ret = TAKE_PTR(line); - return 0; - } - } + *ret = TAKE_PTR(line); + return 0; } int reset_terminal_fd(int fd, bool switch_to_text) { -- 2.47.3