bin/129566: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Sun May 31 19:40:03 UTC 2009


The following reply was made to PR bin/129566; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: bin/129566: commit references a PR
Date: Sun, 31 May 2009 19:37:26 +0000 (UTC)

 Author: jilles
 Date: Sun May 31 19:37:06 2009
 New Revision: 193185
 URL: http://svn.freebsd.org/changeset/base/193185
 
 Log:
   sh: Make read's timeout (-t) apply to the entire line, not only the first
   character.
   
   This avoids using non-standard behaviour of the old (upto FreeBSD 7) TTY
   layer: it reprocesses the input queue when switching to canonical mode. The
   new TTY layer does not provide this functionality and so read -t worked
   very poorly (first character is not echoed, cannot be backspaced but is
   still read).
   
   This also agrees with what most other shells with read -t do.
   
   PR:		bin/129566
   Reviewed by:	stefanf
   Approved by:	ed (mentor)
 
 Modified:
   head/bin/sh/miscbltin.c
   head/bin/sh/sh.1
 
 Modified: head/bin/sh/miscbltin.c
 ==============================================================================
 --- head/bin/sh/miscbltin.c	Sun May 31 19:35:41 2009	(r193184)
 +++ head/bin/sh/miscbltin.c	Sun May 31 19:37:06 2009	(r193185)
 @@ -103,8 +103,6 @@ readcmd(int argc __unused, char **argv _
  	struct timeval tv;
  	char *tvptr;
  	fd_set ifds;
 -	struct termios told, tnew;
 -	int tsaved;
  
  	rflag = 0;
  	prompt = NULL;
 @@ -151,26 +149,11 @@ readcmd(int argc __unused, char **argv _
  
  	if (tv.tv_sec >= 0) {
  		/*
 -		 * See if we can disable input processing; this will
 -		 * not give the desired result if we are in a pipeline
 -		 * and someone upstream is still in line-by-line mode.
 -		 */
 -		tsaved = 0;
 -		if (tcgetattr(0, &told) == 0) {
 -			memcpy(&tnew, &told, sizeof(told));
 -			cfmakeraw(&tnew);
 -			tnew.c_iflag |= told.c_iflag & ICRNL;
 -			tcsetattr(0, TCSANOW, &tnew);
 -			tsaved = 1;
 -		}
 -		/*
  		 * Wait for something to become available.
  		 */
  		FD_ZERO(&ifds);
  		FD_SET(0, &ifds);
  		status = select(1, &ifds, NULL, NULL, &tv);
 -		if (tsaved)
 -			tcsetattr(0, TCSANOW, &told);
  		/*
  		 * If there's nothing ready, return an error.
  		 */
 
 Modified: head/bin/sh/sh.1
 ==============================================================================
 --- head/bin/sh/sh.1	Sun May 31 19:35:41 2009	(r193184)
 +++ head/bin/sh/sh.1	Sun May 31 19:37:06 2009	(r193185)
 @@ -32,7 +32,7 @@
  .\"	from: @(#)sh.1	8.6 (Berkeley) 5/4/95
  .\" $FreeBSD$
  .\"
 -.Dd October 7, 2006
 +.Dd May 31, 2009
  .Dt SH 1
  .Os
  .Sh NAME
 @@ -1949,7 +1949,7 @@ If the
  .Fl t
  option is specified and the
  .Ar timeout
 -elapses before any input is supplied,
 +elapses before a complete line of input is supplied,
  the
  .Ic read
  command will return an exit status of 1 without assigning any values.
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-bugs mailing list