@@ -727,7 +727,6 @@ static void stdio_read(void *opaque)
/* init terminal so that we can grab keys */
static struct termios oldtty;
static int old_fd0_flags;
-static bool stdio_allow_signal;
static void term_exit(void)
{
@@ -735,24 +734,22 @@ static void term_exit(void)
fcntl(0, F_SETFL, old_fd0_flags);
}
-static void qemu_chr_set_echo_stdio(CharDriverState *chr, bool echo)
+static void term_init(QemuOpts *opts)
{
struct termios tty;
tty = oldtty;
- if (!echo) {
- tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
+ tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
|INLCR|IGNCR|ICRNL|IXON);
- tty.c_oflag |= OPOST;
- tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
- tty.c_cflag &= ~(CSIZE|PARENB);
- tty.c_cflag |= CS8;
- tty.c_cc[VMIN] = 1;
- tty.c_cc[VTIME] = 0;
- }
+ tty.c_oflag |= OPOST;
+ tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
/* if graphical mode, we allow Ctrl-C handling */
- if (!stdio_allow_signal)
+ if (!qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC))
tty.c_lflag &= ~ISIG;
+ tty.c_cflag &= ~(CSIZE|PARENB);
+ tty.c_cflag |= CS8;
+ tty.c_cc[VMIN] = 1;
+ tty.c_cc[VTIME] = 0;
tcsetattr (0, TCSANOW, &tty);
}
@@ -781,12 +778,9 @@ static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
chr = qemu_chr_open_fd(0, 1);
chr->chr_close = qemu_chr_close_stdio;
- chr->chr_set_echo = qemu_chr_set_echo_stdio;
qemu_set_fd_handler2(0, stdio_read_poll, stdio_read, NULL, chr);
stdio_nb_clients++;
- stdio_allow_signal = qemu_opt_get_bool(opts, "signal",
- display_type != DT_NOGRAPHIC);
- qemu_chr_fe_set_echo(chr, false);
+ term_init(opts);
return chr;
}
This reverts commit bb002513a9bd2bff169c3d431a8f00c5b2e3aa99 because this code is not used in order that we use readline mode for '-qmp stdio'. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> --- qemu-char.c | 26 ++++++++++---------------- 1 files changed, 10 insertions(+), 16 deletions(-)