4.[123]bsd csh script handling bug (with fix?)
Arthur David Olson
ado at elsie.UUCP
Tue Apr 1 06:42:34 AEST 1986
Index: bin/csh/sh.err.c
Description:
csh mishandles "Command not found" errors in scripts.
Repeat-By:
Typing the command
repeat 25 echo oops 6789012345678901234567890123456789012345678901 > file
and then either
csh file
or
cat file | csh
and noting the output:
oops: Command not found.
789012345678901: Command not found.
where "780912345678901" turns out to be what's stored in "file"
starting at the 1025th byte.
Fix:
Move a misplaced "btoeof" call in "sh.err.c", as shown below.
(Well. . .actually you'll want to wait and watch the next couple
of weeks worth of followup postings before doing so. And even then,
you'll want to be sure that you can readily back out the change.)
Changes are conditioned on OLDVERSION; these changes are for the 4.1bsd
version of the code.
...
errspl = 0;
#ifdef OLDVERSION
/*
* Reset the state of the input.
* This buffered seek to end of file will also
* clear the while/foreach stack.
*/
btoeof();
#endif /* OLDVERSION */
/*
* Go away if -e or we are a child shell
*/
if (exiterr || child)
exit(1);
#ifndef OLDVERSION
btoeof();
#endif /* !OLDVERSION */
setq("status", onev, &shvhed);
...
--
Bugs is a Warner Brothers trademark.
Bug is a Volkswagen trademark.
--
UUCP: ..decvax!seismo!elsie!ado ARPA: elsie!ado at seismo.ARPA
DEC, VAX, Elsie & Ado are Digital, Borden & Shakespeare trademarks.
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list