firstboot: fix hang waiting for second Enter on input
The comment explains the reason: we'd wait for the second \n and then ungetc() it. Then the buffered \n would cause a problem when the next prompt was issued, so in effect it wasn't possible to answer the second question.
This commit is contained in:
parent
ecada8f25e
commit
ee41670ffb
|
@ -776,7 +776,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, funlockfile);
|
|||
int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret) {
|
||||
size_t n = 0, allocated = 0, count = 0;
|
||||
_cleanup_free_ char *buffer = NULL;
|
||||
int r;
|
||||
int r, tty = -1;
|
||||
|
||||
assert(f);
|
||||
|
||||
|
@ -850,6 +850,17 @@ int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret) {
|
|||
|
||||
count++;
|
||||
|
||||
if (eol != EOL_NONE) {
|
||||
/* If we are on a tty, we can't wait for more input. But we expect only
|
||||
* \n as the single EOL marker, so there is no need to wait. We check
|
||||
* this condition last to avoid isatty() check if not necessary. */
|
||||
|
||||
if (tty < 0)
|
||||
tty = isatty(fileno(f));
|
||||
if (tty > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (eol != EOL_NONE) {
|
||||
previous_eol |= eol;
|
||||
continue;
|
||||
|
|
Loading…
Reference in a new issue