CVS commit: src/bin/sh

"Robert Elz" <[email protected]> Tue, 4 Aug 2026 22:58:33 +0000
Newsgroups gmane.os.netbsd.devel.cvs
Message-ID <[email protected]>
Module Name:	src
Committed By:	kre
Date:		Tue Aug  4 22:58:33 UTC 2026

Modified Files:
	src/bin/sh: miscbltin.c sh.1

Log Message:
/bin/sh - builtin read command fixes (miscbltin.c)

This corrects a change made in the previous version, where
in addition to the intended change, making a read error be
treated differently than EOF, a change with unplanned
consequences was also made, to treat the EINTR read error
as a "try again" signal, rather than as a read error.
That meant that caught traps no longer interrupted the read,
and while that is how (some) other shells do it (like bash)
it was a change to how our shell does things.

So, now there is (in normal shells) a new -c (continue) option
to cause this behaviour, when given, a trapped signal will be
processed during the wait for input by the read built-in utility,
but not end the read.   When absent, the trap will still be processed
while the read is in progress, but will be treated as a read error
(and produce the special (>1) exit code 130.

While doing this, revert all these changes for SMALL shells, they
will return to being essentially identical to what they were
before the previous change.   No added -c option, no way to
continue a read if a trapped signal occurs, and a read I/O error
is the same as EOF (as is a trapped signal, EINTR).


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/bin/sh/miscbltin.c
cvs rdiff -u -r1.279 -r1.280 src/bin/sh/sh.1

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.