|
|
1.1 root 1: sh/Changes
2: steve's sh source change log, begun 6/19/92
3:
4: Fri Jun 19 22:21:10 1992 PDT
5: Makefile
6: Added -DYYMAXDEPTH=300 to y.tab.c compilation.
7: Comeau C++ required a greater stack depth for its script.
8: exec3.c
9: Added code to allow redirection with built-in "eval".
10: Deleted code to execute ':' comment lines with the empty
11: function s_colon, this now happens in yylex().
12: In s_read(), set readflag before yylex() to tell it not
13: to ignore comments.
14: Minor cosmetic changes.
15: extern.c
16: Added global readflag, used by s_read() and yylex().
17: lex.c
18: In yylex(), the previous code ate '#'-delimited comments
19: to the following newline. Now it eats both '#'- and ':'-
20: delimited comments, unless doing a "read".
21: Minor cosmetic changes.
22: sh.h
23: Added extern readflag, added #include <string.h> and deleted
24: string function declarations, defined index() and rindex()
25: as macros calling strchr() and strrchr().
26:
27: Wed Jun 24 16:53:48 1992 PDT
28: eval.c
29: V3.2.9: Improved handling of nested shell variable evaluation:
30: ${x-${y}foo}
31: now does something reasonable.
32:
33: Wed Jul 1 09:15:59 1992 PDT
34: exec3.c
35: lex.c
36: V3.3.0: Retracted above change for ':'-delimited comments,
37: because e.g. "echo foo : 2 3 4" should echo ": 2 3 4".
38:
39: Wed Jul 1 15:36:07 1992 PDT
40: eval.c
41: V3.3.1: In evalvar(), if a variable name does not begin
42: with a legal character, evalvar() now realizes
43: that it is not a variable and passes it unchanged
44: instead of complaining. Thus,
45: echo "foo.$/"
46: used to produce an "Illegal variable name" error,
47: now it prints
48: foo.$/
49: This is desirable for AT&T compatability,
50: says Gary Comeau via norm.
51: tab.c
52: Added comments to identify table positions.
53:
54: Thu Jul 9 14:09:12 1992 PDT
55: eval.c
56: V3.3.2: In evalvar(), added code so that e.g.
57: x=${FOO-"zap"}
58: strips off the quotes on "zap", as requested by hal.
59: The way this evalvar() code works in general is disgraceful.
60: exec3.c
61: var.c
62: Changed getwd() to _getwd(), in keeping with libc change.
63:
64: Wed Jul 29 12:22:18 1992 PDT
65: exec3.c
66: V3.3.3: Builtin with redirection such as
67: eval /lib/cpp '$1' >baz
68: did not return correct exit status. The parent
69: process now waits for the child to exit and takes its status.
70:
71: Fri Aug 21 09:48:41 1992 PDT
72: Makefile
73: V3.3.4: removed -VSINU from CFLAGS.
74: sh.h
75: Redefined NODE so that -VSINU compilation is no longer needed.
76:
77: Fri Aug 28 12:16:29 1992 PDT
78: eval.c
79: V3.3.5: changed the handling of shell variable assignments
80: of the form
81: a=${b=c}
82: and the related forms with "-?+" instead of "=".
83: First, an optional ':' before the "-=+" is now ignored, so
84: a=${b:=c}
85: now works (as in Unix) rather than complaining
86: about an illegal variable name.
87: Second, a variable set with an empty value (e.g. "foo=")
88: is now regarded as unset rather than set, so that e.g.
89: foo=
90: baz=${foo=whatever}
91: used to set baz to the (empty) value of foo,
92: but sets baz (and foo) to the value "whatever".
93: This is consistent with Interactive Unix /bin/sh.
94:
95: Mon Aug 31 11:44:57 1992 PDT
96: exec3.c
97: V3.3.6: in s_break, delete reset() after
98: "break" or "continue" error message. Previously,
99: "break" or "continue" outside of a loop terminated
100: shell execution; now the error is nonfatal.
101: This is consistent with SV /bin/sh, according to vlad.
102:
103: Mon Aug 31 12:30:03 1992 PDT
104: main.c
105: V3.3.7: case RUEXITS, changed to make "${foo?whatever}"
106: exit as it should when foo is not set.
107: User Richard Lindner reported the bug,
108: I broke sh when I made a change requested by piggy.
109:
110: Mon Sep 28 15:04:19 1992 PDT
111: V3.3.8: relinked with new libc.a containing execve()
112: changes to understand interpreter script specifications.
113: No change to sh source per se.
114:
115: Thu Oct 1 17:24:57 1992 PDT
116: eval.c
117: V3.3.9: in evalcom(), save slret and restore it in cloned
118: child process so that grave commands referencing $? work
119: as expected.
120:
121: Fri Oct 2 17:19:19 1992 PDT
122: exec1.c
123: V3.4.0: in comscom(), case FASSG and case FIORS|FASSG,
124: set slret to 0 if command is just an assignment. Thus,
125: false; x1=$?; x2=$?
126: now sets x2 to 0 rather than 1.
127:
128: Wed Oct 28 13:55:04 1992 PST
129: exec1.c
130: V3.4.1: in pipescom(), add conditionals to test pipev[0|1]
131: before closing it. If fd 0 or 1 is closed before the dup2
132: call, the pipe call can set pipev[01] to 0 or 1, and the
133: close (intended to close the extra fd) can actually close
134: 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.