[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] qemu-io: fix EOF Ctrl-D handling in qemu-io readlin
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH] qemu-io: fix EOF Ctrl-D handling in qemu-io readline code |
Date: |
Wed, 6 Dec 2017 11:57:26 +0000 |
qemu-io puts the TTY into non-canonical mode, which means no EOF processing is
done and thus getchar() will never return the EOF constant. Instead we have to
check for an explicit Ctrl-D, aka 0x4, to detect EOF and exit the qemu-io
shell. This fixes the regression that prevented Ctrl-D from triggering an exit
of qemu-io that has existed since readline was first added in
commit 0cf17e181798063c3824c8200ba46f25f54faa1a
Author: Stefan Hajnoczi <address@hidden>
Date: Thu Nov 14 11:54:17 2013 +0100
qemu-io: use readline.c
Signed-off-by: Daniel P. Berrange <address@hidden>
---
qemu-io.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/qemu-io.c b/qemu-io.c
index c70bde3eb1..2ea0bfbaf8 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -322,7 +322,9 @@ static char *fetchline_readline(void)
readline_start(readline_state, get_prompt(), 0, readline_func, &line);
while (!line) {
int ch = getchar();
- if (ch == EOF) {
+ /* In non-canon tty mode we get 0x4 (Ctrl-D), not the stdio "EOF"
+ * constant */
+ if (ch == 0x4) {
break;
}
readline_handle_byte(readline_state, ch);
--
2.14.3