From 7ffc8a54188f155dea60f56b91668574a4eead18 Mon Sep 17 00:00:00 2001 From: Edward Tomasz Napierala Date: Sun, 7 May 2017 17:21:22 +0000 Subject: [PATCH] Make resizewin(1) discard the terminal queues, to lower the chance for "unable to parse response" error which happens when youre typing too fast for the machine you're running it on. Reviewed by: cem, Daniel O'Connor MFC after: 2 weeks Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D10624 --- usr.bin/resizewin/resizewin.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/usr.bin/resizewin/resizewin.c b/usr.bin/resizewin/resizewin.c index 89a2b1bc6374..6ab2778caaa4 100644 --- a/usr.bin/resizewin/resizewin.c +++ b/usr.bin/resizewin/resizewin.c @@ -52,7 +52,7 @@ main(__unused int argc, __unused char **argv) { struct termios old, new; struct winsize w; - int ret, fd, cnt, error; + int ret, fd, cnt, error, what; char data[20]; struct timeval then, now; @@ -71,6 +71,12 @@ main(__unused int argc, __unused char **argv) if (tcsetattr(fd, TCSANOW, &new) == -1) exit(1); + /* Discard input received so far */ + what = FREAD | FWRITE; + error = ioctl(fd, TIOCFLUSH, &what); + if (error != 0) + warn("ioctl"); + if (write(fd, query, sizeof(query)) != sizeof(query)) { error = 1; goto out;