xref: /titanic_44/usr/src/lib/libshell/common/RELEASE93 (revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968)
1*da2e3ebdSchinThis is a list of changes that have been made since the 12/28/93 version
2*da2e3ebdSchinof ksh.
3*da2e3ebdSchin
4*da2e3ebdSchin1.	New features in 12/28/93b
5*da2e3ebdSchin	a.  If IFS contains two consecutive identical characters belonging
6*da2e3ebdSchin	    to the [:space:] class, then this character is treated as
7*da2e3ebdSchin	    a non-space delimiter so that each instance will delimit
8*da2e3ebdSchin	    a field.  For example, IFS=$'\t\t' will cause two consecutive
9*da2e3ebdSchin	    tabs to delimit a null field.
10*da2e3ebdSchin	b.  The getopts command has a -a name option that specifies a
11*da2e3ebdSchin	    name that will be used for usage messages.
12*da2e3ebdSchin
13*da2e3ebdSchin2.	New features in 12/28/93e
14*da2e3ebdSchin	a.  The math functions, atan2, hypot, fmod, and pow were added.
15*da2e3ebdSchin	b.  When a shared library is loaded, if the function lib_init()
16*da2e3ebdSchin	    is defined in the library, it is invoked the first time that
17*da2e3ebdSchin	    the library is loaded with builtin -f library.
18*da2e3ebdSchin
19*da2e3ebdSchin3.	New features in 12/28/93f
20*da2e3ebdSchin	a.  Hostnames in addition to host addresses can be given in
21*da2e3ebdSchin	    /dev/tcp/host/port virtual file names.
22*da2e3ebdSchin	b.  File name completion and expansion now quotes special
23*da2e3ebdSchin	    characters in file names from both emacs and vi edit modes.
24*da2e3ebdSchin
25*da2e3ebdSchin4.	New features in 12/28/93g
26*da2e3ebdSchin	a.  The pipefail option has been added.  With pipefail
27*da2e3ebdSchin	    enabled, a pipeline will not complete until all
28*da2e3ebdSchin	    commands are complete, and the return value will
29*da2e3ebdSchin	    be that of the last command to fail, or zero if
30*da2e3ebdSchin	    all complete successfully.
31*da2e3ebdSchin	b.  When an executable is found on a given path,
32*da2e3ebdSchin	    the appropriate library path variable is prepended
33*da2e3ebdSchin	    with a corresponding library directory.
34*da2e3ebdSchin5.	New features in 12/28/93h
35*da2e3ebdSchin	a.  The PATH search algorithm has been modified to look
36*da2e3ebdSchin	    for a file named .fpath in each bin directory and if
37*da2e3ebdSchin	    found, to search for functions in this directory if
38*da2e3ebdSchin	    it cannot find the command in that directory.
39*da2e3ebdSchin	b.  When performing pathname expansion, the shell checks
40*da2e3ebdSchin	    to see whether each directory it reads is case sensitive
41*da2e3ebdSchin	    or not, and performs the matching accordingly.
42*da2e3ebdSchin	c.  The %T format for printing formatted date/time.
43*da2e3ebdSchin6.	New features in 12/28/93i
44*da2e3ebdSchin	a.  Most of the built-in commands and ksh itself are now
45*da2e3ebdSchin            self documenting.  Running command --man will produce
46*da2e3ebdSchin            screen output.  Running command --html produces the
47*da2e3ebdSchin            man page in html format.
48*da2e3ebdSchin	b.  The getopts builtin can process command description
49*da2e3ebdSchin            strings to produce man pages.
50*da2e3ebdSchin
51*da2e3ebdSchin7.	Bugs fixed in 12/28/93a for default OPTIONS
52*da2e3ebdSchin	a.  An expansion bug which causes portions of a word after
53*da2e3ebdSchin	    a $((...)) expansion that contains a nested $var expansion
54*da2e3ebdSchin	    to be lost has been fixed.
55*da2e3ebdSchin	b.  A bug that caused a core dump when a script that did not
56*da2e3ebdSchin	    have PWD set and did a cd inside command substitution
57*da2e3ebdSchin	    has been fixed.
58*da2e3ebdSchin	c.  A bug which caused a core dump on some machines when
59*da2e3ebdSchin	    the LANG variable was assigned to has been fixed.
60*da2e3ebdSchin	d.  A bug which incorrectly handled set disciplines that
61*da2e3ebdSchin	    performed arithmetic evaluation when the discipline
62*da2e3ebdSchin	    was called from the arithmetic evaluator has been fixed.
63*da2e3ebdSchin	e.  A bug caused by an EXIT trap inside a function that
64*da2e3ebdSchin	    was executed in a subshell was fixed.
65*da2e3ebdSchin	f.  If foo is a function, and not a program, then command foo
66*da2e3ebdSchin	    now reports that foo isn't found rather than invoking foo.
67*da2e3ebdSchin	g.  The previous version incorrectly listed -A as an
68*da2e3ebdSchin	    invocation option.  The -A option is only for set.
69*da2e3ebdSchin	h.  A bug was fixed which caused ksh to loop when execution trace
70*da2e3ebdSchin	    was enabled and the PS4 prompt required command substitution.
71*da2e3ebdSchin	i.  A bug which could cause the job control switch character
72*da2e3ebdSchin	    to be disabled when a script that enabled monitor mode
73*da2e3ebdSchin	    terminated was fixed.
74*da2e3ebdSchin	j.  A bug in the macro expansion global replacement operator //,
75*da2e3ebdSchin	    when the pattern began with a [ or +( has been fixed.
76*da2e3ebdSchin	k.  A bug which prevented ~ expansion from occurring when
77*da2e3ebdSchin	    it was terminated with a colon inside an assignment
78*da2e3ebdSchin	    has been fixed.
79*da2e3ebdSchin	l.  A bug in the dot command which prevented autoload functions
80*da2e3ebdSchin	    from working has been fixed.
81*da2e3ebdSchin	m.  A bug which caused a variable to be unset if the
82*da2e3ebdSchin	    its value were expanded inside a set discipline has
83*da2e3ebdSchin	    been fixed.
84*da2e3ebdSchin	n.  Whence -a now longer reports that a defined function
85*da2e3ebdSchin	    is undefined.
86*da2e3ebdSchin	o.  A bug on some systems in which $0 would be incorrect
87*da2e3ebdSchin	    in scripts invoked by name has been fixed.
88*da2e3ebdSchin	p.  Here documents with an empty body now work.
89*da2e3ebdSchin	1.  A bug which disabled argument passing and resetting
90*da2e3ebdSchin	    of options for a script invoked by name inside a
91*da2e3ebdSchin	    function has been fixed.
92*da2e3ebdSchin	r.  A bug in which an EXIT trap set the caller of a function
93*da2e3ebdSchin	    would be executed if a command called inside a function
94*da2e3ebdSchin	    was not found has been fixed.
95*da2e3ebdSchin	s.  A bug which allowed a script to trap signals that are
96*da2e3ebdSchin	    ignored at the time that the shell was invoked has
97*da2e3ebdSchin	    been fixed.
98*da2e3ebdSchin	t.  A bug which caused 2<&1- when applied to a shell built-in
99*da2e3ebdSchin	    to leave standard input closed has been fixed.
100*da2e3ebdSchin	u.  A bug which caused the shell to incorrectly parse
101*da2e3ebdSchin	    $() command substitutions with nested case statements
102*da2e3ebdSchin	    has been fixed.
103*da2e3ebdSchin
104*da2e3ebdSchin8.	Bugs fixed in 12/28/93b for default OPTIONS
105*da2e3ebdSchin	a.  A bug which caused unset RANDOM to dump core has been
106*da2e3ebdSchin	    fixed.
107*da2e3ebdSchin	b.  A bug which prevented return for terminating a profile
108*da2e3ebdSchin	    or ENV file has been fixed.
109*da2e3ebdSchin	c.  A bug which prevented standard input from being
110*da2e3ebdSchin	    directed to /dev/null for background jobs when
111*da2e3ebdSchin	    monitor mode was turned off has been fixed.
112*da2e3ebdSchin	d.  Statements of the form typeset -options var[expr]=value
113*da2e3ebdSchin	    did not perform substitutions on expr as expected.
114*da2e3ebdSchin	e.  A bug which prevented the shell from sending a HUP
115*da2e3ebdSchin	    signal to some background jobs that were not disowned
116*da2e3ebdSchin	    has been fixed.
117*da2e3ebdSchin	f.  A bug which allowed a script to trap signals that are
118*da2e3ebdSchin	    ignored at the time that the shell was invoked by exec
119*da2e3ebdSchin	    has been fixed.
120*da2e3ebdSchin	g.  A bug which could cause a core dump when a discipline
121*da2e3ebdSchin	    function was unset within a discipline was fixed.
122*da2e3ebdSchin	h.  The typeset builtin now accepts a first argument of
123*da2e3ebdSchin	    + or - for compatibility with ksh88.
124*da2e3ebdSchin	i.  For compatibility with ksh88, the results of expansions
125*da2e3ebdSchin	    of command arguments will treat the extended character
126*da2e3ebdSchin	    match characters ()|& as ordinary characters.
127*da2e3ebdSchin	j.  A bug which caused read to fail on a file that was
128*da2e3ebdSchin	    open for read/write with <> when the first operation
129*da2e3ebdSchin	    was print or printf has been fixed.
130*da2e3ebdSchin	k.  When a job is suspended, it is put on the top of
131*da2e3ebdSchin	    the job list as required by the POSIX standard.
132*da2e3ebdSchin	l.  The value of OPTARG when an option that required
133*da2e3ebdSchin	    an argument but didn't have one was incorrect in the
134*da2e3ebdSchin	    case the the option string began with a :.
135*da2e3ebdSchin	m.  A bug which caused the terminal to get into a bad
136*da2e3ebdSchin	    state with some KEYBD traps in vi-mode has been fixed.
137*da2e3ebdSchin	n.  A bug which caused an invalid trap to cause a script
138*da2e3ebdSchin	    to terminate, rather than just return an error, has
139*da2e3ebdSchin	    been fixed.
140*da2e3ebdSchin	o.  Backreferencing sub-expressions in patterns and replacement
141*da2e3ebdSchin	    strings now works.
142*da2e3ebdSchin	p.  A bug in chmod which caused the -R option to fail has
143*da2e3ebdSchin	    been fixed.
144*da2e3ebdSchin
145*da2e3ebdSchin9.	Bugs fixed in 12/28/93c for default OPTIONS
146*da2e3ebdSchin	a.  The expansion of "$@" was incorrect when $1 was the null
147*da2e3ebdSchin	    string.
148*da2e3ebdSchin	b.  A bug which could incorrectly report a syntax error in
149*da2e3ebdSchin	    a backquoted expression when a $ was preceded by \\
150*da2e3ebdSchin	    has been fixed.
151*da2e3ebdSchin	c.  A bug which prevented the shell from exiting after
152*da2e3ebdSchin	    reporting an error when failing to open a script
153*da2e3ebdSchin	    has been fixed.
154*da2e3ebdSchin	d.  A bug that could lead to memory corruption when a
155*da2e3ebdSchin	    large here document that required parameter or command
156*da2e3ebdSchin	    substitution was expanded has been fixed.
157*da2e3ebdSchin	e.  A bug that could cause a core dump on some systems
158*da2e3ebdSchin	    after ksh detected an error when reading a function
159*da2e3ebdSchin	    has been fixed.
160*da2e3ebdSchin	f.  A bug which could cause a coprocess to hang when
161*da2e3ebdSchin	    reading from a process that has terminated has been fixed.
162*da2e3ebdSchin	g.  A bug which caused a script to terminate when set -e
163*da2e3ebdSchin	    was on and the first command of and && or || list
164*da2e3ebdSchin	    failed has been fixed.
165*da2e3ebdSchin	h.  A bug with here documents inside $(...) when the delimiter
166*da2e3ebdSchin	    word is an identifier has been fixed.
167*da2e3ebdSchin	i.  A bug which caused $0 to display the wrong value when
168*da2e3ebdSchin	    a script was invoked as an argument to the . command
169*da2e3ebdSchin	    and the eval command has been fixed.
170*da2e3ebdSchin	j.  A bug that could cause the built-in sleep to hang
171*da2e3ebdSchin	    has been fixed.
172*da2e3ebdSchin	k.  A bug introduces in 12/28/93b which caused the backslash
173*da2e3ebdSchin	    to be removed when it was followed by digit inside double
174*da2e3ebdSchin	    quotes in some instances has been fixed.
175*da2e3ebdSchin	l.  A bug which could cause a core dump if ksh was invoked with
176*da2e3ebdSchin	    standard input closed has been fixed.
177*da2e3ebdSchin	m.  A bug which could cause a core dump if typeset -A was
178*da2e3ebdSchin	    specified for an existing variable has been fixed.
179*da2e3ebdSchin	n.  Variables that were unset but had attributes such as readonly
180*da2e3ebdSchin	    and export were not listed with readonly, export and typeset.
181*da2e3ebdSchin	o.  Several problems with signals have been fixed.
182*da2e3ebdSchin	p.  A bug which prevented ulimit -t from working has been fixed.
183*da2e3ebdSchin	    Also, a bug in which failed ulimits could cause a core dump
184*da2e3ebdSchin	    has also been fixed.
185*da2e3ebdSchin	q.  A bug in expansion of the form ${name/#pattern/string} and
186*da2e3ebdSchin	    ${name/%pattern/string} has been fixed.
187*da2e3ebdSchin	r.  A bug which caused read -r on a line that contained only
188*da2e3ebdSchin	    blanks to get a non-null value has been fixed.
189*da2e3ebdSchin	s.  A bug introduced in the 'a' point release in which
190*da2e3ebdSchin	    ${x='\\'} expanded to \ when x was unset has been fixed.
191*da2e3ebdSchin	t.  A bug which prevented a trap on EXIT from being executed
192*da2e3ebdSchin	    when the last command in a script was a function invocation
193*da2e3ebdSchin	    has been fixed.
194*da2e3ebdSchin	u.  A bug which caused an interactive shell ignore input when
195*da2e3ebdSchin	    standard error was redirected to a file with exec,
196*da2e3ebdSchin	    and then restored with exec 2>&1 has been fixed.
197*da2e3ebdSchin	v.  An interactive shell turns on monitor mode even when
198*da2e3ebdSchin	    standard error has been redirected to a file.
199*da2e3ebdSchin	w.  A bug which could cause standard input to be incorrectly
200*da2e3ebdSchin	    positioned for the last command of a script has been fixed.
201*da2e3ebdSchin	y.  A bug in the edit modes which allowed walking back in
202*da2e3ebdSchin	    the history file for more than HISTSIZE commands has
203*da2e3ebdSchin	    beed fixed.
204*da2e3ebdSchin	z.  A bug which could cause a core dump if variable TMPDIR was
205*da2e3ebdSchin	    changed between two command substitutions has been fixed.
206*da2e3ebdSchin	aa. A bug which prevented a trap on EXIT from being cleared
207*da2e3ebdSchin	    has been fixed.
208*da2e3ebdSchin
209*da2e3ebdSchin10.	Bugs fixed in 12/28/93d for default OPTIONS
210*da2e3ebdSchin	a.  The \ character was not handled correctly in replacement
211*da2e3ebdSchin	    patterns with ${x/pattern/replace}.
212*da2e3ebdSchin	b.  A bug with read in which the line did not end with
213*da2e3ebdSchin	    a new-line has been fixed.
214*da2e3ebdSchin	c.  A bug in file name generation which sometimes
215*da2e3ebdSchin	    appended a . for filenames that ended in / has
216*da2e3ebdSchin	    been fixed.
217*da2e3ebdSchin	d.  If a process is waited for after a status has
218*da2e3ebdSchin	    been returned by a previous wait, wait now
219*da2e3ebdSchin	    returns 127.
220*da2e3ebdSchin	e.  A bug with hist (fc) -e which prevented a command
221*da2e3ebdSchin	    to re-executed after it had been edited has been fixed.
222*da2e3ebdSchin	f.  A bug which prevented quoting from removing the meaning
223*da2e3ebdSchin	    of unary test operators has been fixed.
224*da2e3ebdSchin
225*da2e3ebdSchin11.	Bugs fixed in 12/28/93e for default OPTIONS
226*da2e3ebdSchin	a.  Empty command substitutions of the form $() now work.
227*da2e3ebdSchin	b.  whence -v foo now gives the correct result after calling
228*da2e3ebdSchin	    builtin -d foo.
229*da2e3ebdSchin	c.  A bug in right to left arithmetic assignment for which
230*da2e3ebdSchin	    the arithmetic expression (( y = x = 1.5 )) did not
231*da2e3ebdSchin	    yield 1 for y when x was declared typeset -i was fixed.
232*da2e3ebdSchin	d.  printf has been fixed to handle format  containing \0
233*da2e3ebdSchin	    and/or \0145 correctly.  In addition, characters following
234*da2e3ebdSchin	    %b in the format string are no longer displayed when
235*da2e3ebdSchin	    the operand contains \c.
236*da2e3ebdSchin	e.  A bug in printf that could cause the %E format to
237*da2e3ebdSchin	    produce unnormalized results has been fixed.
238*da2e3ebdSchin	f.  A bug which causes some arithmetic expressions to be
239*da2e3ebdSchin	    incorrectly evaluated as integer expressions rather
240*da2e3ebdSchin	    that floating point has been fixed.
241*da2e3ebdSchin	g.  Functions defined inside a subshell no longer remain
242*da2e3ebdSchin	    defined when the subshell completes.
243*da2e3ebdSchin	h.  The error message from sh -c ';echo foo' has been
244*da2e3ebdSchin	    corrected.
245*da2e3ebdSchin	i.  The format for umask -S has been changed to agree
246*da2e3ebdSchin	    with the specification in the POSIX standard.
247*da2e3ebdSchin	j.  A bug that caused side effects in subscript evaluation
248*da2e3ebdSchin	    when tracing was enabled for subscripts using ++ or --
249*da2e3ebdSchin	    has been fixed.
250*da2e3ebdSchin	k.  To conform to the Posix standard getopts has been changed
251*da2e3ebdSchin	    so that the option char is set to ? when it returns with
252*da2e3ebdSchin	    a non-zero exit status.
253*da2e3ebdSchin	l.  The handling of \} inside ${name...} has been fixed so
254*da2e3ebdSchin	    that the \ quotes the }.
255*da2e3ebdSchin	m.  A bug that caused the read builtin to resume execution
256*da2e3ebdSchin	    after processing a trap has been fixed.
257*da2e3ebdSchin	n.  [[ -s file ]] has been fixed so that if file is open
258*da2e3ebdSchin	    by ksh, it is flushed first.
259*da2e3ebdSchin	o.  In some cases attributes and sizes for non exported
260*da2e3ebdSchin	    variables weren't being reset before running a script.
261*da2e3ebdSchin	p.  The value of TMOUT was affected by changes make to
262*da2e3ebdSchin	    it in a subshell.
263*da2e3ebdSchin	q.  The jobs command did not reflect changes make by
264*da2e3ebdSchin	    sending the CONT signal to a command.
265*da2e3ebdSchin	r.  The error message for ksh -o unknown was incorrect.
266*da2e3ebdSchin	s.  Functions invoked as name=value name, did not use
267*da2e3ebdSchin	    values from the calling scope when evaluating value.
268*da2e3ebdSchin	t.  A bug in which the shell would reexecute previously
269*da2e3ebdSchin	    executed code when a shell script or coprocess was
270*da2e3ebdSchin	    run in the background has been fixed.
271*da2e3ebdSchin	u.  A bug in which an empty here-document would leave
272*da2e3ebdSchin	    a file descriptor open has been fixed.
273*da2e3ebdSchin	v.  A bug in which $(set -A array ...) would leave a
274*da2e3ebdSchin	    side effect has been fixed.
275*da2e3ebdSchin	w.  A discipline function for a global variable defined
276*da2e3ebdSchin	    within a function defined with the function keyword,
277*da2e3ebdSchin	    incorrectly created a local variable of the same name
278*da2e3ebdSchin	    and applied the discipline to it.
279*da2e3ebdSchin
280*da2e3ebdSchin12.	Bugs fixed in 12/28/93f for default OPTIONS
281*da2e3ebdSchin	a.  A bug which would cause the secondary prompt to be
282*da2e3ebdSchin	    displayed when a user entered a literal carriage
283*da2e3ebdSchin	    return has been fixed.
284*da2e3ebdSchin	b.  I bug which caused ksh read -s name to core dump was
285*da2e3ebdSchin	    fixed.
286*da2e3ebdSchin	c.  I bug with the expansion of \} and \] inside double
287*da2e3ebdSchin	    quoted strings that also contained variable expansions
288*da2e3ebdSchin	    has been fixed
289*da2e3ebdSchin	d.  Changes in the 'e' point release caused autoload
290*da2e3ebdSchin	    functions invoked from within command substitution
291*da2e3ebdSchin	    to fail.  This has been fixed.
292*da2e3ebdSchin	e.  A bug in the processing of here-documents that could
293*da2e3ebdSchin	    prevent variable substitution to occur after $(...) command
294*da2e3ebdSchin	    substitution for long here documents has been fixed.
295*da2e3ebdSchin	f.  A bug caused by a race condition that could cause SIGTERM
296*da2e3ebdSchin	    to be ignored by a child process has been fixed.
297*da2e3ebdSchin	g.  A bug which prevented the startup of a coprocess immediately
298*da2e3ebdSchin	    after killing a running coprocess has been fixed.
299*da2e3ebdSchin	h.  ulimit foobar, where foobar is not an arithmetic
300*da2e3ebdSchin	    expression, now gives an error message as it did with ksh88
301*da2e3ebdSchin	    instead of setting the file size limit to 0.
302*da2e3ebdSchin	i.  A bug which could cause an interactive shell to terminate when
303*da2e3ebdSchin	    the last process of a pipeline was a POSIX function was fixed.
304*da2e3ebdSchin	j.  A bug which could cause command substitution of a shell script
305*da2e3ebdSchin	    to core dump has been fixed.
306*da2e3ebdSchin	k.  A security hole was fixed in suid_exec.
307*da2e3ebdSchin	l.  Arithmetic functions such as pow() that take more than
308*da2e3ebdSchin	    one argument, did not work if arguments other than the
309*da2e3ebdSchin	    first contained parenthesized sub-expression.
310*da2e3ebdSchin	m.  The error message from a script containing an incomplete
311*da2e3ebdSchin	    arithmetic expression has been corrected.
312*da2e3ebdSchin	n.  A bug which caused a core dump on some machines when
313*da2e3ebdSchin	    the value of a name reference contained a positional
314*da2e3ebdSchin	    parameter and the name reference was not defined inside
315*da2e3ebdSchin	    a function has been fixed.
316*da2e3ebdSchin	o.  Arithmetic expressions now correctly handle hexidecimal
317*da2e3ebdSchin	    constants.
318*da2e3ebdSchin	p.  A bug in which integer variables could be expanded
319*da2e3ebdSchin	    with a leading 10# when declared with typeset -i
320*da2e3ebdSchin	    multiple times has been corrected.
321*da2e3ebdSchin	q.  A bug in which IFS wasn't correctly restored when
322*da2e3ebdSchin	    set within command substitution has been fixed.
323*da2e3ebdSchin	r.  The _ character is now considered as part of a word
324*da2e3ebdSchin	    with the M-f and M-b emacs directives as it was in ksh88.
325*da2e3ebdSchin
326*da2e3ebdSchin13.	Bugs fixed in 12/28/93g for default OPTIONS
327*da2e3ebdSchin	a.  A bug in which a name reference could be created to
328*da2e3ebdSchin	    itself and later cause the shell to get into an infinite
329*da2e3ebdSchin	    loop has been fixed.
330*da2e3ebdSchin	b.  A bug in shcomp relating to compound variables was fixed.
331*da2e3ebdSchin	c.  A bug introduced in 'e' in which leading 0's in -Z
332*da2e3ebdSchin	    fields caused the value to be treated as octal for arithmetic
333*da2e3ebdSchin	    evaluation has been fixed.
334*da2e3ebdSchin	d.  A bug when a name reference with a shorter name than
335*da2e3ebdSchin            the variable it references was the subject of a compound
336*da2e3ebdSchin	    assignment has been fixed.
337*da2e3ebdSchin	e.  A bug which in which assignment to array variables in
338*da2e3ebdSchin	    a subshell could effect the parent shell has been
339*da2e3ebdSchin	    fixed.
340*da2e3ebdSchin	f.  read name?prompt was putting a 0 byte at the end of the
341*da2e3ebdSchin	    prompt on standard error.
342*da2e3ebdSchin	g.  A bug in [[ string1 > string2 ]] when ksh was run with -x
343*da2e3ebdSchin	    has been fixed.
344*da2e3ebdSchin	k.  A bug in which the escape character was not processed
345*da2e3ebdSchin	    correctly inside {...} when brace expansion is enabled
346*da2e3ebdSchin	    has been fixed, for example {\$foo}.
347*da2e3ebdSchin	l.  A bug in line continuation in here-documents has been
348*da2e3ebdSchin	    fixed.
349*da2e3ebdSchin	m.  The default base when not specified with typeset -i is
350*da2e3ebdSchin	    10 in accordance with the documentation.  Previously,
351*da2e3ebdSchin	    the value was determined by the first assignment.
352*da2e3ebdSchin	n.  A parsing bug in which a # preceded alphanumeric
353*da2e3ebdSchin	    characters inside a command substitution caused
354*da2e3ebdSchin	    a syntax error to be reported has been fixed.
355*da2e3ebdSchin	o.  A bug in which a decimal constant represented as 10#ddd
356*da2e3ebdSchin	    where ddd was more than five digits generated a syntax
357*da2e3ebdSchin	    error has been fixed.
358*da2e3ebdSchin	p.  A bug in here document expansion in which ${...} expansions
359*da2e3ebdSchin	    were split across buffer boundaries has been fixed.
360*da2e3ebdSchin
361*da2e3ebdSchin14.	Bugs fixed in 12/28/93h for default OPTIONS
362*da2e3ebdSchin	a.  I bug in shcomp for compilation of unary operators with [[...]]
363*da2e3ebdSchin	    has been fixed.
364*da2e3ebdSchin	b.  A bug in which the value of $? was changed when executing
365*da2e3ebdSchin	    a keyboard trap has been fixed.
366*da2e3ebdSchin	c.  The handling of SIGCHLD has been changed so that the
367*da2e3ebdSchin	    trap is not triggered while executing trap commands
368*da2e3ebdSchin	    to avoid recursive trap calls.
369*da2e3ebdSchin	d.  I bug in which a local variable in a function declared readonly
370*da2e3ebdSchin	    would generated an error when the function went out of
371*da2e3ebdSchin	    scope has been fixed.
372*da2e3ebdSchin	e.  I bug in which \<new_line> entered from the keyboard
373*da2e3ebdSchin	    with the KEYBD trap enabled has been fixed.
374*da2e3ebdSchin	f.  The error message for a misplaced ((, for example print ((3),
375*da2e3ebdSchin	    was often garbled and has been fixed.
376*da2e3ebdSchin	g.  I bug in the KEYBD trap in which escape sequences of the form
377*da2e3ebdSchin	    <ESC>[#~ were not being handled as a unit has been fixed.
378*da2e3ebdSchin	h.  A bug in which ksh would consider expressions like [[ (a) ]]
379*da2e3ebdSchin	    as syntax errors has been fixed.
380*da2e3ebdSchin	i.  A function defined as foo() without a function body
381*da2e3ebdSchin	    was not reported as a syntax error.
382*da2e3ebdSchin	j.  A bug in which ksh could run out of file descriptors when
383*da2e3ebdSchin	    a stream was repeatedly opened with exec and read from
384*da2e3ebdSchin	    has been fixed.
385*da2e3ebdSchin	k.  A bug introduced when fixing item n from the 'g' point
386*da2e3ebdSchin	    release has been fixed.
387*da2e3ebdSchin
388*da2e3ebdSchin15.	Bugs fixed in 12/28/93i for default OPTIONS
389*da2e3ebdSchin        a.  A bug in which a script could terminate when getopts
390*da2e3ebdSchin            encountered an error when invoked inside a function
391*da2e3ebdSchin            has been fixed.
392*da2e3ebdSchin        b.  When a symbolic link was specified as the name of
393*da2e3ebdSchin            the script to invoke by name, the value of $0 was
394*da2e3ebdSchin            set to the real file name rather than the link name
395*da2e3ebdSchin            in some cases and this has been fixed.
396*da2e3ebdSchin
397*da2e3ebdSchin16.	Bug fixes for specific non-default option combinations.
398*da2e3ebdSchin	a.  More signal names have been added for Solaris
399*da2e3ebdSchin	b.  A bug fixed for the v directive in vi MULTIBYTE has been
400*da2e3ebdSchin	    fixed.
401*da2e3ebdSchin	c.  Code to for IFS handling of multibyte characters has
402*da2e3ebdSchin	    been added.
403*da2e3ebdSchin	d.  The displaying of multibyte strings in export, readonly,
404*da2e3ebdSchin	    typeset, and execution traces has been fixed.
405*da2e3ebdSchin	e.  A bug with type ahead and KEYBOARD traps with the
406*da2e3ebdSchin	    MULTIBYTE option set has been fixed.
407*da2e3ebdSchin	f.  The k-shell information abstraction database option, KIA,
408*da2e3ebdSchin	    has been revamped for the 'e' point release.
409*da2e3ebdSchin	g.  A bug in brace pattern expansions that caused expressions
410*da2e3ebdSchin	    such as {foo\,bar,bam} to expand incorrectly have been fixed.
411*da2e3ebdSchin	h.  On the U/WIN version for Window 95 and Windows NT,
412*da2e3ebdSchin	    when a directory beginning with a letter followed by
413*da2e3ebdSchin	    a colon is given to cd, it is assumed to be an absolute
414*da2e3ebdSchin	    directory.
415*da2e3ebdSchin	i.  There was a bug in the compile option that does not
416*da2e3ebdSchin	    use fork() in which the current option settings where
417*da2e3ebdSchin	    not propagated to sub-shells.
418*da2e3ebdSchin	j.  A bug in setting .sh.editchar during the KEYBD trap
419*da2e3ebdSchin	    for the MULTIBYTE option was fixed in release 'h'.
420*da2e3ebdSchin	k.  A bug in which the precision given as an argument
421*da2e3ebdSchin	    to printf was not working has been fixed.
422*da2e3ebdSchin
423*da2e3ebdSchin17.	Other changes to 12/28/93[abcdefghi]
424*da2e3ebdSchin	a.  A couple of minor changes to make adding built-ins easier.
425*da2e3ebdSchin	b.  Variables inside functions are now statically scoped.
426*da2e3ebdSchin	    The previous behavior was never documented.
427*da2e3ebdSchin	c.  A few changes have been made to the name-value library
428*da2e3ebdSchin	    that affect built-ins that use disciplines.  The
429*da2e3ebdSchin	    changes allow disciplines to be shared by variables
430*da2e3ebdSchin	    and should make it possible to add new disciplines
431*da2e3ebdSchin	    without recompilation.
432*da2e3ebdSchin	d.  The name-value library interface has undergone significant
433*da2e3ebdSchin	    change for this revision.  See the new nval.3 man page.
434*da2e3ebdSchin	e.  Builtin functions can take a third argument which is
435*da2e3ebdSchin	    a void*.
436*da2e3ebdSchin	f.  The nv_scan() function can restrict the scope of a walk
437*da2e3ebdSchin	    to the top scope.  Starting in 'f', nv_scan() has an
438*da2e3ebdSchin	    additional pointer argument that is passed to each invoked
439*da2e3ebdSchin	    function.
440*da2e3ebdSchin	g.  Starting with release 'f', an empty for list behave like
441*da2e3ebdSchin	    a for list with null expansions.  It produces a warning
442*da2e3ebdSchin	    message with sh -n.
443*da2e3ebdSchin	h.  Starting with release 'f' the code has been modified to
444*da2e3ebdSchin	    work with EBCDIC as well as ASCII.
445*da2e3ebdSchin	i.  Starting with the release 'g', the name-value pair library
446*da2e3ebdSchin	    uses the cdt library rather than the hash library.
447*da2e3ebdSchin	j.  The sh_fun() function now takes third argument which
448*da2e3ebdSchin	    is an argument list for the invoked discipline function
449*da2e3ebdSchin	    or built-in.
450*da2e3ebdSchin	k.  A callback function can be installed which will give
451*da2e3ebdSchin	    notification of file duplications and file closes.
452*da2e3ebdSchin
453*da2e3ebdSchin18.	Incompatibilities with 12/28/93 version.
454*da2e3ebdSchin	None intentional.
455*da2e3ebdSchin
456