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