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