Date: Mon, 8 May 2017 09:36:52 +0100 From: Edward Tomasz Napierala <trasz@FreeBSD.org> To: Jilles Tjoelker <jilles@stack.nl> Cc: Konstantin Belousov <kostikbel@gmail.com>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r317909 - head/usr.bin/resizewin Message-ID: <20170508083652.GB1437@brick> In-Reply-To: <20170507182802.GA5248@stack.nl> References: <201705071721.v47HLNWB049018@repo.freebsd.org> <20170507180143.GA1622@kib.kiev.ua> <20170507182802.GA5248@stack.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On 0507T2028, Jilles Tjoelker wrote: > On Sun, May 07, 2017 at 09:01:43PM +0300, Konstantin Belousov wrote: > > On Sun, May 07, 2017 at 05:21:23PM +0000, Edward Tomasz Napierala wrote: > > > Author: trasz > > > Date: Sun May 7 17:21:22 2017 > > > New Revision: 317909 > > > URL: https://svnweb.freebsd.org/changeset/base/317909 > > > > Log: > > > 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 <darius@dons.net.au> > > > MFC after: 2 weeks > > > Sponsored by: DARPA, AFRL > > > Differential Revision: https://reviews.freebsd.org/D10624 > > > > Modified: > > > head/usr.bin/resizewin/resizewin.c > > > > > > Modified: head/usr.bin/resizewin/resizewin.c > > > ============================================================================== > > > --- head/usr.bin/resizewin/resizewin.c Sun May 7 14:59:45 2017 (r317908) > > > +++ head/usr.bin/resizewin/resizewin.c Sun May 7 17:21:22 2017 (r317909) > > > @@ -52,7 +52,7 @@ main(__unused int argc, __unused char ** > > > { > > > 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 ** > > > if (tcsetattr(fd, TCSANOW, &new) == -1) > > > exit(1); > > > > > > + /* Discard input received so far */ > > > + what = FREAD | FWRITE; > > > + error = ioctl(fd, TIOCFLUSH, &what); > > This is correctly spelled tcflush(fd, TCIOFLUSH); > > Alternatively, the above TCSANOW could be changed to TCSAFLUSH. The > effect is slightly different in that pending output is drained instead > of discarded. > > In any case, the TIOCFLUSH ioctl is non-standard and should not be used > directly. I've changed it to use tcflush(3), as suggested by kib@, as it keeps the current (tested) behaviour. I'll try to investigate TCSANOW as well, thanks!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170508083652.GB1437>