Skip site navigation (1)Skip section navigation (2)
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>