|
|
coherent
sh/Changes
steve's sh source change log, begun 6/19/92
Fri Jun 19 22:21:10 1992 PDT
Makefile
Added -DYYMAXDEPTH=300 to y.tab.c compilation.
Comeau C++ required a greater stack depth for its script.
exec3.c
Added code to allow redirection with built-in "eval".
Deleted code to execute ':' comment lines with the empty
function s_colon, this now happens in yylex().
In s_read(), set readflag before yylex() to tell it not
to ignore comments.
Minor cosmetic changes.
extern.c
Added global readflag, used by s_read() and yylex().
lex.c
In yylex(), the previous code ate '#'-delimited comments
to the following newline. Now it eats both '#'- and ':'-
delimited comments, unless doing a "read".
Minor cosmetic changes.
sh.h
Added extern readflag, added #include <string.h> and deleted
string function declarations, defined index() and rindex()
as macros calling strchr() and strrchr().
Wed Jun 24 16:53:48 1992 PDT
eval.c
V3.2.9: Improved handling of nested shell variable evaluation:
${x-${y}foo}
now does something reasonable.
Wed Jul 1 09:15:59 1992 PDT
exec3.c
lex.c
V3.3.0: Retracted above change for ':'-delimited comments,
because e.g. "echo foo : 2 3 4" should echo ": 2 3 4".
Wed Jul 1 15:36:07 1992 PDT
eval.c
V3.3.1: In evalvar(), if a variable name does not begin
with a legal character, evalvar() now realizes
that it is not a variable and passes it unchanged
instead of complaining. Thus,
echo "foo.$/"
used to produce an "Illegal variable name" error,
now it prints
foo.$/
This is desirable for AT&T compatability,
says Gary Comeau via norm.
tab.c
Added comments to identify table positions.
Thu Jul 9 14:09:12 1992 PDT
eval.c
V3.3.2: In evalvar(), added code so that e.g.
x=${FOO-"zap"}
strips off the quotes on "zap", as requested by hal.
The way this evalvar() code works in general is disgraceful.
exec3.c
var.c
Changed getwd() to _getwd(), in keeping with libc change.
Wed Jul 29 12:22:18 1992 PDT
exec3.c
V3.3.3: Builtin with redirection such as
eval /lib/cpp '$1' >baz
did not return correct exit status. The parent
process now waits for the child to exit and takes its status.
Fri Aug 21 09:48:41 1992 PDT
Makefile
V3.3.4: removed -VSINU from CFLAGS.
sh.h
Redefined NODE so that -VSINU compilation is no longer needed.
Fri Aug 28 12:16:29 1992 PDT
eval.c
V3.3.5: changed the handling of shell variable assignments
of the form
a=${b=c}
and the related forms with "-?+" instead of "=".
First, an optional ':' before the "-=+" is now ignored, so
a=${b:=c}
now works (as in Unix) rather than complaining
about an illegal variable name.
Second, a variable set with an empty value (e.g. "foo=")
is now regarded as unset rather than set, so that e.g.
foo=
baz=${foo=whatever}
used to set baz to the (empty) value of foo,
but sets baz (and foo) to the value "whatever".
This is consistent with Interactive Unix /bin/sh.
Mon Aug 31 11:44:57 1992 PDT
exec3.c
V3.3.6: in s_break, delete reset() after
"break" or "continue" error message. Previously,
"break" or "continue" outside of a loop terminated
shell execution; now the error is nonfatal.
This is consistent with SV /bin/sh, according to vlad.
Mon Aug 31 12:30:03 1992 PDT
main.c
V3.3.7: case RUEXITS, changed to make "${foo?whatever}"
exit as it should when foo is not set.
User Richard Lindner reported the bug,
I broke sh when I made a change requested by piggy.
Mon Sep 28 15:04:19 1992 PDT
V3.3.8: relinked with new libc.a containing execve()
changes to understand interpreter script specifications.
No change to sh source per se.
Thu Oct 1 17:24:57 1992 PDT
eval.c
V3.3.9: in evalcom(), save slret and restore it in cloned
child process so that grave commands referencing $? work
as expected.
Fri Oct 2 17:19:19 1992 PDT
exec1.c
V3.4.0: in comscom(), case FASSG and case FIORS|FASSG,
set slret to 0 if command is just an assignment. Thus,
false; x1=$?; x2=$?
now sets x2 to 0 rather than 1.
Wed Oct 28 13:55:04 1992 PST
exec1.c
V3.4.1: in pipescom(), add conditionals to test pipev[0|1]
before closing it. If fd 0 or 1 is closed before the dup2
call, the pipe call can set pipev[01] to 0 or 1, and the
close (intended to close the extra fd) can actually close
the working fd. This fixes a bug reported by user Blatchey.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.