Index: usr.bin/resizewin/resizewin.c =================================================================== --- usr.bin/resizewin/resizewin.c +++ usr.bin/resizewin/resizewin.c @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -51,7 +52,7 @@ { struct termios old, new; struct winsize w; - int ret, fd, cnt, err; + int ret, fd, cnt, err, what; char data[20]; struct timeval then, now; @@ -70,6 +71,12 @@ if (tcsetattr(fd, TCSANOW, &new) == -1) exit(1); + /* Discard input received so far */ + what = FREAD | FWRITE; + err = ioctl(fd, TIOCFLUSH, &what); + if (err != 0) + warn("ioctl"); + if (write(fd, query, sizeof(query)) != sizeof(query)) { err = 1; goto out; @@ -87,8 +94,8 @@ gettimeofday(&now, NULL); timersub(&now, &then, &now); if (now.tv_sec >= 2) { - fprintf(stderr, "\n\n\nTimeout reading from terminal\n"); - fprintf(stderr, "Read %d bytes, %s\n", cnt, data); + warnx("timeout reading from terminal; " + "read %d bytes, \"%s\"", cnt, data); err = 1; goto out; } @@ -104,7 +111,7 @@ cnt++; if (cnt == sizeof(data) - 2) { - fprintf(stderr, "Response too long\n"); + warnx("response too long"); err = 1; goto out; } @@ -113,7 +120,7 @@ /* Parse */ if (sscanf(data, "\033[%hu;%huR", &w.ws_row, &w.ws_col) != 2) { err = 1; - fprintf(stderr, "Unable to parse response\n"); + warnx("unable to parse response"); goto out; }