diff --git a/README.md b/README.md index 82148e51b..eb899911f 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,107 @@ Start by reading the information printed by: ```sh ./bin/shtests --man ``` + +## What is ksh93? + +The following is the official AT&T description from 1993 that came with the +ast-open distribution. The text is original, but hyperlinks were added here. + +---- + +KSH-93 is the most recent version of the KornShell Language described in +"The KornShell Command and Programming Language," by Morris Bolsky and David +Korn of AT&T Bell Laboratories, ISBN 0-13-182700-6. The KornShell is a shell +programming language, which is upward compatible with "sh" (the Bourne +Shell), and is intended to conform to the IEEE P1003.2/ISO 9945.2 +[Shell and Utilities standard](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html). +KSH-93 provides an enhanced programming environment in addition to the major +command-entry features of the BSD shell "csh". With KSH-93, medium-sized +programming tasks can be performed at shell-level without a significant loss +in performance. In addition, "sh" scripts can be run on KSH-93 without +modification. + +The code should conform to the +[IEEE POSIX 1003.1 standard](http://www.opengroup.org/austin/papers/posix_faq.html) +and to the proposed ANSI-C standard so that it should be portable to all +such systems. Like the previous version, KSH-88, it is designed to accept +eight bit character sets transparently, thereby making it internationally +compatible. It can support multi-byte characters sets with some +characteristics of the character set given at run time. + +KSH-93 provides the following features, many of which were also inherent in +KSH-88: + +* Enhanced Command Re-entry Capability: The KSH-93 history function records + commands entered at any shell level and stores them, up to a + user-specified limit, even after you log off. This allows you to re-enter + long commands with a few keystrokes - even those commands you entered + yesterday. The history file allows for eight bit characters in commands + and supports essentially unlimited size histories. +* In-line Editing: In "sh", the only way to fix mistyped commands is to + backspace or retype the line. KSH-93 allows you to edit a command line + using a choice of EMACS-TC or "vi" functions. You can use the in-line + editors to complete filenames as you type them. You may also use this + editing feature when entering command lines from your history file. A user + can capture keystrokes and rebind keys to customize the editing interface. +* Extended I/O Capabilities: KSH-93 provides several I/O capabilities not + available in "sh", including the ability to: + * specify a file descriptor for input and output + * start up and run co-processes + * produce a prompt at the terminal before a read + * easily format and interpret responses to a menu + * echo lines exactly as output without escape processing + * format output using printf formats. + * read and echo lines ending in "\\". +* Improved performance: KSH-93 executes many scripts faster than the System + V Bourne shell. A major reason for this is that many of the standard + utilities are built-in. To reduce the time to initiate a command, KSH-93 + allows commands to be added as built-ins at run time on systems that + support dynamic loading such as System V Release 4. +* Arithmetic: KSH-93 allows you to do integer arithmetic in any base from + two to sixty-four. You can also do double precision floating point + arithmetic. Almost the complete set of C language operators are available + with the same syntax and precedence. Arithmetic expressions can be used to + as an argument expansion or as a separate command. In addition there is an + arithmetic for command that works like the for statement in C. +* Arrays: KSH-93 supports both indexed and associative arrays. The subscript + for an indexed array is an arithmetic expression, whereas, the subscript + for an associative array is a string. +* Shell Functions and Aliases: Two mechanisms - functions and aliases - can + be used to assign a user-selected identifier to an existing command or + shell script. Functions allow local variables and provide scoping for + exception handling. Functions can be searched for and loaded on first + reference the way scripts are. +* Substring Capabilities: KSH-93 allows you to create a substring of any + given string either by specifying the starting offset and length, or by + stripping off leading or trailing substrings during parameter + substitution. You can also specify attributes, such as upper and lower + case, field width, and justification to shell variables. +* More pattern matching capabilities: KSH-93 allows you to specify extended + regular expressions for file and string matches. +* KSH-93 uses a hierarchal name space for variables. Compound variables can + be defined and variables can be passed by reference. In addition, each + variable can have one or more disciplines associated with it to intercept + assignments and references. +* Improved debugging: KSH-93 can generate line numbers on execution traces. + Also, I/O redirections are now traced. There is a DEBUG trap that gets + evaluated before each command so that errors can be localized. +* Job Control: On systems that support job control, including System V + Release 4, KSH-93 provides a job-control mechanism almost identical to + that of the BSD "csh", version 4.1. This feature allows you to stop and + restart programs, and to move programs between the foreground and the + background. +* Added security: KSH-93 can execute scripts which do not have read + permission and scripts which have the setuid and/or setgid set when + invoked by name, rather than as an argument to the shell. It is possible + to log or control the execution of setuid and/or setgid scripts. The + noclobber option prevents you from accidentally erasing a file by + redirecting to an existing file. +* KSH-93 can be extended by adding built-in commands at run time. In + addition, KSH-93 can be used as a library that can be embedded into an + application to allow scripting. + +Documentation for KSH-93 consists of an "Introduction to KSH-93", +"Compatibility with the Bourne Shell" and a manual page and a README file. +In addition, the "New KornShell Command and Programming Language" book is +available from Prentice Hall. diff --git a/lib/package/ast-open.README b/lib/package/ast-open.README deleted file mode 100644 index f20fae315..000000000 --- a/lib/package/ast-open.README +++ /dev/null @@ -1,10711 +0,0 @@ -The AT&T Software Technology ast-open package from AT&T Research -contains all of the ast open source commands and libraries. This -package is a superset of the following packages: ast-base ast-make -ast-ksh ksh ast-ast ast-dss; you won't need these if you download -ast-open. - -Source Package Installation Instructions: - - (1) Do not install packages as root/super-user. Although some components may - have setuid executables, few must be owned by root. These are best - changed manually when the security implications are understood. - (2) Choose a package root directory and cd to it. This will be a local work - area for all packages. - (3) These instructions bypass the click to download package links on the - download site. If you already clicked, or if your system does not have - curl(1), hurl(1), lynx(1) or wget(1) then use the alternate instructions - for (3),(4),(5) in plan B below. Plan B installs the hurl(1) - script which works with ksh and modern bash. The top level URL is: - URL=http://www.research.att.com/sw/download - (4) If the bin/package script does not exist then run: - test -d bin || mkdir bin - url=$URL/package - (wget -O - $url||curl -L $url||hurl $url) > bin/package - chmod +x bin/package - (5) Determine the list of package names you want from the download site, then - use the package(1) command to do the actual download: - bin/package authorize "NAME" password "PASSWORD" \ - setup source $URL PACKAGE ... - (Refer to the AUTHORIZATION paragraph on the main download page for - NAME/PASSWORD details.) This downloads the closure of the latest - source package(s); covered and up-to-date packages are not downloaded again unless - package force ... is specified. Package content is verified using md5sum. - If the package root will contain only one architecture then you can install in bin and - lib instead of arch/HOSTTYPE/bin and arch/HOSTTYPE/lib by running this - instead: - bin/package authorize "NAME" password "PASSWORD" \ - flat setup source $URL PACKAGE ... - To update the same packages from the same URL run: - bin/package setup source - (6) Build and install; all generated files are placed under arch/HOSTTYPE - ($INSTALLROOT), where HOSTTYPE is the output of bin/package (with no - arguments.) name=value arguments are supported; CC and debug=1 (compile - with -g instead of -O) are likely candidates. The output is written to - the terminal and captured in $INSTALLROOT/lib/package/gen/make.out: - bin/package make - (7) List make results and interesting errors: - bin/package results - Run the regression tests: - bin/package test - List test results and errors: - bin/package results test - (8) The generated binaries are position independent, i.e., they do not - contain hard-coded paths. However, commands with related files, like - file(1) and nmake(1), require the path of the bin directory to be - exported in PATH. - (9) You can run the binaries directly from the package root, or you can - install them in a public root after you are satisfied with the make and - test actions (requires the AT&T nmake(1) command): - bin/package flat install DIRECTORY PACKAGE - This will install in DIRECTORY/bin and DIRECTORY/lib. If you want to - preserve the arch/HOSTTYPE hierarchy under DIRECTORY then omit the - flat argument. If you don't have nmake(1) then the following will do a - flat install: - cd $INSTALLROOT - cp -p -r bin lib include DIRECTORY - (10) To summarize, after the first time the download, build, and test cycle - for the latest source release is: - bin/package setup source - bin/package make - bin/package test - -Source Package Installation Instructions -- Plan B: - - (3) Create the subdirectory lib/package/tgz and download all package archives - into that directory. - (4) If the bin/package script does not exist then manually read the INIT - source package: - gunzip < lib/package/tgz/INIT.YYYY-MM-DD.tgz | tar xvf - - Note that some browsers automatically unzip downloaded without warning. - If the gunzip fails try: - tar xvf - lib/package/tgz/INIT.YYYY-MM-DD.tgz - If your system does not have tar(1) or gunzip(1) then download the ratz - source package, compile it, and manually read the INIT - source package: - mkdir bin - cp lib/package/tgz/ratz.YYYY-MM-DD.c lib/package/tgz/ratz.c - cc -o bin/ratz lib/package/tgz/ratz.c - bin/ratz -lm < lib/package/tgz/INIT.YYYY-MM-DD.tgz - (5) Read all unread package archive(s): - bin/package read - Both source and binary packages will be read by this step. - -All recorded changes follow. - -:::::::: ksh93 :::::::: - -12-08-01 --- Release ksh93u+ --- -12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep) - that read from stdin has been fixed. -12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed. -12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr. -12-07-23 A scoping error with namrefs to compound associative arrays has - been fixed. -12-07-20 A bug where builtin -d /path/foo deleted foo has been fixed. -12-07-18 A bug in which /dev/stdout did not work in command substitution on - some systems has been fixed. -12-07-17 A bug in which the restricted option set in a subshell prevented - some variables from getting restored when the subshell completed - has been fixed. -12-07-09 A bug in which the directory is not restored after a subshell changes - the name of the directory for subshells executed in the same process - has been fixed. -12-07-09 A bug in which file descriptors created with {n}< file were not being - closed has been fixed. -12-07-09 The 12-04-04 fix for cd .. was not correct causing cd /etc;cd .. to - remain in /etc. This has been fixed. -12-07-02 A bug in which builtin name did now work for builtins found in a - library added by builtin -f lib has been fixed. -12-07-02 A bug in the edit modes which after a directory did not refresh - the input line has been fixed. -12-07-02 A bug in which an exit status > 256 corresponding to a signal was - not returned by a function to indicate a signal exit has been fixed. -12-06-28 Fix ulimit -a to list (Kibytes) instead of (kbytes). -12-06-27 Fix uninitialized data reference for as first char in --vi mode. -12-06-26 The formatting of printf "%q" for multibyte locales has changed to - output using \u[xxx] format for valid wide characters. -12-06-25 The size limit for read -N and read -n has been raised to INT_MAX. -12-06-22 A bug in which an exit trap set in a subshell might not be triggered - when the last command was a simple executable has been fixed. -12-06-22 A bug which could cause the shell to hang when a coprocess exits - while a command inside a command substitution is reading from it has - been fixed. -12-06-21 +ksh new accepts for commands of the form for i; do;...;done -12-06-19 Tab completion after a / when there is only one match not completes - with that match rather than generating a menu of matches. -12-06-19 A bug in which patterns containing {...} where not processed - correctly inside ${var/pattern/string} has been fixed. -12-06-18 Code modified to eliminate fts_notify variable. -12-06-15 Change the .paths plugin/builtin library variable name from - BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware - -lcmd from causing older non-plugin_version() aware ksh to dump core. -12-06-14 builtin without argument no longer lists .sh.tilde as a built-in. -12-06-12 For assignments if the form x=(foo bar), foo is only check for an - alias if it is float, integer, compound, or nameref. -12-06-12 +The shell supports 64 bit i-nodes even for 32 bit binaries. -12-06-11 A bug with >; redirection systems for which vfork() was the same a - fork() has been fixed. -12-06-11 A bug in path lookup that ignored buffer boundaries has been fixed. -12-06-08 typeset -a var and typeset -A var, first unset var when var is - a compound variable. -12-06-08 A bug in which running shcomp on a program containing namespace - could core dump has been fixed. -12-06-06 A bug in which unset of an associative array of compound variables - did not completely unset the variable has been fixed. -12-06-06 A bug in which exporting left or right justified fields could loose - the field width has been fixed. -12-06-06 A bug on Solaris11 in which >; did not work for /dev/null was fixed. -12-06-05 A race condition which occurred when stopping a builtin command - invoked from a subshell has been fixed. -12-06-05 A bug with appending elements to an empty indexed array has been - fixed. -12-06-04 A bug in which continuing a stopped builtin could cause it to - terminate has been fixed. -12-06-04 By default, builtins added at runtime will restore the current - directory if they are killed or stopped. -12-06-04 A bug in handling \\ in read has been fixed. -12-05-31 Use getrlimit64/setrlimit64 on systems that support it. -12-05-31 Fix 64 bit big-endian arithmetic bug that mishandled nan and inf. -12-05-31 Handle ECONNRESET like EPIPE. -12-05-31 Change .paths parse to use only the last BUILTIN_LIB from the top - and treat BUILTIN_LIB value as a ':' separated list of lib names. -12-05-29 Fix BUILTIN_LIB binding bug that ignored subsequent lookups. -12-05-29 shtests: --nocompile omits the compile test and --compile does only - the compile test. -12-05-25 A command substitution containing a here-document that itself contains - a here-document no longer hangs. -12-05-24 When the redirection operatory >; is directed to a symlink, it now - overwrites the file named by the link rather than the link. -12-05-21 +Added printf formats %(type)q where type can be html, url, pattern, - ere, or csv. -12-05-18 A bug with appending elements to an indexed array has been fixed. -12-05-18 The exit status from getopts --man interactively was 0 instead of 2 - and has been fixed. -12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has - been fixed. -12-05-17 A bug with fixed size arrays which could cause a core dump has been - fixed. -12-05-17 A bug in which the here-document <<< $(^V, the terminal was not - restored to insert mode after a character is entered has been fixed. -12-04-27 A bug in which old attributes were not cleared when assigning a - value using typeset has been fixed. -12-04-26 +Enabled multiline editing by default. set +o multiline can disable. -12-04-25 The 12-04-17 PATH fix created a new bug which was fixed. -12-04-25 Fixed a big memory leak problem in which unsetting compound variables - did not free all the space. -12-04-25 A bug in which test ! ! ! was treated as an error has been fixed. -12-04-24 A bug with print -v for a compound variable that contained fixed - arrays which prevented the output from being used again as input - has been fixed. -12-04-23 +kill provides the STKFLT signal on systems that support it. -12-04-23 +The -L option was added to kill. The -L option is the same as -l - except that without arguments the output format is in the form of - a select menu. -12-04-23 A bug in which the exit status for an interactive shell was always - 0 has been fixed. -12-04-20 Entering blank lines interactively no longer resets the exit status. -12-04-18 A bug in file completion in which the second tab completion on a file - would list the completion rather than inserting the completion has - been fixed. -12-04-18 A bug in which "${arr[@]:i:j}" and "${@:i:j}" generated the empty - string when i was a valid subscript and j was <=0 rather than - generating nothing has been fixed. -12-04-17 A bug in which read -d delim from a terminal did not respond to - interrupt and did not termrinate when the delimiter was entered - has been fixed. -12-04-17 A bug in which a directory in PATH containing a .paths file that - contains a line with FPATH=dir, where dir does not exist could - cause the path search to fail has been fixed. -12-04-16 A bug in which $(trap -p) did not display traps such as ERR and - DEBUG that are not associated with signals has been fixed. -12-04-11 A bug in which unsetting a variable did not unset attributes when - the variable did not have a value has been fixed. -12-04-11 A bug in which read -A for an array whose index is an enumeration - type, lost the enumeration type has been fixed. -12-04-10 Shared libraries loaded from a library named by a BUILTIN_LIB= found - in a .paths file found in a directory on PATH now add builtins that - are associated with the directory in PATH containing the .paths file. -12-04-09 Increased I/O buffer sizes for better performance. -12-04-09 A bug in which the leading 0 was stripped from $x, when $x contained - a heximadecimal constant inside an arithmetic expression inside - a for or while loop. -12-04-06 Modified namespaces to hand variables FPATH, PATH, and OPTIND that - are defined in name spaces appropriately. This also fixed OPTIND - and OPTARG processing for functions. -12-04-04 A bug in which cd .. fails when the current directory has been - renamed has been fixed. -12-04-02 Made some namespace changes and added a regression test. -12-03-30 A bug with namespaces in which PATH and FPATH set in a namespace was - not restored when leaving the namespace has been fixed. -12-03-29 A bug in which appending an index array onto an array without elements - caused the first element to be 1 rather than 0 has been fixed. -12-03-29 A bug which could cause a core dump when copying a large index array - has been fixed. -12-03-28 The shell now generates an error message when the sizes with L, Z, and - R are > 32767 on 32 bit binaries instead of generating a core dump. -12-03-28 A bug in left and right justification in which the width of invalid - characters was not taken as zero has been fixed. -12-03-26 A bug in which typeset -p ref, when ref is a reference to an index - array element did not display the subscript has been fixed. -12-03-23 A bug in lowercase and uppercase fields when expanding ${name:=val} - when name is the empty string has been fixed. -12-03-22 A namespace bug in which a type t defined in namespace foo could not - be referenced outside the namespace as .foo.t has been fixed. -12-03-22 A bug in name reference scoping in which a name function called from - another function is pass a name reference to a compound variable - instance to be created and the compound variable is in the global - scope. -12-03-22 A bug in which ${ref[@}} did not behave like ${arr[i][@]} when - ref is a name reference to arr[i] has been fixed. -12-03-21 A bug in which assigning a compound variable into arr[i], where - arr[i] is an array variable did not work correctly has been fixed. -12-03-21 A bug with multi-dimenstional index arrays in which ${arr[i][j]} - could generate a bogus error message when i was > 9 has been fixed. -12-03-21 A bug in which typeset v=foo, typeset -p v[0] generated a core dump - has been fixed. -12-03-20 A bug in vi edit mode in which the sequence bar0il left the - cursor on the b rather than the a has been fixed. -12-03-20 A bug which caused a core dump when defining a type with a field - as ' integer -a data=([0]=0)' has been fixed. -12-03-19 Using typeset -a array when array is an associative array not - generated an error message. -12-03-19 typeset +a, typeset +A, and typeset +C not displays the variables - with the attributes a, A, and C respectively instead of an error. -12-03-19 A bug in which typeset -pC, typeset -pa, and typeset -pA output all - variables rather than those of type C, a, or A only has been fixed. -12-03-18 A bug in which unset foo where foo is a name reference to a compound - variable defined inside a function is not unset has been fixed. -12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the - list of matches became empty has been fixed. -12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax - error since a is not an assignment command. -12-03-16 A bug in which an unset discipline from a variable defined in a - subshell is not invoked in the subshell has been fixed. -12-03-08 The assignment typeset -a (x=1 y=2) now creates an index array - of two elements rather than an array of one element which is - a compound variable. -12-03-02 +The vi and emacs edit modes now list all the entries in a directory - when entering a for completion after a /. -12-03-02 A bug in which a program that exits with value 12 when called - from a command substitution in which standard output has been - redirected caused the shell to hang has been fixed. -12-03-01 A bug in which the shell could not parse [[ ']' == ~(E)[]] ]] - has been fixed. - -12-02-29 --- Release ksh93u+ --- -12-02-29 A bug in which ~user expanded first in a subshell prevented it - from expanding later in a program has been fixed. -12-02-29 A bug which could lead to a core dump when more that four shared - libraries were added with the builtin command has been fixed. -12-02-29 Fixed a few bugs which caused SIGCHLD to be blocked preventing - background jobs from being reaped until a foreground job was run. -12-02-27 A bug in which sh -c for a simple command caused a fork() has been - fixed. -12-02-27 A timing bug on systems such as AIX that doesn't support vfork() - that could cause the exist status to get lost has been fixed. -12-02-22 A private file descriptor that was not close-on-exec for a command - substitution and has been fixed. -12-02-14 A bug in which ^Z did not stop a pipeline when the last component - was a shell built-in has been fixed. -12-02-14 getconf("PATH") used to initialize ed(1) path. -12-02-13 +In earlier version read from standard input would fail when called - from the KEYBD trap. Now read options -N, -n, and -t should work - when called from a KEYBD trap. -12-02-13 If FCEDIT is not set and fc is invoked without the -e option, - ed will be invoked if found instead of /bin/ed. -12-02-10 Another bug in the saving and restoring of IFS in a subshell - that caused a core dump has been fixed. -12-02-08 A bug in which .sh.fun disciplines could be cleared after a - function completes has been fixed. -12-02-08 A bug in job control in which the foregroup process group was not - set correctly after restarting a stopped pipeline has been fixed. -12-02-07 A bug in which numbers with leading zeros could be treated as - octal constants outside of ((...)) has been fixed. -12-02-06 A bug in arithmetic with compound variables containing multiple - array elements has been fixed. -12-02-02 A bug in the ulimit option table was fixed. -12-01-26 A bug in which a set command that did not change monitor could - effect the behavior of the monitor when monitor mode is on is fixed. -12-01-21 +You can now test whether the shell implements a math function using - typeset -f .sh.math.name, where name is the name of the function. -12-01-21 A bug in which typeset -L and typeset -R did not handle multibyte - characters correctly has been fixed. -12-01-20 A bug that could cause the shell to hang waiting for an incorrect - job pid has been fixed. -12-01-19 A memory leak which occurred for a nested command subtiution has been - fixed. -12-01-17 A bug in which typeset -u PS1 could enable the uppercase attribute - for some other variables, for exampe, HISTFILE has been fixed. -12-01-16 A bug in which .sh.match was not correct after a substring match when - the replacement string contained a substring match has been fixed. -12-01-12 +Files that are sourced from profile files are now read and executed - one command at a time so that alias definitions take effect as they - do for profile files. -12-01-12 A bug in which whence -p would find a function if one existed and - there was no command of that name on PATH. -12-01-11 Change b_* prototype (int, char**, void*) => (int, char**, Shbltin_t*). -12-01-05 A bug in which read was not terminating for a signal that had a trap - set has been fixed. -12-01-01 A timing problem with >; has been fixed. -12-01-01 A macro expansion memory leak has been fixed. -11-12-26 A bug in array assignments of the form arr=( $arr[i] ...) in which - arr was not unset before the assignment has been fixed. -11-12-20 A number of code changes were made based on the results of errors - indicated by static code analysis. -11-12-13 In vi edit mode a lteral can now be entered by preceding it - with a backshash. -11-12-13 When tab is entered for completion after a ' or ", the ' and " - characters are no longer deleted. -11-12-07 A bug in which a program in the current directory with a . in the - name could fail to execute when both PATH and FPATH end with :. has - been fixed. -11-12-07 I fixed a bug in which a variable expansion in a large here-document - could be expanded to a null string. -11-12-06 An optimization to read was added in the case the the read command - was redirected from a file. -11-12-06 Changes were made to make the line limit for read unlimited by - default. -11-12-05 A bug in which unsetting an array variable did not completely clear - the variable in some cases has been fixed. -11-12-02 +The printf alternative character # when applied to the %q format will - quote argument in a form suitable for a field in a .csv format file. -11-12-02 +A -S option was added to read to be able to read .csv format files. -11-11-28 A bug in which redirection of standard error in a function called from - command substitution caused standard error to be lost has ben fixed. -11-11-21 [[ (-n foo) ]] no longer requires a space before (. -11-11-11 The readonly attribute for a variable now applies to compound - assignments to that variable. -11-11-07 Changes were made to reduce the stack size to allow deeper function - recursion. -11-10-10 +Added alternate flag to printf %H for encoding of URI's. -11-10-10 A bug which could lead to a core dump when the shell was invoked - with more than twenty five open files has been fixed. -11-10-06 A bug in the scoping of name references in functions called by other - functions has been fixed. -11-10-05 A bug in which wait on a pid may return the exit status of an - earlier background job with that pid instead has been fixed. -11-09-22 A bug in which a read timed out with TMOUT did not always restore - the terminal state has been fixed. -11-09-21 An optimization that allowed the last command in a script to use - the same process id as the script has been eliminated. -11-09-21 Added letoctal option that enables the let command to recognize - octal constants starting with 0. -11-09-20 A bug in which ${var.} could cause a core dump has been fixed. -11-09-20 A bug with SHOPT_EDPREDICT when neither vi or emacs was enabled for - lines beginning with # when in a multibyte locale has been fixed. -11-09-20 A bug in emacs edit mode with SHOPT_EDPREDICT that would cause - history searches matching comments lines to generate predictions - has been fixed. Only user typed comment lines generate predictions. -11-09-20 A bug in emacs edit mode with a search that matches a comment line - that could cause a core dump has been fixed. -11-09-16 A bug in which a command name ending in .. could cause the shell to - abort has been fixed. -11-09-16 The characters ! + - % and @ in file names are no longer escaped with - file name completion. -11-09-13 The let command no longer treats numbers starting with 0 as octal - constants. -11-09-08 A bug in which printf "%R" could cause a core dump for invalid shell - patterns has been fixed. -11-08-09 With set -u, ${var#pattern} reported that var was unset for special - variables. -11-08-03 A bug in which the shell did not preserve the exit status for a - coprocess has been fixed. -11-08-02 A bug in the saving and restoring of IFS in command substitution that - caused a core dump has been fixed. -11-07-21 Modified the 10-08-27 bug fix so that background jobs started in for - and while loops created interactively generate completion messages. -11-07-20 I fixed a bug in here documents in which multi-byte characters that - crossed buffer boundaries were not processed correctly. -11-06-22 The shell compiler now supports process substitution. -11-06-22 +Added code to support process substitution on systems that do - not supply the /dev/fd directory. -11-06-21 Fixed extraneous jobs Done messages when builtin is at the end of a - pipeline. -11-06-20 Fixed two regression tests. -11-06-20 Fixed a bug introduced on last update. -11-06-14 A bug with pipefail in which the shell would wait for background - jobs to complete has been fixed. -11-06-09 A bug which caused the options.sh regression test to fail on OS390 - Linux has been fixed. The bug could also have affected other systems. -11-06-07 +A number of changes to support the still undocuments namespace option - have been added. -11-06-06 A bug in which command substitution of eval would hang when it had - standard error redirected to standard output has been fixed. -11-06-01 A bug in case statement fall through (;&) ignoring set -e was fixed. -11-06-01 A bug in which creating a left or right justified upper or lowercase - variable with an empty string has been fixed. -11-06-01 A bug in which the .paths directory wasn't read when a subshell was - executed before any other command has been fixed. -11-05-31 The shell now gives an error when a type variable is assigned to - an array instance when the array has been declared a compound variable - array. -11-05-31 A bug in which typeset -m of an array instance did not remove the - original instance has been fixed. -11-05-28 A bug in which typeset -m dest=src fails when src and are passed as - name references was fixed. -11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound - variable core dumps has been fixed. -11-05-28 Two bugs in the display of arrays of compound variables with print -v - have been fixed. -11-05-27 A bug with command substitution with the shift jis locale has been - fixed. -11-05-25 A bug in which unset -f foo, called within function foo could cause - the shell to core dump has been fixed. -11-05-24 A bug in unsetting arrays of compound variables that could lead to - a core dump has been fixed. -11-05-24 A scoping bug in with typeset -m for variables passed as references - has been fixed. -11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an - exception has been fixed. -11-05-03 Two more scoping bugs with name references and read -C were fixed. -11-05-03 A potential race condition which occurs when here-documents are - processed in asynchronous blocks has been eliminated. -11-05-02 Another scoping bug with name references defined in a function has - been fixed. -11-05-02 A bug in which the shell discards saved exit status of a job if it is - followed by a subshell execution has been fixed. -11-04-28 The shell now checks for numerical overflows with process ids. -11-04-28 Another scoping bug with compound variables defined by name references - inside a function has been fixed. -11-04-28 A bug which caused a core dump on 32 bit systems with the basic.sh - regression test has been fixed. -11-04-27 A scope binding error for name references has been fixed. -11-04-27 Assignment of compound variable to compound array element by name - is now working. -11-04-26 I fixed a bug with SHOPT_FIXEDARRAY compilation that could cause - an a core dump for not fixed arrays. -11-04-25 A bug in the references to two dimensional compound arrays has - been fixed. -11-04-20 A bug in which a name reference to a multidimentional index array - index, nameref x=foo[3][4], did not work correctly has been fixed. -11-04-18 Changes were added to allow fixed size arrays of variable sized - objects when the SHOPT_FIXEDARRAY compile option defined on 10-09-28. -11-04-18 A bug in which name references to array elements could fail has - been fixed. -11-04-15 +A compile option, SHOPT_2DMATCH, has been added which causes - .sh.match to be a two dimensional array after ${var//pat/str} - where the first dimension is the pattern number and the second is - the match instance. -11-04-11 A bug in which readonly var, where var is exported could cause var - to be unset has been fixed. -11-04-06 A tokenizer bug in which ${x/{3}(\d)/ } would cause in infinite - loop has been fixed. -11-04-05 A bug in which ${!x.} could cause a core dump has been fixed. -11-04-04 A bug in which cleaning out the history file could terminate before - keeping all the recent history events has been fixed. -11-03-29 A bug in which ${#array[@]} was 1 rather than 0 after issuing - typeset array[7] has been fixed. -11-03-29 The subscript out or range message for fixed arrays has been fixed. -11-03-29 A bug in which suspend could cause a core dump has been fixed. -11-03-24 For the showme option added 09-09-09, commands beginning with a ; - inside an arithmetic for loop, no longer produce syntax errors. -11-03-18 A bug in _WINIX ~domain/user expansion has been fixed. -11-03-16 A bug in the pipefail option which could cause a script to hang - has been fixed. -11-03-12 The shell no longer treats ${##pattern} as a syntax error. -11-03-11 A bug in typeset -u on systems that don't supply the towctrans() - function has been fixed. -11-03-11 A bug in which a compound assignment of the form var[sub]=(...) - would evaluate sub for each assignment has been fixed. -11-03-07 A bug in which reassigning a compound variable to an associative - array index could incorrectly increase the count of the number - of elements has been fixed. -11-03-04 +The tilde expansion on windows has been modified to handle user - names of the form domain/user so that ~domain/user now expands - to the home directory of that domain user. -11-03-03 A bug in which the width of the prompt was calculated incorrectly - which cause the wrong line length for edit commands has been fixed. -11-03-02 A bug in which a global variables set from within a function inside - a subshell can leave side effects in parent shell has been fixed. -11-03-01 A bug in which whence -a could dump core when the first match - was due to : in PATH and the program was in the current directory. -11-02-28 A bug in emacs mode with SHOPT_EDPREDICT (added on 10-05-20) which - disabled prediction on a line starting with # when the cursor was not - at the end of line has been fixed. -11-02-28 The output format for compound variables with set has been fixed. -11-02-25 A bug which could lead to a core dump occurred when a shell script - without #! is invoked by name from a parent shell that has name - references defined and the script creates name references of the - same name. -11-02-21 The shell now fails with a syntax error when a here-document in a - command substitution is not completed before the closing ), for - example, $( foobar <&- doesn't work has been fixed. -11-02-07 A bug on some systems for which a command substitution could hang - has been fixed. -11-01-28 A bug in file name completion for files containing both multibyte - characters shell special characters has been fixed. -11-01-18 The .sh.match variable now shows elements that do not match as - as not set rather than an empty string. -11-01-18 A bug with typeset -m of an array into an element of an indexed - array has been fixed. -11-01-13 A bug in handling of arrays of compound variables inside ((...)) which - reported a syntax error been fixed. -11-01-10 A bug in arithmetic assignment operators of the form op= for array - variables when the same array was referenced on the left and the - right hand side with different indices has been fixed. -11-01-10 A bug in which the output of time was lost when { time...;} 2>&1 - occurred inside command substitution has been fixed. -11-01-07 [[ -v sh.match[i] ]] was returning false when sh.match[i] was set. -11-01-05 Added and modified warning messages with sh -n. -11-01-02 Fixed bugs with typeset -l/-u/-M and arrays. -10-12-28 Fixed a bug with typeset -l/-u/-M values in arithmetic expressions. -10-12-26 Fixed a time parsing bug in sleep and localeconv() initialization. -10-12-23 Prevented the shell from generating a core dump when it sends itself - a termination signal because the last command terminated with that - signal. This prevents a core dump to be overwritten by the shell. -10-12-22 A bug in the expansion of ${A[@]} ${B[@]}, introduced in 10-12-01 - when A="" B=B has been fixed. -10-12-21 +Use MS_3D in b_vpath() for setting win32 WoW mount defaults. -10-12-17 A bug in the expansion of ${var:i:j} which caused a core dump when - i > ${#var} has been fixed. -10-12-16 +sleep now treats . as decimal point even in locales that use comma. -10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer - mapping as provided with wctrans(). -10-12-10 A bug in which typeset -l displayed namespaces as well as lower case - variables has been fixed. -10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline - whose right hand side is a builtin, and whose left hand side ends in - a simple command that has standard output redirected has been fixed. -10-12-06 A bug in hexfloat assignments when the right hand side is a string - variable starting with 0x has been fixed. -10-12-01 A bug in the expansion of ${$1+"$@"} which causes the last positional - parameter to disappear when it is empty has been fixed. -10-12-01 A number of changes were made to reduce the startup time. -10-11-29 When wait is interrupted by a signal that is caught, it now exits - with a non-zero exit status. -10-11-29 When a variable is used directly in an arithmetic expression, - leading zeros no longer cause the value to be treated as an - octal constant. This was true in previous versions for justified - variables. -10-11-29 An incorrect warning message was eliminated with the -n option for - arithmetic expressions with associative arrays. -10-11-29 Some changes were made to slightly reduces startup time. -10-11-24 A bug in which a name reference is make to arr[0] when arr is not - an array has been fixed. -10-11-23 If a type definition is made without a compound variable assignment it - produces an error message and no longer shows up as a defined type. -10-11-22 The handling of \ inside [...] for for shell and ~(E) patterns has - been fixed. -10-11-22 A patch was made to pfsh to handle an error case. -10-11-22 +Modified types defined in namespace so that they do not clash with - types in other namespaces. Types can be referenced using - .namespace.typename. -10-11-22 A bug which caused functions addressed as .namespace.funct to not - work has been fixed. -10-11-22 A bug in which if nr was a name reference to an unset associative - array subscript, then ${!nr} did not output the subscript correctly - has been fixed. -10-11-18 A bug in which shcomp -n was not processing double quotes correctly - has been fixed. -10-11-18 Fixed a bug in which typeset -T foo; typeset -T could cause a - core dump. -10-11-17 Fixed a bug in which the error message for set -u could come out - garbelled. -10-11-17 Modified the parser so that typeset -a var=(...) no longer checks - the first index for aliases and reserved words. -10-11-17 A bug in which a subshell command consisted of only a for or until - command has been fixed. -10-11-16 Fixed a bug in which typeset -u would display namespace variables - as well as upper case variables. -10-11-16 A bug which could cause a core dump when unsetting a type variable - when there are references to type elements has been fixed. -10-11-15 A bug which could cause a core dump when unsetting a compound - array variable when there are references to array subscripts has - been fixed. -10-11-15 A bug in which using typeset -m to move an indexed array instance - to another array could cause the array to display incorrectly has - been fixed. -10-11-12 A bug in which the unset discipline function for a type is called - when the type is initialized has been fixed. -10-11-12 The sequences \< and \> are now preserved after patterns containing - ~(E) in ${var/pattern/string} expansions. -10-11-11 A bug in typeset -m when the variables were compound array instances - has been fixed. -10-11-10 A bug in output of a compound variable with types containing types - has been fixed. -10-11-10 Fixed ``name=value export [-p]'' to list environment. -10-11-09 shtests resets SIGPIPE to SIG_DFL for all tests. -10-11-09 Fixed a bug in expansion of $"..." when used in assignments. -10-11-09 Fixed a getaddrinfo() memory leak that didn't call freeaddrinfo() - after an interrupt. -10-11-08 Modified the behavior of set -u so that the shell terminates with - error message when when var is unset with ${!var} and ${#var}. -10-11-02 Fix a bug in which a signal received while in a subshell could be - ignored. -10-10-26 Fix a bug where terminal interrupt was ignored while in vi/emacs - edit search mode. -10-10-26 Fix $'a\0b'c to expand to 'ac'. -10-10-26 Provide user defined round() if not in . -10-10-26 Fix bug where $((undefined_function(1))) dumped core. -10-10-22 Provide user defined iszero() if not in . -10-10-22 Fixed a bug with BGX compile option that could cause the shell to - hang. -10-10-22 Fixed a bug with user define math function on systems for which - char is unsigned. -10-10-21 A bug in which function autoloaded in a function leaves a file open - has been fixed. -10-10-20 Modified the behavior of set -u so that the shell terminates when - when var is unset with ${var op string} when op is #, % or /. -10-10-20 Fixed a bug with the AUDIT option in which the audit file was not - not close-on-exec. -10-10-20 +Made a number of changes and fixes for the NAMESPACE compile option - which as added on 10-06-09 but some problems still remain. -10-10-15 Fixed a bug in which arithmetic functions (added on 10-03-24) did - not work when the function definition was in the same compound - command in which the function was referenced. -10-10-13 A bug in which creating an associative array of compound variables - with no members as an element of a compound variable did not work - has been fixed. -10-10-08 A bug in which killing the last command in a function defined - with function name, terminated the calling script has been fixed. -10-10-08 A bug which could cause a core dump if IFS is unset inside a function - has been fixed. -10-10-07 +To reduce unwanted side effects, invoking typeset without the export - option and without an assignment now causes the variables to be unset - if the variable is inherited from the environment. -10-10-06 The closing brace for ${ command } is now a token no matter what - character follows it. -10-10-04 The change for $'...' expansion on 10-08-09 did not expand parameters - contained in the error message and this has been fixed. -10-10-04 A bug in which a declaration of indexed array (-a_ in a type - definition would be displayed as a compound indexed array (-C -a) - has been fixed. -10-09-30 The C99 math function ldexp has been added. -10-09-30 A bug with two dimensional arrays with expansion of the form - ${ref[0..5]} where ref is a nameref to array[i] has been fixed. -10-09-29 A bug in which an eval with redirections invoked from a dot script - would not restore the file has been fixed. -10-09-29 A bug in which loading a function from FPATH could leave a file - descriptor open has been fixed. -10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being - evaluation. It allows fixed sized indexed arrays be to defined - using "typeset array[dim1][dim2]...[dimn]". Fixed sized arrays - are used the same way indexed arrays are. Currently, only fixed - arrays of fixed objects (float, int, and justifies objects) are - supported. -10-09-22 A bug which could cause an exception when a function with static - variables was redefined has been fixed. -10-09-21 A bug in the processing of (command&) which created a job in the - parent process has been fixed. -10-09-21 A for loop optimization bug with arithmetic expression evaluation - has been fixed. -10-09-21 A bug in which a recursive function containing a pipeline could - lead to an exception fixed after 8 levels of recursion has been - fixed. -10-09-18 A bug in which the count of elements in an array was wrong leading - to an exception has been fixed. -10-09-13 A bug which occurred when both xtrace and showme options where - specified in which the xtrace option disabled showme has been fixed. -10-09-13 A bug in which creating a reference to an array variable with any - elements could cause subsequent array elements to be treated as - compound variables has been fixed. -10-09-09 A bug which caused ((c.ar[x][y])) to be treated as a syntax error - has been fixed. -10-09-08 A bug in the processing of references to multidimensional arrays - in arithmetic expressions has been fixed. -10-09-08 A bug in the handling of multi-dimensional arrays which caused - the number of elements in each dimension to be incorrect has - been fixed. -10-09-07 The change for messages on 10-08-09 did not handle message in - assignments and this has been fixed. -10-09-07 A bug in the indentation of compound variables in arrays when - output with print -v has been fixed. -10-09-07 A rare bug with indexed arrays when assigned a null string that could - cause a core dump has been fixed. -10-09-03 A number of changes were made for jobs pools. -10-08-31 typeset -p was modified to output name references after other - variables so that the output could be used as input. -10-08-31 A bug with typeset -p in which variables with attributes but - without attributes were not displayed correctly has been fixed. -10-08-27 +When running a subshell, the current pool is unset. -10-08-27 A bug in which jobs started from within for or while lists in - interactive shells could generate completion messages has been fixed. -10-08-25 Fixed a couple of bugs related to job pools. -10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of - those names are handled by the shell. -10-08-24 A bug in the running of a compiled dot script in which only the - first command was executed has been fixed. -10-08-23 A bug which sometimes caused a core dump with a configure script - has been fixed. -10-08-20 A bug in command substitution which caused a configure script to - hang has been fixed. -10-08-19 Eliminated unnecessary ; from output of compound variable with - typeset -p. -10-08-17 Fixed a bug in command substitution in which under certain - circumstances a file whose size is a power of 2 plus one, and the last - character was not a new-line, could cause memory corruption. -10-08-13 +Added static discipline functions to type similar to C++ static - class functions. -10-08-11 A bug in time when applied to a pipeline in which the shell did - not wait for all elements of the pipeline to complete has been fixed. -10-08-11 Restored sh_fmtq() quoting to not quote NAME= in NAME=VALUE. -10-08-09 +Modified the expansion of message strings, $"...", so that they - are expanded each time they are referenced rather than expanding - them when the script is compiled or read in. -10-08-06 +The process id for jobs in job pools is now of the form poolname.n - where n is the jobid in that pool. Commands that accept job names - or numbers now understand names in this format. -10-08-05 A bug in which an assignment from within an arithmetic expression - inside a function would create a local variable has been fixed. -10-08-04 A bug in the expanding of variables whose names contain multibyte - characters has been fixed. -10-08-04 A bug which caused an exception when processing scripts compiled - with shcomp -n has been fixed. -10-08-02 Tests using very small buffer sizes uncovered a number of bug most - connected with here documents which have been fixed. -10-07-27 The format modifier , used for digit grouping with d and f formats - has been documented. -10-07-26 cd '' now produces and error rather than changing to the current - directory. -10-07-26 A bug in multi-byte locales which the last character of a - multi-byte character is a \ or pattern character which could occur - when the character was the last character of a command substitution - has been fixed. -10-07-23 Another bug in the processing of ${var:offset;len} in multi-byte - locales when len is larger than the number of characters has been - fixed. -10-07-23 Many coding changes have been made to eliminate most of the uses - of global variables in the shell code. -10-07-22 Fixed a bug in which discipline functions were not being invoked - when it was invoked as ref.discipline where ref was a name reference - to an array instance. -10-07-22 Fixed a bug in which discipline functions were not being invoked it - was invoked on a two dimensional array, i.e., arr[5][9].discipline. -10-07-19 Fixed a buffering problem which occurred when running a script with - ssh and the parent ssh process is killed. -10-07-14 Modified the parser to treat ((...)) inside [[...]] as ( (...) ) to - that it is a nested (...). -10-07-09 A bug in the handling of process substitution inside command - substitution as part of a pipeline has been fixed. -10-07-07 A bug in the output for compound variables containing - multi-dimensional arrays has been fixed. -10-07-06 ksh now recovers from changes made by bash to the history file without - losing history commands. -10-06-25 A bug in which a large here document containing command substitutions - of a dynamically loaded function that contained a here document - could get truncated has been fixed. -10-06-24 If after executing a script found in FPATH, if a function, builtin, - or type name corresponding to that script is not defined, the shell - now outputs an error message and returns value 126. -10-06-23 Floating point functions that happened to return integer values - were being treated as if the function returned integers so that - integer division could be used instead of floating point division. -10-06-22 Fixed a bug in earlier ksh93u in which an arithmetic assignment to a - variable in the global scope would instead create a local variable if - the variable had an attribute but did not have a value. -10-06-18 Modified trap handling so that if the same signal is received when - executing the handler, it is deferred until the handler completes. -10-06-16 Fixed a bug in which ulimit -v was setting the the cpu limit - on Linux. -10-06-14 +The command 'typeset -T' now generates the list of type definitions - in a format that can be used as input to the shell. -10-06-09 Put in patch from Solaris for output quoting with %q. -10-06-09 +Made changes to the NAMESPACE compile option so that it now seems - to work. With this option, namespace { command;} will - run command in the namespace .name so that all variables and - functions created by command are accessible outside the name - space via .name.var and .name.fun. Variables and functions that - are not in the namespace are not modified when running command. -10-06-07 Change most internal interfaces to take Sh_t* argument. -10-06-03 +Types can be loaded on first reference by putting definitions in - PFPATH. -10-06-03 +The shell is now able to parse commands which use type statements - before the typeset -T command to define the type executes. -10-06-03 A bug in the quoting for name reference declarations which did - not properly handle [ and ] in subscripts for associative arrays. -10-06-02 A bug in which a discipline function defined by a type instance to - override the default was not being registered has been fixed. -10-06-02 A bug in which read -C of an associative array of compound variables - was not working has been fixed. -10-06-02 A bug in which the error message for an unset parameter with set -u - did not contain the name of the variable has been fixed. -10-06-01 A bug in typeset -m for moving an indexed array instance to a variable - has been fixed. -10-06-01 A bug in which caused memory to be freed twice when unset was called - for an indexed array that had get or set disciplines has been fixed. -10-06-01 A bug in which the %b format of printf was not preserving NUL bytes - with \0 has been fixed. -10-06-01 A bug in the handling of name references to array variables in - arithmetic expressions has been fixed. -10-05-28 Fixed bugs in changing attributes for two dimensional arrays. -10-05-28 Eliminated a few unreferenced variables and a reference to - uninitialized memory. -10-05-27 Rewrote the subshell code to avoid using pipes an many cases. -10-05-24 Fixed a bug which cause an exception when both -l and -s were - specified with typeset -i. -10-05-21 Inputting of three dimensional indexed arrays with ( ( (...)...)...) - was not working and has been fixed. -10-05-21 A bug in which adding the attributes -Ai to a variable via a name - reference could cause the value to display incorrectly has been fixed. -10-05-21 A bug in which using $var inside ((...)) did not work when var was - a hex float variable. -10-05-20 +The compile option SHOPT_EDPREDICT has been added. When this option - is on, as you type a line beginning with a # the following characters - are treated as a shell pattern and cause matching lines from the - history file to be displayed as a numbered list as you type. - You can scroll up and down this list or you can use nTAB - to make this the current line (n defaults to 1 of omitted) or - n to execute. -10-05-20 A bug which caused an exception when multiple levels of composite - functions in arithmetic expressions has been fixed. -10-05-19 <<< with an empty string no longer gives an error. -10-05-19 A bug in arithmetic evaluation when a name reference to an array - instance was used has been fixed. -10-05-14 A bug in which the shell treats a valid index array assignment, - typeset -a x=(foo (x=3;y=4) bar) as a syntax error has been fixed. -10-05-13 A bug in creating name references to associative array variable - after a lookup of one of its elements has been fixed. -10-05-12 Two bugs in the handling of function static type variables in - subshells have been fixed. One could cause an exception and the - other would leave side effects in the parent shell. -10-05-10 A bug in which static variables in functions were not being saved and - restored properly when running subshells has been fixed. -10-05-05 A bug in which print -v did not work correctly when an operand was an - indexed array element referring to a compound variable has been fixed. -10-05-05 A change to improve performance by special casing empty string - assignments to avoid repeated malloc() and free(). -10-05-05 A bug in which creating a name reference to a non-existent associative - array element would create the array element has been fixed. -10-05-04 A bug in which name references to static variables in the static - scope were not found has been fixed. -10-04-30 Do not use socketpair() on systems that implement ioctl(I_PEEK) - on pipes. -10-04-29 +When the current job pool is set, coprocess are run in a job pool. -10-04-28 A type defined with a member foo that is an associative array without - elements followed by an expansion ${bar.foo[a]} and an assignment - bar.foo[a]=b, no longer indicates that ${#bar.foo[@]} has 0 members. -10-04-27 Another bug in which a nested command substitution could hang if it - generated too much data has been fixed. -10-04-26 A type defined with a member that is an indexed array without elements - would behave as if the 0th element of each instance was defined after - a non-zero element was specified and this has been fixed. -10-04-26 A bug in which types defined in a subshell were not undefined when - the subshell completed has been fixed. -10-04-23 For file completion in command line editing, file names starting - with # are now escaped so that they are not treated as comments. -10-04-23 A bug in which ${t.var:=value}, where t is an instance of a type - variable, could assign value to the type variable rather than to - the type instance has been fixed. -10-04-23 +Added &| which can be used in place of | to have portions of a - pipeline executed in the pool. -10-04-22 +The .sh.pool variable was added for use with job pools. -10-04-22 A bug in which a nested command substitution could hang if it - generated too much data has been fixed. -10-04-20 A bug which corrupted one byte of memory when read was called with - reads that did not use a delimiter has been fixed. -10-04-19 The display of a compound variable with an embedded array with - attributes was sometimes not working correctly and has been fixed. -10-04-16 A bug in which attributes were not be propagated to elements in - an associative array has been fixed. -10-04-15 A bug which caused scripts containing user defined math functions to - fail to compile with shcomp has been fixed. -10-04-15 +Job pools have been added with the SHOPT_COSHELL compilation option. - A job pool allows a collection of background jobs to run either locally - or remotely and to be managed as a unit. The command '& name ...' - creates or uses a named job pool for subsequent background jobs. - kill, wait, and jobs allow the pool name as operands. -10-04-14 A bug in which a coprocess connection could terminate prematurely - when running a nested subshell has been fixed. -10-04-12 +Enumeration constants can be used in arithmetic expressions with the - ==, != and = operators when the left hand side is an enum variable - and the right hand side is an enumeration constant. -10-04-07 A bug in which setting the trap on CHLD to ignore could cause - an incorrect exit status has been fixed. -10-04-06 A bug in which LINENO was not incremented for a here-document when - the here-document word was followed by a comment has been fixed. -10-04-06 The optimization that execs the last process of a script rather - than creating a new process has been removed when a trap on - interrupt has been set. -10-04-06 Unsetting the 'C', 'A' or 'a' typeset attribute now produces an - error message rather than generating an exception. -10-04-06 A bug in which .sh.name contained the subscript and .sh.subscript - was empty in some cases with discipline functions on array instances - has been fixed. -10-04-05 A bug in the edit modes where preceding the interrupt character with - the literal next character did not work has been fixed. -10-04-05 A bug in the creation of type instances of arrays which could cause - an exception has been fixed. -10-03-30 A bug in the display of a compound variable containing an indexed - array of compound variables has been fixed. -10-03-24 +Arithmetic functions can be defined using the shell function syntax, - 'function .sh.math.name x y z{...}' , where name is the function name - invoked within ((...)) and x y z are long double arguments passed - as name references. y and z are used for functions with two and - three arguments respectively. The value of the function is the value - of the long double .sh.value variable when the function returns. -10-03-24 A bug in which integer division was mistakenly used when the - numerator was a binary operator with the first operand floating - point and the second integer, e.g. (.1**3)/3, has been fixed. -10-03-24 The >; file operator was modified so that the temporary file is - created in the same physical directory as file. -10-03-23 A warning message was added to sh -n when $var was used inside - ((...)) instead of var. -10-03-19 fmin was added to the list of math function on the man page. -10-03-19 Fixed the return value for unalias when the alias did not - exist. -10-03-19 A bug in which the SHLVL variable exported the value it had on - input rather than the incremented value has been fixed. -10-03-19 A bug which causes whence -q to go into an infinite loop has been - fixed. -10-03-19 Removed space between Stopped message and (SIGTTIN) and (SIGTTOUT). -10-03-17 Modified profile shell execution so that when builtins that - correspond to executable have extended attributes, they are - executed by pfksh instead of being treated as built-ins. -10-03-16 A bug in whence -a which produced duplicate lines of output has - been fixed. -10-03-16 A bug in the handling of process groups in monitor mode for - command substitutions has been fixed. -10-03-15 Fixed a bug in which read -u[fd] could cause the shell to core - dump when fd was greater than open_max. -10-03-15 +Modified the shell I/O so that the shell will not fail if the - ulimit for open_max is increased as part of the script. -10-03-12 A bug in which a here-document containing command substitutions - that contained here-documents did not process correctly has been - fixed. -10-03-12 A bug in which the terminal is not restored to canonical mode - after read times out when in a multibyte locale with no edit mode - enabled has been fixed. - -10-03-05 --- Release ksh93t+ --- -10-03-05 A variable unset memory leak has been fixed and tests/leaks.sh - has been added to verify the fix. -10-03-04 Documentation, comment, and diagnostic spelling typos corrected. -10-02-14 Fix sh_getenv() initialization to cooperate with the 3d fs. -10-02-12 A bug in which the get discipline function was not invoked for - associative array subscripts for unset array elements has been fixed. -10-02-12 A bug which could occur if the last line of a script was an eval - that executed multiple commands has been fixed. -10-02-02 A buffer overflow in read and another in binary type base64 - encoding were fixed. -10-01-20 A bug in the evaluation of arithmetic expression in which the - subscript was evaluated twice for $((foo[x++]++)) has been fixed. -10-01-19 A workaround for a double-free of a trap in both a subshell and its - parent has been added. -10-01-18 A bug in type handling of typeset -H has been fixed. -10-01-15 The "adding empty subscript" warning now only emitted with -x set. -10-01-01 A bug in the parser in which '$((case i in i):;esac);:))' was not - parsed correctly was fixed. -10-01-01 A bug in the parser in which '$(( 2 , 3.6 ))' dumped core for locales - with radix char , and thousands separator . has been fixed. -09-12-28 A bug in the handling of SIGCLD on systems that generated SIGCLD - while blocked waiting for process to complete has been fixed. -09-12-24 ast setlocale() reworked to differentiate env var changes from user - override. -09-12-18 A bug with the SHOPT_BGX option set which disabled traps for signals - < SIGCHLD when a trap for a signal > SIGCHLD was set has been fixed. -09-12-18 A bug where [[ -v var ]] was incorrect for some variables (including - LC_* vars) has been fixed. -09-12-15 A bug that produced a syntax error when a multibyte character - straddled a buffer boundary has been fixed. -09-12-11 A bug where the subscript of an unset variable was not evaluated has - been fixed. -09-12-09 A bug where shcomp dumped core on certain syntax errors has been fixed. -09-12-07 A bug where a parent shell environment var reset in a subshell removed - the value in subsequent children of the parent shell has been fixed. -09-12-04 A bug in which in some cases a trap in a function executed in - a subshell could trigger twice has been fixed. -09-12-03 A bug in which SHLVL exported with some attributes could cause - the shell to abort at startup has been fixed. -09-12-02 A bug with pipefail in which the shell could hang waiting for the - writer to complete before the last reader command has been fixed. -09-11-30 A bug in which a trap could be inherited by the first element of - a pipeline when the command had more than 63 arguments that did - not contain any macro expansions has been fixed. -09-11-19 When read from a terminal was called from with a while or for loop, - and an edit mode was on, a backspace or erase no longer will - overwrite the prompt. -09-11-17 +Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2. -09-11-17 Inside a function, typeset foo.bar will bind foo to global variable - foo if local variable foo does not exist, instead of creating a - local variable. -09-11-17 "read -n1" from the terminal has been fixed to read exactly one character. -09-11-11 Job control now works for subshell commands, (...). -09-11-11 If set -e is on for an interactive shell errors in special builtins - now cause the shell to exit. -09-11-11 A bug in which an interrupt handler processed during the read builtin - when IFS did not contain a new line has been fixed. -09-11-09 A bug in which a variable that has been unset in a subshell and then - exported from that subshell does not show up in the environment - has been fixed. -09-11-02 ``,2'' is now a valid numeric constant for locales with - decimal_point=','. -09-11-02 A bug where "return" in .profile did not restore the shell state - has been fixed. -09-10-31 A bug that corrupted saved exit status when pids wrapped around has - been fixed. -09-10-26 A bug in { LANG LC_ALL LC_category } ordering has been fixed in -last. -09-10-16 A bug where notification to libast that the environment has changed - has been fixed. -09-10-12 A bug in which a function loaded in a subshell could leave side - effects in the parent shell has been fixed. -09-10-12 A bug in converting a printf %d operand to a number when the operand - contains multiple subscripts for the same variable has been fixed. -09-10-09 A bug in the handling of the escape character \ in directory prefixes - in command completion has been fixed. -09-10-09 $PATH processing has been changed to delay dir stat() and .paths - lookup until the directory is needed in the path search. -09-09-28 Call the ast setlocale() intercept on unset too. -09-09-24 A bug in which LANG=foo; LC_ALL=foo; unset LC_ALL; did not revert - LC_CTYPE etc. to the LANG value has been fixed. -09-09-17 A bug in which unsetting SVLVL could cause a script invoked by - name without #! to core dump has been fixed. -09-09-16 A bug in which a pipeline in a here-document could hang when the - pipefail option was on has been fixed. -09-09-09 A bug in the processing of line joining in here documents which - occurred when a buffer began with has been fixed. -09-09-09 +A leading ; with commands in a brace group or parenthesis group - no longer causes an error. It now is used for the "showme" option. -09-09-09 A bug in which a subshell containing a background process could - block until the background process completed has been fixed. -09-09-04 A bug in handling ${var[sub]}, where var is a nameref has been fixed. -09-09-03 A bug which caused an index array to have the wrong number of elements - when it was converted from a compound variable by adding an another - element has been fixed. -09-09-03 Specifying export for a compound variable now generates an error. -09-09-02 $"..." localizations strings are no longer recognized inside `...`. -09-09-01 A bug in the for loop optimizer in the handling of type static - variables has been fixed. -09-09-01 An error message is not displayed when * and @ are used as subscripts. -09-09-01 Several bugs in the processing for types that included an associative - array of another type has been fixed. -09-09-01 A bug in the tracing of [[ a < b ]] and [[ a > b ]] has been fixed. -09-08-26 The .sh.file variable was not being set for a script that was run - by name and didn't start with #! and this has been fixed. -09-08-25 A bug in which a function called to deeply from command substitution - did not display an error message has been fixed. -09-08-24 +When processing profiles, ksh93 now violates the POSIX standard and - treats &> as a redirection operator similar to bash. -09-08-23 A bug in the handling of the trap on SIGPIPE that could lead to a - memory fault has been fixed. -09-08-21 A bug in the handling of the comma operator in arithmetic expressions - that could cause a core dump on some systems has been fixed. -09-08-20 A bug in which a compound variable containing an array of a type - that doesn't have any elements now expands correctly. -09-08-19 A bug which disabled function tracing inside a function after - a call to another function has been fixed. -09-08-19 A bug in which initializing a compound variable instance to another - compound variable by name has been fixed. -09-08-18 A bug in which compound variable instances could be lost after - an instance that invoked a type method discipline has been fixed. -09-08-18 A bug in which a discipline function for a type applied to an - array instance when invoked in a function ignored the subscript - has been fixed. -09-08-18 A scoping error with variables in arithmetic expression with - type variables when reference with a name reference has been fixed. -09-08-10 Several memory leaks were fixed primarily related to subshells. -09-08-06 A bug in which setting the trap on CHLD to ignore could cause - a script to hang has been fixed. -09-07-08 A bug in the processing of name reference assignments when it - contained pattern expansions with quoting has been fixed. -09-06-22 +The default width for typeset -X has been changed so that there - should be no loss of precision when converting to a string. -09-06-19 A bug in the printing of array elements for binary variables with - printf %B has been fixed. -09-06-19 A bug which caused a core dump with trap DEBUG set with an array - assignment with no elements has been fixed. -09-06-19 A bug with read with typeset -b -Z has been fixed. -09-06-19 Two bugs related to read -b for array variables has been fixed. -09-06-19 A bug with typeset for compound variables containing arrays of - compound variables has been fixed. -09-06-18 A bug in appending a compound variable to a an indexed array of - compound variables has been fixed. -09-06-18 A bug which occurs when appending a compound variable to an indexed - array element has been fixed. -09-06-18 Setting VISUAL to a value other than one ending in vi or emacs will - no longer unset the edit mode. -09-06-17 A bug in typeset -m when moving a local compound variable to a - global compound variable via a name reference has been fixed. -09-06-17 A bug in appending to nodes of an array of compound variables when - addressing them via nameref has been fixed. -09-06-17 A bug in typeset -p var, when var is an array of compound variables - in which the output only contained on array element has been fixed. -09-06-17 The prefix expansion ${!y.@} now works when y is a name - reference to an element of an array. -09-06-16 Traps on signals that are ignored when the shell is invoked - no longer display. Previously they were ignored as required but - would be listed with trap -p. -09-06-12 A bug in vi edit mode in which hitting the up arrow key at the - end of a line longer than 40 characters which caused a core dump - has been fixed. -09-06-11 A bug in which "eval non-builtin &" would create two processes, - one for the & and another for non-builtin has been fixed. -09-06-08 When var is an identifier and is unset, ${var} no longer tries to - run command substitution on the command var. -09-06-08 +Process substitution arguments of the form <(command) can now be - used following the < redirection operator to redirect from command. -09-05-13 A bug in which redirections of the form 2>&1 1>&5 inside command - substitution could cause the command substitution to hang has been - fixed. -09-05-12 To conform with POSIX, the -u option only checks for unset variables - and subscript elements rather than checking for all parameters. -09-05-12 A bug which could cause a core dump when a variable whose name - begins with a . was referenced as part of a name reference inside - a function has been fixed. -09-05-01 A bug that caused a core dump when SIGWINCH was received and - both vi and emacs mode were off has been fixed. -09-04-22 +Default alias compound='typeset -C' added. -09-04-15 A bug that caused ${...;} to hang for large files has been fixed. -09-04-08 A change was made in the -n option which printed out an incorrect - warning with <>. -09-04-07 The emacs edit command M-_ and M_. and the vi command _ was fixed - to handle the case there there is no history file. -09-04-05 A bug in handling new-lines with read -n has been fixed. -09-04-05 The ENV variable defaults the the file named by $HOME/.kshrc rather - then to the string $HOME/.kshrc. -09-03-31 A bug in which a nested command substitution with redirections could - leave a file descriptor open has been fixed. -09-03-24 +ksh now only uses the value of the _ variable on startup if it can - verify that it was set by the invoking process rather than being - inherited by some other ancestor. -09-03-24 +When ksh is invoked without -p and ruid!=euid, and the shell is - compiled without SHOPT_P_UID or ruid=SHOPT_P_UID then euid is set - to ruid. A bug that did the wrong test (ruid&1 inside a command substitution wasn't working - correctly has been fixed. -09-02-02 A bug in the call stack of arithmetic function with 2 args - returning int has been fixed. -09-01-30 A bug in which 'eval print \$0' inside a function was giving the - wrong value for $0 has been fixed. -09-01-28 A bug in which a command substitution could return an exit status - of 127 when the pipefail option is enabled has been fixed. -09-01-26 ksh93 now generates an error message if you attempt to create - a global name reference to a local variable. -09-01-26 +The [[ -v var ]] operator was modified to test for array elements. -09-01-23 +The redirection operator <>; was added. It is similar to <> - except that if the command it is applied to succeeds, the file - is truncated to the offset at the command completion. -09-01-23 The default file descriptor for <> was changed to 1. -09-01-20 A bug in which the exit status specified in an exit trap was - not used when a process terminated with a signal has been fixed. -09-01-19 A bug in which a signal whose default action is to terminate - a process could be ignored when the process is running a subshell - has been fixed. -09-01-19 A bug in which sending SIGWINCH to a process that reads from a pipe - could cause a memory fault has been fixed. -09-01-16 +The -R unary operator was added to [[...]] and test to check whether - a variable is a name reference. -09-01-16 +The -v unary operator was added to [[...]] and test to check whether - a variable is set. -09-01-14 The unset built-in was modified to return 0 exit status when - unsetting a variable that was unset to conform with the POSIX - standard. -09-01-14 The unset built-in was modified to continue to unset variables - after encountering a variable that it could not unset to - conform to the POSIX standard. -09-01-14 The parameter expansion ${x+value} no longer expands the value of - the variable x when determining whether x is set or not. -09-01-13 A bug in which background jobs and pipelines that were not waited - for could, in rare instances, cause the shell to go into an infinite - loop or fail has been fixed. -09-01-06 A bug in indexed arrays of compound variables in which referencing - non-existent sub-variable in an arithmetic expression could cause - the sub-variable to be created has been fixed. -09-01-05 A bug in which the \ character did not escape extended regular - expression pattern characters has been fixed. -08-12-24 A bug in which killing the last element of a pipe did not cause - a write to the pipe to generate a SIGPIPE has been fixed. -08-12-19 A bug which could cause command substitution to hang when the - last element of a pipeline in a command substitution was a built-in - and the output was more that PIPE_BUFF. -08-12-18 A bug which occurs when a here documented marker embedded in a - command substitution occurs on a buffer boundary has been fixed. -08-12-17 A bug in the output of typeset -p for variables that had attributes - but did not have a value has been fixed. -08-12-16 A bug in which a name reference to a name reference variable that - references an array element has been fixed. -08-12-16 A bug in which a variable given both the -A and -C attribute along - with an initial assignment didn't work correctly has been fixed. -08-12-10 The [[ -t fd ]] test was fixed to handle fd>9. -08-12-10 A bug where function stack misalignment could cause a bus error - has been fixed. -08-12-09 Command completion was changed to use \ to quote special characters - instead of quoting the argument in single quotes. -08-12-07 A bug in typeset -m which occurred when the target node was an - associative array element has been fixed. -08-12-07 A timing bug on some systems (for example darwin), that could - cause the last process of a pipeline entered interactively to fail - with an "Exec format error" has been fixed. -08-12-04 +SHOPT_BGX enables background job extensions. Noted by "J" in - the version string when enabled. (1) JOBMAX=n limits the number - of concurrent & jobs to n; the n+1 & job will block until a - running background job completes. (2) SIGCHLD traps are queued - so that each completing background job gets its own trap; $! is - set to the job pid and $? is set to the job exit status at the - beginning of the trap. (3) sleep -s added to sleep until the time - expires or until a signal is delivered. -08-12-04 The sign of floating point zero is preserved across arithmetic - function calls. -08-12-04 A bug that caused print(1) to produce garbled stdout/stderr - output has been fixed. -08-12-04 A bug in which printf "%d\n" "''" did not output the - numerical value of the EURO symbol, 8354, has been fixed. -08-11-24 + /dev/fd* and /dev/std* redirections are first attempted with - open() to preserve seek semantics; failing that the corresponding - file descriptors are dup()'d. -08-11-20 A bug which could cause a core dump if a function compiled with - shcomp was found has been fixed. -08-11-20 A bug in which jobs were not cleared from the jobs table for - interactive shells when the pipefail option is on has been fixed. -08-11-11 A bug in which a field that was unset in a type definition and later - set for an instance could appear twice when displaying the variable - has been fixed. -08-11-11 A bug in which running a simple command & inside a function would - not return the correct process id has been fixed. -08-11-10 A bug in which the exit status of a command could be lost if the pid - was that of the most recent command substitution that had completed - has been fixed. -08-11-10 The maximum depth for subshells has been increased from 256 to 65536. -08-11-06 A bug which could cause a core dump when the _ reference variable was - used as an embedded type with a compound assignment has been fixed. - -08-10-31 --- Release ksh93t --- -08-10-31 Variable scoping/initialization bugs that could dump core were fixed. -08-10-24 The lexer now accepts all RE characters for patterns prefixed - with a ksh ~(...) option expression. -08-10-24 +For ${var/pat/sub} \0 in sub expands to the text matched by pat. -08-10-18 A bug in array scoping that could dump core has been fixed. -08-10-10 read -n and -N fixed to count characters in multibyte locales. -08-10-10 A bug that mishandled _.array[] type references has been fixed. -08-10-09 +${.sh.version} now contains a concatenation of the following (after - 'Version') denoting compile time features: - A SHOPT_AUDIT - B SHOPT_BASH - L SHOPT_ACCT - M SHOPT_MULTIBYTE -08-10-09 A bug that caused subshell command substitution with redirection - to hang has been fixed. -08-10-08 Output errors, other than to stderr, now result in a diagnostic. -08-10-08 ksh93 now supports types that contain arrays of other types as - members. Earlier versions core dumped in this case. -08-10-05 A bug which caused the shell to emit a syntax error for an arithmetic - statement of the form (( var.name[sub] = value)) has been fixed. -08-10-01 A bug that caused subshell command substitution to hang has - been fixed. -08-09-29 When the -p export option of typeset is used with other options, - only those variables matching the specified options are displayed. -08-09-29 When the shell reads the environment and finds variables that are - not valid shell assignments, it now passes these on to subsequent - commands rather than deleting them. -08-09-29 A bug in the display of compound variables containing an indexed - array of compound variables has been fixed. -08-09-29 A bug in the display of compound variables containing an associative - array with a subscript containing a . in the name has been fixed. -08-09-26 A core dump in the subshell environment restore has been fixed. -08-09-24 $(...) has been fixed to properly set the exit status in $?. -08-09-23 $(<...) with IFS=$'\n\n' has been fixed to retain all but the last - of multiple trailing newlines. -08-09-23 The -p option to typeset when used with other attributes, restricts - the output to variables with the specified attributes. -08-09-22 A bug that sometimes lost the exit status of a job has been fixed. -08-09-21 A bug that retained trailing command substitution newlines in - cases where the command caused the shell to fork has been fixed. -08-09-19 type, whence -v, and command -v were fixed to comply with POSIX - by writing 'not found' diagnostics to the standard error. -08-09-18 test and [...] were fixed to comply with POSIX in the case - of test '(' binop ')' where binop is a valid binary test operator. -08-09-16 +If a method discipline named create is specified when defining a - type, this function will be called when an instance is created. -08-09-15 +The variable _ is now set as a reference to the compound variable - when defining a compound variable or a type. -08-09-10 The shell now prints an error message when the type name specified - for an indexed array subscript is not an enumeration type. -08-09-10 A bug in which a subshell that spawned a background process could - loose output that was produced after the foreground completed - has been fixed. -08-09-10 A timing bug on some systems that could cause coprocesses started by a - subshell to not clean up and prevent other coprocesses has been fixed. -08-09-09 The typeset -m option is now able to rename array elements from - the same array. -08-09-09 The exit status of 2 from the DEBUG trap causes the next command - to be skipped. An exit value of 255 from a DEBUG trap called from - a function causes the function to return. -08-09-08 A bug in which a coprocess created in a subshell that did not - complete when the subshell terminated could prevent a coprocess - from being created in the parent shell has been fixed. -08-09-05 An assignment of the form name1=name2 where name1 and name2 - are both compound variables causes name1 to get a copy of name2. - name1+=name2 causes name2 sub-variables to be appended to name1. -08-09-05 A bug in which unsetting a compound variable did not unset all - the sub-variables has been fixed. -08-09-01 A bug in the subshell cleanup code that could cause SIGSEGV has - been fixed. -06-08-26 +The SHLVL variable which is an environment variable used by bash - and zsh that gets incremented when the shell starts. -08-08-25 +For an indexed array, a negative subscript now refers to offsets - from the end so that -1 refers to the last element. -08-08-24 An alignment error for shorts on 64 bit architectures has been fixed. -08-08-22 If oldvar is a compound variable, typeset -C newvar=oldvar creates - newvar as a copy of oldvar. -08-08-19 +The ALRM signal no longer cause the sleep builtin to terminate. -08-08-13 When used in an arithmetic expression, the .sh.version variable - now produces a number that will be increasing for each release. -08-08-11 A bug in which type instantiation with a compound assignment in - a dot script in which the type is defined has been fixed. -08-08-07 +The -m option has been added to typeset to move or rename a - variable. Not documented yet. -08-08-06 A bug in read when used in a loop when a prompt was specified - when reading from a terminal has been fixed. -08-08-01 A bug with the pipefail option in which a nested pipeline could - cause an asynchronous command to block has been fixed. -08-08-01 A for loop optimizer bug that treats .sh.lineno as an invariant - has been fixed. -08-07-30 A bug in which expanding compound variable that had a get discipline - from with a here document could cause a syntax error has been fixed. -08-07-18 A bug in which a nameref caused a local variable to be created - rather than binding to an existing variable in the global scope - has been fixed. -08-07-17 A bug which occurred when a nameref was created from within a - function that was part of a pipeline has been fixed. -08-07-14 +The compile option SHOPT_STATS was added. With this option the - compound variable .sh.stats keeps usage statistics that could help - with performance tuning. -08-07-10 +The output of set now always uses a single line for each variable. - For array variables, the complete set of values is now displayed. -08-07-09 +The typeset -C option can be used with arrays to indicate that - each element should default to a compound variable. -08-07-08 +The %B format now outputs compound variables and arrays. The - alternate flag # can be used to cause output into a single line. -08-07-03 When the window change signal, WINCH, is received, the current - edit line is redrawn in place. -08-07-01 A bug in the handling of shared variables when inside an embedded - type has been fixed. -08-06-29 A bug in multiline edit mode which occurred when the prompt length - was three characters or less has been fixed. -08-06-23 A bug in which the SIGCLD was not be triggered when background - jobs completed has been fixed. -08-06-23 _KSH_VERSION added as a name reference to .sh.version. -08-06-20 type now outputs 'special builtin' for special builtins. -08-06-19 A couple of bugs in multi-dimensional arrays have been fixed. -08-06-19 A bug in which a syntax error in a dot script could generated - a syntax error in the next subsequent command has been fixed. -08-06-17 Reduced the maximum function call depth to 2048 to avoid exceptions - on some architectures. -08-06-16 A bug in which printf "%B" could generate an exception when the - specified variable was not set has been fixed. -08-06-16 +When typeset -p is followed by variable names, it now displays - the attributes names and values for the specific names. -08-06-14 A bug that could effect the drawing of the screen from multiline - emacs or gmacs mode when walking up the history file has been fixed. -08-06-13 A bug in which a compound variable defined in a subshell could - have side effects into the parent shell has been fixed. -08-06-13 A number of bugs related to using .sh.level to set the stack from - for DEBUG traps have been fixed. -08-06-13 +The .sh.lineno variable has been added. When .sh.level is changed - inside a DEBUG trap, the .sh.lineno contains the calling line number - for the specified stack frame. -08-06-13 The .sh.level variable has been documented and now works. -08-06-11 +The -C option has been added to read for reading compound command - definitions from a file. -08-06-11 +The . command is now permitted inside a compound command definition. - The dot script can contain declaration commands and dot commands. -08-06-09 +Add -C option to typeset so that typeset -C foo, is equivalent - to foo=(). -08-06-09 Added -n warning message for typeset option orderings that are valid - with ksh88 but not valid with ksh93, for example Lx5. -08-06-09 A bug in which the return value for an assignment command containing - a command substitution with that failed was zero when the assignment - contained redirections has been fixed. -08-06-09 A bug in the quoting of $ inside a ERE pattern ~(E)(pattern) - has been fixed. -08-06-06 A bug when processing `` command substitution with the character - sequence \$' has been fixed. -08-06-02 +When defining a type, the typeset -r attribute causes this field - to be required to be specified for each instance of the type and - does not allow a default value. -08-06-02 Several bugs in which compound variables were modified by - subshells have been fixed. -08-05-22 +The ceil function has been added to the math functions. -08-05-21 A bug in which a name reference defined in a function and passed - as an argument to another function could cause an incorrect binding. -08-05-21 A bug in freeing compound variables that are local to functions - has been fixed. -08-05-19 +The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} - to expand to the value (or subscripts) for array between sub1 and - sub2 inclusive. For associative arrays, the range is based on - location in the POSIX locale. The .. must be explicit and cannot - result from an expansion. -08-05-15 The trap on SIGCLD is no longer triggered by the completion of - the foreground job as with ksh88. -08-05-14 A bug in the implementation of the editing feature added on - 07-09-19 in emacs mode has been fixed. -08-05-12 A bug in processing the test built-in with parenthesis has been - fixed. -08-05-12 The unset built-in now returns non-zero when deleting an array - subscript that is not set. -08-05-08 +Changing the value of HISTFILE or HISTSIZE will cause the old - history file to be close and reopened with the new name or size. -08-05-08 When FPATH is changed functions that were found via a path search - will be searched for again. -08-05-08 A parser bug in which reserved words and labels were recognized - inside compound indexed array assignment after a new-line has - been fixed. -08-05-07 A bug in getopts when handling numerical option arguments has - been fixed. -08-05-07 +The typeset -S option was added for variables outside type - definitions to provide a storage class similar to C static - inside a function defined with function name. When outside - type definitions and outside a function, the -S option cause - the specified variable so be unset before the assignment and - before the remaining attributes are supplied. -08-05-07 A bug that affected the cursor movement in multiline mode when - a character was deleted from near the beginning of the any - line other than the first. -08-05-01 In multiline edit mode, the refresh operation will now clear - the remaining portion of the last line. -08-05-01 A bug in computing prompt widths for the edit modes for prompts - with multibyte characters has been fixed. -08-05-01 A bug in the multiline edit mode which could cause the current - line to be displayed incorrectly when moving backwards from third - or higher line to the previous line has been fixed. -08-05-01 A bug in which options set in functions declared with the function - name syntax were carried across into functions invoked by these - functions has been fixed. -08-04-30 A bug which could cause a coprocess to hang when the read end - is a builtin command has been fixed. -08-04-30 +The emacs and vi editors have been modified to handle window - change commands as soon as they happen rather than waiting for - the next command. -08-04-28 A bug in which ${!x} did not expand to x when x was unset has been - fixed. -08-04-27 A bug in which the assignment x=(typeset -a foo=([0]=abc)) created - x.foo as an associative array has been fixed. -08-04-25 A bug in which $# did not report correctly when there were more - than 32K positional parameters has been fixed. -08-04-04 Choose the name _ as the sub-variable that holds type or instance - specific data used by discipline functions. -08-03-27 A bug in which the terminal group was not given back to the parent - shell when the last part of a pipeline was handled by the parent shell - and the other parts of the pipeline complete has been fixed. - The symptom was that the pipeline became uninterruptible. -08-03-25 A bug in restricted mode introduced in ksh93s that caused scripts - that did not use #! to executed in restricted mode has been fixed. -08-03-25 A bug in which the pipefail option did not work for a pipeline - within a pipeline has been fixed. -08-03-24 A bug in which OPTIND was not set correctly in subshells has - been fixed. -08-03-24 A bug which could cause a memory exception when a compound variable - containing an indexed array with only element 0 defined was expanded. -08-03-20 A bug in which ${!var[sub].*} was treated as an error has been fixed. -08-03-20 Associative array assignments of the form ([name]=value ...) - now allow ; as well as space tab and new line to separate elements. -08-03-18 A buffering problem in which standard error was sometimes - not flushed before sleep has been fixed. -08-03-17 A bug in which a signal sent to $$ while in a subshell would be - sent to the subshell rather than the parent has been fixed. -08-03-17 + A --default option added to set(1) to handle set +o POSIX semantics. - set --state added as a long name alias for set +o. -08-03-14 A bug in which using monitor mode from within a script could - cause the terminal group to change has been fixed. -08-03-10 The new ${...} command substitution will treat the trailing } - as a reserved word even if it is not at the beginning of a command, - for example, ${ date }. -08-03-10 If the name of the ENV begins with /./ or ././ then the - /etc/ksh.kshrc file will not be executed on systems that support - this interactive initialization file. -08-03-07 A bug in which ksh -i did not run the ENV file has been fixed. -08-03-07 A bug in which ulimit did not always produce the same output as - ulimit -fS has been fixed. -08-03-04 A bug in multiline mode in emacs and vi mode which could cause the - cursor to be on the wrong line when interrupt was hit has been fixed. -08-03-03 The change made in ksh93s+ on 07-06-18 in which braces became - optional for ${a[i]} inside [[...]] was restored in the case - where the argument can be a pattern. -08-03-03 A bug in which creating a name reference to an associative array - instance would fail when the subscript contained characters [ or - ] has been fixed. -08-02-29 +The redirection operator >; has been added which for non-special - files, generates the output in a temporary file and writes the - specified file only of the command has completed successfully. -08-02-15 A bug in ${var/pattern/string} for patterns of the form ?(*) and +(*) - has bee fixed. -08-02-07 A bug in which test \( ! -e \) produced an error has been fixed. -08-02-14 +The typeset -a option can now optionally be followed by the name - of an enumeration type which allows subscripts to be enumerations. -08-02-14 +The enum builtin which creates enumeration types has been added. -08-02-12 The backoff logic when there are no more processes has been fixed. -08-02-07 The -X option has been added to typeset. The -X option creates - a double precision number that gets displayed using the C99 %a - format. It can be used along with -l for long double. -08-01-31 The -T option to typeset has been added for creating typed - variables. Also the -h and -S options have been added to - typeset that are only applicable when defining a type. -08-01-31 The prefix expansion operator @ has been added. ${@name} - expands to the type of name or yields the attributes. -07-11-15 A bug in the macro expander for multibyte characters in which - part of the character contains a file pattern byte has been fixed. -07-10-03 A bug in which : was not allowed as part of an alias name has been - fixed. -07-09-26 A bug in which appending a compound variable to a compound variable - or to an index array didn't work has been fixed. -07-09-19 In both emacs and vi edit mode, the escape sequence \E[A (usually - cursor up, when the cursor is at the end of the line will fetch - the most recent line starting with the current line. -07-09-18 The value of ${!var} was correct when var was a reference to an - array instance. -07-09-18 The value of ${!var[sub]} was not expanding to var[sub] and this - was fixed. It also fixed ${name} where name is a name reference - to var[sub]. -07-09-18 +It is now legal to create a name reference without an initialization. - It will be bound to a variable on the first assignment. -07-08-30 +A discipline function can be invoked as ${x.foo} and is equivalent - to ${ x.foo;} and can be invoked as x.foo inside ((...)). -07-07-09 A bug in which typeset -a did not list indexed arrays has been - fixed. -07-07-03 +The command substitution ${ command;} has been added. It behaves - like $(command) except that command is executed in the current - shell environment. The ${ must be followed by a blank or an - operator. - -08-04-17 --- Release ksh93s+ --- -08-04-17 A bug in which umask was not being restored correctly after a - subshell has been fixed. -08-04-15 A bug in which sending a STOP signal to a job control shell started - from within a shell function caused cause the invoking shell to - terminate has been fixed. -08-04-11 A bug which caused $(exec > /dev/null) to go into an infinite loop - has been fixed. -08-03-27 A bug in which typeset -LZ was being treated as -RZ has been fixed. -08-03-06 A bug with ksh -P on systems that support the the profile shell, - in which it would exit after running a non-builtin has been fixed. -08-01-31 A bug in which command substitution inside ((...)) could cause - syntax errors or lead to core dumps has been fixed. -08-01-17 A bug in which discipline functions could be deleted when invoked - from a subshell has been fixed. -08-01-17 A bug in which a command substitution consisting only of - assignments was treated as a noop has been fixed. -08-01-17 A bug in which discipline functions invoked from within a - compound assignment could fail has been fixed. -08-01-16 Incomplete arithmetic assignments, for example ((x += )), now - generate an error message. -08-01-16 A bug in which a set discipline defined for a variable before - an array assignment could cause a core dump has been fixed. -08-01-03 A bug in on some systems in which exit status 0 is incorrectly - returned by a process that catches the SIGCONT signal is stopped - and then continued. -07-12-13 A race condition in which a program that has been stopped and then - continued could loose the exit status has been fixed. -07-12-12 Code to check for file system out of space write errors for all - writes has been added. -07-12-11 A bug in the macro expander for multibyte characters in which - part of the character contains a file pattern byte has been fixed. -07-12-06 A bug in the emacs edit mode when multiline was set that output - a backspace before the newline to the screen has been fixed. -07-12-04 A bug in which using TAB after a variable name listing expansion - in the edit modes would cause the $ to disappear has been fixed. -07-11-28 A bug in which setting IFS to readonly could cause a subsequent - command substitution to fail has been fixed. -07-11-27 A work around for a gcc 4.* C99 "feature" that could cause a job - control shell to go into an infinite loop by adding the volatile - attribute to some auto vars in functions that call setjmp(). -07-11-27 A bug in which the shell could read ahead on a pipe causing the - standard input to be incorrectly positioned has been fixed. -07-11-27 A bug in which compound variable UTF-8 multibyte values were not - expanded or traced properly has been fixed. -07-11-21 A bug where an unbalanced '[' in a command argument was not treated - properly has been fixed. -07-11-15 A bug in which compatibility mode (no long option names) getopts(1) - incorrectly set the value of OPTARG for flag options has been fixed. -07-11-15 A bug in which "hash -- name" treated "--" as an invalid name operand - has been fixed. -07-11-15 typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility. -07-11-15 A bug in which the umask builtin mis-handled symbolic mode operands - has been fixed. -07-11-15 Bugs in which shell arithmetic and the printf builtin mis-handled the - signs of { -NaN -Inf -0.0 } have been fixed. -07-11-15 +The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range - of signals, determined at runtime, are now supported. -07-11-15 A bug in which creating an index array with only subscript 0 created - only a simple variable has been fixed. -07-11-14 A bug in which appending to an indexed array using the form - name+=([sub]=value) could cause the array to become an associative - array has been fixed. -07-11-14 A bug in which typeset without arguments could coredump if a - variable is declared as in indexed array and has no elements has - been fixed. -07-11-14 A bug in which creating a local SECONDS variable with typeset in - a function could corrupt memory has been fixed. -07-11-14 A bug which could cause a core dump when a script invoked by name - from a function used compound variables has been fixed. -07-11-05 A bug in which printf %d "'AB" did not diagnose unconverted characters - has been fixed. -07-11-05 printf %g "'A" support added for all floating point formats. -07-11-01 A bug in which typeset -f fun did not display the function definition - when invoked in a subshell has been fixed. -07-10-29 The sleep builtin was fixed so that all floating point constants - are valid operands. -07-10-10 A bug in which the locale was not being restored after - LANG=value command has been fixed. -07-09-20 A bug in which a nameref to a compound variable that was local - to the calling function would not expand correctly when displaying - is value has been fixed. -07-09-19 A bug which cause cause a core dump if .sh.edchar returned - 80 characters or more from a keyboard trap has been fixed. -07-09-14 A bug in which could cause a core dump when more than 8 file - descriptors were in use has been fixed. -07-09-10 A bug in which creating a name reference to an instance of - an array when the array name is itself a reference has been fixed. -07-09-10 The file completion code has been modified so that after an = in - any word, each : will be considered a path delimiter. -07-09-06 A bug in which subprocess cleanup could corrupt the malloc() heap - has been fixed. -07-08-26 A bug in which a name reference to an associative array instance - could cause the subscript to be evaluated as an arithmetic expression - has been fixed. -07-08-22 A bug in which the value of an array instance was of a compound - variable was not expanded correctly has been fixed. -07-08-14 A bug which could cause a core dump when a compound assignment was - made to a compound variable element with a typeset -a attribute - has been fixed. -07-08-08 A bug in which a trap ignored in a subshell caused it to be - ignored by the parent has been fixed. -07-08-07 A bug in which the set command would generated erroneous output - for a variable with the -RZ attribute if the variable name had been - passed to a function has been fixed. -07-08-02 A bug in which read x[1] could core dump has been fixed. -07-08-02 A second bug in which after read x[sub] into an associative array - of an element that hasn't been assigned could lead to a core dump - has been fixed. -07-07-31 A bug in which a pipeline that completed correctly could have - an exit status of 127 when pipefail was enabled has been fixed. -07-07-09 +The SHOPT_AUDIT compile option has been added for keyboard logging. -07-06-25 In vi insert mode, ksh no longer emits a backspace character - before the carriage return when the newline is entered. -07-06-25 A bug in which pipefail would cause a command to return 0 - when the pipeline was the last command and the failure happened - on a component other than the last has been fixed. -07-06-25 A bug in the expansion of ${var/pattern/rep} when pattern or rep - contained a left parenthesis in single quotes has been fixed. -07-06-18 The braces for a subscripted variable with ${var[sub]} are now - optional when inside [[...]], ((...)) or as a subscript. -07-05-28 A bug in brace expansion in which single and double quotes did - not treat the comma as a literal character has been fixed. -07-05-24 The -p option of whence now disables -v. -07-05-23 Several bug fixes in compound variables and arrays of arrays - have been made. -07-05-15 A bug in which the %B format of printf was affected by the - locale has been fixed. -07-05-14 A bug in which \ was not removed in the replacement pattern with - ${var/pattern/rep} when it was not followed by \ or a digit has - been fixed. -07-05-10 A bug in which ksh -R file core dumped if no script was specified - has been fixed. it not displays an error message. -07-05-07 Added additional Solaris signals to signal table. -07-04-30 A bug in which a pipeline with command substitution inside a - function could cause a pipeline that invokes this function to - hang when the pipefail option is on has been fixed. -07-04-30 +Added -q to whence. -07-04-18 A small memory leak with each redirection of a non-builtin has - been fixed. -07-03-08 A bug in which set +o output command line options has been fixed. -07-03-08 A bug in which an error in read (for example, an invalid variable - name), could leave the terminal in raw mode has been fixed. -07-03-06 A bug in which read could core dump when specified with an array - variable with a subscript that is an arithmetic expression has - been fixed. -07-03-06 Several serious bugs with the restricted shell were reported and - fixed. -07-03-02 If a job is stopped, and subsequently restarted with a CONT - signal and exits normally, ksh93 was incorrectly exiting with - the exit status of the stop signal number. -07-02-26 +M-^L added to emacs mode to clear the screen. -07-02-26 A bug in which setting a variable readonly in a subshell would - cause an unset error when the subshell completed has been fixed. -07-02-19 +The format with printf uses the new = flag to center the output. -07-02-19 A bug in which ksh93 did not allow multibyte characters in - identifier names has been fixed. -07-02-19 A bug introduced in ksh93 that causes global compound variable - definitions inside functions to exit with "no parent" has been fixed. -07-02-19 A bug in which using compound commands in process redirection - arguments would give syntax errors <(...) and >(...) has been fixed. -07-01-29 A bug which caused the shell to core dump which can occur when a - built-in exits without closing files that it opens has been fixed. -07-01-26 A bug in which ~(E) in patterns containing \ that are not inside () - has been fixed. - -06-12-29 --- Release ksh93s --- -06-12-29 A bug in which the value of IFS could be changed after a command - substitution has been fixed. -06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on - systems that provide getaddrinfo(3). -06-12-19 +A -v option was added to read. With this option the value of - the first variable name argument will become the default value - when read from a terminal device. -06-11-20 A bug in which "${foo[@]:1}}" expands a null argument (instead of - no argument), when foo[0] is not empty has been fixed. -06-11-16 The discipline functions have been modified to allow each subscript - to act independently. Currently the discipline function will not - be called when called from a discipline function of the same variable. -06-11-14 A bug which could cause a core dump if a file descriptor for - an internal file was closed from with a subshell has been fixed. -06-10-30 +The redirections <# pattern, and <## pattern have been added. - Both seek forward to the beginning of the next line that contains - the pattern. The <## form copies the skipped portion to standard - output. -06-10-26 +On systems that support stream control transport, the virtual file - name /dev/sctp/host/port can now be used to establish connections. -06-10-26 +The printf modifier # when used with d produces units in thousands - with a single letter suffix added. The modifier # when used with - the i specification provides units of 1024 with a two letter suffix. -06-10-24 The value of $! is now set to the process id of a job put - into the background with the bg command as required by POSIX. -06-10-23 A bug in which the value of $! was affected by a background - job started from a subshell has been fixed. -06-10-23 A bug in ${var:offset:len} in multibyte locales has been fixed. -06-10-15 +The remaining math functions from C99 were added for any system - that supports them. -06-10-13 The klockwork.com software detected a few coding errors that - have been fixed. -06-10-12 A bug when skipping over `...` with ${x:=`...`} when x is set - has been fixed. -06-10-11 A bug in process floating constants produced by the %a format - of printf has been fixed. -06-10-06 A bug in which IFS was not being restored correctly in some - cases after a subshell has been fixed. -06-10-06 A bug in which pipefail was not detecting some failures in - pipelines with 3 or more states has been fixed. -06-10-03 A bug in the processing of >(...) with builtins which could - cause the builtin to hang has been fixed. -06-10-03 A bug in the for loop optimizer which causes >(...) process - substitution to be ignored has been fixed. -06-09-17 +The -a option was added to typeset for indexed arrays. This - is only needed when using the ([subscript]=value ...) form. -06-09-06 +The showme option was added. Each simple command not beginning - with a redirection and not occurring with in the while, until, if, - select condition can be preceded by a semi-colon which will - be ignored when showme is off. When showme is on, any command - preceded by a colon will be traced but not executed. -06-08-16 +As a new feature, a leading ~(N) on a pattern has no effect - except when used for file expansion. In this case if not - matches are found, the pattern is replaced by nothing rather - than itself. -06-08-11 A bug in the expansion of ${.sh.match[i]:${#.shmatch[i]}} has - been fixed. -06-08-10 +The read builtin options -n and -N have been modified to treat - the size as characters rather than bytes unless storing into a - binary (typeset -B) variable. -06-07-27 +When the here document operator << is followed directly by a # - rather than a -, the first line of the here-document determines - how much whitespace is removed for each line. -06-07-26 A bug in the C-shell history (enabled with set -H) in which the - history event !$ was not processed has been fixed. -06-07-21 A bug on some systems in which assigning PATH on a command line - would not take effect has been fixed. -06-07-20 Add ksh93 and rksh93 as allowable names for ksh binaries. -06-07-20 Removed the SHOPT_OO compilation option which was only partially - implemented. -06-07-20 The ability to use egrep, grep, and fgrep expressions within - shell patterns has been documented. -06-07-17 A bug with arithmetic command expressions for locales in which - the comma is a thousands separator has been fixed. -06-07-13 +The default HISTSIZE was increased from 128 to 512. -06-07-13 A multibyte problem with locales that use shift codes has been fixed. -06-06-23 A number of bug fixes for command, file, and variable completion - have been mode. -06-06-20 +Floating point division by zero now yields the constant Inf or -Inf - and floating functions with invalid arguments yield NaN. -06-06-20 +The floating point constants Inf and NaN can be used in arithmetic - expressions. -06-06-20 +The functions isinf(), isnan(), tanhl() have been added for - arithmetic expressions. -06-06-13 Internal change to use ordering for variables instead of hashing - to speed up prefix matching. -06-06-13 A window between fork/exec in which a signal could get lost - and cause a program to hang has been eliminated -06-06-13 A bug in edit completion with quoted strings has been fixed. -06-06-07 The restricted options can now be enabled by set as well as on - the command line. Once set, it can not be disabled. -06-06-04 Modified built-in binding so that for systems for which /bin - and /usr/bin are the same, a builtin bound to /bin will get - selected when either /bin or /usr/bin is scanned. -06-06-04 +Added literal-next character processing for emacs/gmacs mode. - This change is not compatible with earlier versions of ksh93 - and ksh88 when the stty lnext is control-v. The sequence - escape-control-v will display the shell version. -06-05-31 +Modified emacs and vi mode so that entering a TAB after a partial - TAB completion, generates a listing of possible completions. - After the second TAB, a number followed by a TAB will perform - the completion with the corresponding item. -06-05-19 +Modified arithmetic so that conversions to strings default to - the maximum number of precision digits. -06-05-16 Bug fixes for multibyte locales. -06-05-10 The =~ operator was added to [[...]] and [[ string ~= ERE ]] - is equivalent to [[ string == ~(E)ERE ]]. -06-04-25 A bug in the vi edit mode which could cause the shell to core dump - when switching from emacs mode. -06-04-17 A bug in which using LANG or LC_ in assignment lists with builtins - did not restore the locale correctly has been fixed. -06-04-04 A bug in which discipline functions could not be added to variables - whose names started with .sh has been fixed. -06-03-28 +The -s option to typeset was added to modify -i to indicate short - integers. -06-03-28 A bug in which variables assignment lists before functions - defined with function name were not passed on the functions - invoked by this function has been fixed. -06-03-28 A bug in which name references defined within a function defined - with function name could not be used with compound variables has - been fixed. -06-03-27 A bug in which read <&p (print >&p) would cause the coprocess input - (output) pipe to close before reading from (after writing to) - it has been fixed. -06-02-28 A bug in which stopping a job created with the hist builtin command - would create a job that could not be restarted has been fixed. - -06-01-24 --- Release ksh93r --- -06-01-24 A bug in which running commands with standard output closed would - not work as expected has been fixed. -06-01-23 A bug in which print -u could fail when file descriptor was - open for writing has been fixed. -06-01-19 The ?: arithmetic operator fixed to work when the operation after - the colon was an assignment. -05-12-24 A bug which could lead to a core dump when elements of a compound - variable were array elements, i.e. foo=(bar=(1 2)), has been fixed. -05-12-13 An arithmetic bug in which x+=y+=z was not working has been fixed. -05-12-13 An arithmetic bug in which x||y was returning x when x was non-zero - rather than 1 has been fixed. -05-12-07 +The aliases for integer and float have been changed to use attributes - -li and -lE to handle long long and long double types. -05-12-07 +The histexpand (-H) option has been added which allows C-shell - style history expansions using the history character !. -05-12-07 +The multiline option was added which changes that way the edit - modes handle lines longer than the window width. Instead of - horizontal scrolling, multiple lines on the screen are used. -05-12-05 The whence builtin now returns an absolute pathname when the - command is found in the current directory. -05-11-29 A bug which caused ksh -c '[[ ! ((' to core dump rather than - report a syntax error has been fixed. -05-11-29 A bug when reading fixed length records into typeset -b variables - which caused a zero byte to terminate the value has been fixed. -05-11-22 +The ability to seek to an offset within a file has been added - with the new I/O redirection operators, <# and >#. Currently, - these redirection operators must be followed by ((expr)) - but in a future release, it should be able to used to seek forward - to the specified shell pattern. In addition $(n<#) expands to the - current byte offset for file descriptor n. -05-11-22 +The .sh.match array variable is now set after each [[ ... ]] - pattern match. Previously it was only set for substring matches. -05-10-17 A bug in which the library path variable could be prefixed - with a directory when a .path file was not encountered in - the directory of the executable has been fixed. -05-09-15 A for/while loop optimizer bug in which $OPTIND was not - correctly expanded has been fixed. -05-09-05 A bug in which a history command that invoked a history - command could go into an infinite loop has been fixed. -05-08-31 +In the case that IFS contains to adjacent new-lines so that - new-line is not treated as a space delimiter, only a single - new-line is deleted at the end of a command substitution. -05-08-19 +When a tilde substitution expands to the / directory and is - followed by a /, it is replaced by the empty string. -05-08-16 A bug in which n<&m did not synchronize m has been fixed. -05-08-16 A bug in which process substitution ( <() and >() ) was not - working within for and while loops has been fixed. -05-07-24 A bug in which the pattern ~(E)(foo|bar) was treated as a syntax - error has been fixed. -05-07-24 A bug in completion with =, where n was the one of the - previous selection choices has been fixed. -05-07-21 A bug with multibyte input when no edit mode was specified which - caused the input line to shift left/right has been fixed. -05-06-24 A race condition which could cause the exit status to get lost - on some fast systems has been fixed. -05-06-21 A bug in which nested patterns of the form {m,n}(pat) would cause - syntax errors has been fixed. -05-06-21 A bug in the macro expander has been fixed which could cause a - syntax error for an expansion of the form ${x-$(...)} when - x is set and the command substitution contained certain strings. -05-06-08 +On systems for which echo does not do System V style \ expansions, - the -e option was added to enable these expansion. -05-06-08 A bug in which ${var op pattern} to not work when inside an - arithmetic expression has been fixed. -05-05-23 +An extension to shell patterns that allows matching of nested - groups while skipping over quoted strings has been added. -05-05-18 A bug in which the line number for errors was not correct for - functions loaded from FPATH has been fixed. -05-04-18 A bug in which the exit status $? is not set when a trap triggered - by the [[...]] command is executed has been fixed. -05-04-08 +Redirection operators can be directly preceded with {varname} - with no intervening space, where varname is a variable name which - allows the shell to select a file descriptor > 10 and store it - into varname. -05-04-08 +SHOPT_CMDLIB_BLTIN=1 now includes generated table. -05-04-07 +[[ -o ?option ]] is true if "option" is a supported option. -05-04-05 A bug in handling file completion with spaces in the names - has been fixed. -05-03-25 +The SIGWINCH signal is caught by default to keeps the LINES and - COLUMNS variables in sync with the actual window size. -05-03-25 +Building ksh with SHOPT_REMOTE=1 causes ksh to set --rc if stdin is - a socket (presumably part of a remote shell invocation.) -05-03-25 +Building ksh with SHOPT_SYSRC=1 causes interactive ksh to source - /etc/ksh.kshrc (if it exists) before sourcing the $ENV file. -05-03-25 +{first..last[..incr][%fmt]} sequences added to brace expansions - when braceexpand is enabled. -05-03-03 A bug where a SIGCHLD interrupt could cause a fifo open to fail has - been fixed. -05-02-25 A bug in which a builtin command run in the background could - keep a file descriptor open which could cause a foreground - process to hang has been fixed. -05-02-24 A bug where builtin library commands (e.g., date and TZ) failed to - detect environment variable changes has been fixed. -05-02-22 +The read builtin and word splitting are now consistent with respect - to IFS -- both treat IFS as field delimiters. -05-02-22 +The read builtin no longer strips off trailing delimiters that - are not space characters when there are fewer variables than fields. -05-02-17 A builtin bug on systems where dlsym(libcmd) returns link-time - bindings has been fixed. -05-02-12 A bug in which the lib_init() function for .paths BUILTIN_LIB - libraries was not called has been fixed. -05-02-06 A bug on some systems in which moving the write end of a co-process - to a numbered file descriptor could cause it to close has been fixed. -05-02-06 A bug in the vi-edit mode in which the character under the cursor - was not deleted in some cases with the d% directive has been fixed. -05-02-06 A bug where external builtin stdout/stderr redirection corrupted - stdout has been fixed. -05-02-04 A bug where times formatting assumed CLK_TCK==60 has been fixed. - -05-01-11 --- Release ksh93q --- -05-01-11 A bug in the integral divide by zero check has been fixed. -05-01-11 +The -l option has been added to read /etc/profile and - $HOME/.profile, if they exist, before the first command. -05-01-11 An argument parsing bug that caused `kill -s x -- n' to fail has - been fixed. -05-01-11 +The .paths file, introduced in ksh93m, which can appear in - any directory in PATH, now allows a line of the form 'BUILTIN_LIB=.' - When a command is searched for this directory, and the full path - matches the path of the built-in version of the command (listed - by the 'builtin' command) then the built-in version of the command - is used. When ksh is built with SHOPT_CMDLIB_DIR=1 then all libcmd - functions become builtins with the '/opt/ast/bin/' directory prefix. -05-01-10 A bug in which a nameref to a compound name caused a core dump has - been fixed. -05-01-09 A bug in which some SIGCHLD interrupts (from child processes exiting) - caused a fatal print/echo error diagnostic has been fixed. -04-12-24 A bug in which some SIGCHLD interrupts (from child processes exiting) - corrupted the internal process/job list, sometimes causing the shell - to hang, has been fixed. -04-12-01 A bug in which typeset -Fn truncated less than n digits for large - numbers has been fixed. -04-11-25 A bug in which standard error could be closed after a redirection - to /dev/stderr has been fixed. -04-11-17 A bug in which an expansion of the form ${array[@]:3} could expand - to ${array[0]} when ${array[3]} was not set has been fixed. -04-10-22 +The -E or -orc command line option reads ${ENV-$HOME/.kshrc} file. -04-10-22 +`-o foo' equivalent to `+o nofoo', `-o nobar' equivalent to `+o bar'. - `--foo' equivalent to `-o foo', `--nofoo' equivalent to `+o foo' -04-10-05 +The .paths file, introduced in ksh93m, which can appear in - any directory in PATH, now allows a line of the form - 'BUILTIN_LIB=libname'. When a command is searched for this directory, - the shared library named by libname will first be searched for a - built-in version of the command. -04-09-03 <<< here documents now handle quotes in the word token correctly. -04-08-08 +The maximum size for read -n and and read -N was increased from - 4095 to 32M. -04-08-04 +printf %q was modified so that if an no operand was supplied, no - no output would be generated rather than a quoted empty string. -04-08-01 +The -n and -N options of the read builtin has been modified - when reading variables with the binary attribute so that the - data is stored directly rather than through assignment. -04-08-01 +The shcomp command has been modified to process alias commands - under some conditions. -04-07-31 +The .sh.match variable added in ksh93l, now works like other - indexed arrays. -04-07-08 A loop optimizer bug which occurs when typeset is used in - a for or while loop inside a function has been fixed. -04-06-24 +The number of subexpressions in a pattern was increased to 64 - from the current number of 20. -04-06-17 +The -t option to read was modified to allow seconds to be - specified as any arithmetic expression rather than just - an integral number of seconds, for example even -t 'sin(.5)' - is now valid. -04-06-16 Two small memory leak problems were fixed. -04-06-15 A bug in ${var/pattern/"string"} which occurred when string - contained pattern matching characters has been fixed. -04-05-08 printf $'%d\n' produced an erroneous error message and has - been fixed. -04-05-24 A bug in which an associative array without any elements could - cause a core dump when a script with an associative array with - the same name was declared in a script invoked by name has - been fixed. -04-05-11 A bug in which an exec statement could close the script that - is being processed in a script that is run by name causing - a failure has been fixed. -04-04-28 +If the first character of assignment to an integer variable was 0, - the variable had been treated as unsigned. This behavior was - undocumented and has been removed. -04-04-05 A bug in which the positioning of standard input could be incorrect - after reading from standard input from a subshell has been fixed. -04-03-30 A bug in the for loop optimizer which in rare cases could cause - memory corruption has been fixed. -04-03-29 +The preset alias source='command .' has been added. -04-03-29 A bug introduced in ksh93p on some systems in which invoked by - name with #! on the first line would not get the signals handling - initialized correctly has been fixed. -04-03-29 A bug introduced in ksh93p in which a HUP signal received by - a shell that is a session group leader was not passed down to - its children has been fixed. - -04-02-28 --- Release ksh93p --- -04-02-28 +The ability to apply an append discipline to any variable has - been added. -04-02-14 A bug in which the exportall option (set -a) would cause incorrect - results for arrays has been fixed. -04-02-02 A bug in which an exported array would pass more than - the first element to a script invoked by name has been fixed. -04-02-02 A bug on some systems in which name=value pairs preceding a script - invoked by name was not getting passed to the script has been fixed. -04-01-20 A bug in which an unset discipline function could cause a core - dump on some systems has been fixed. -04-01-12 A bug in which a continue or break called outside a loop from - inside a function defined with name() syntax could affect - the invoking function has been fixed. -04-01-08 If a command name begins with ~, only filename completion will be - attempted rather than pathname completion using the builtin editors. -04-01-08 A bug in the vi edit mode in which the wrong repeat count on - multiple word replacements with the . directive has been fixed. -04-01-06 Backspace characters are now handled correctly in prompt strings. -04-01-06 +The getopts builtin has been modified to accept numerical - arguments of size long long on systems that support this. -04-01-06 A bug in which unsetting all elements of an associative array - would cause it to be treated as an indexed array has been fixed. -03-12-15 A bug in which a quoted string ending with an unescaped $ would - delete the ending $ in certain cases has been fixed. -03-12-05 A bug in which the shell could hang when set -x tracing a command - when an invalid multibyte character is encountered has been fixed. -03-12-05 On some systems, if the KEYBD trap is set, then commands that use - the meta key were not processed until return was hit. This - has been fixed. -03-12-05 A problem which occurred when the login shell was not a group - leader that could cause it to fail has been fixed. -03-12-05 A problem in which a shell could core dump after receiving a signal - that should cause it to terminate while it was in the process - of acquiring more space has been fixed. -03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc - for interactive shells. -03-11-21 A bug introduced in ksh93o in which the DEBUG trap could get - disabled after it triggered has been fixed. -03-11-04 A bug in which using arithmetic prefix operators ++ or -- on a - non-lvalue could cause a core dump has been fixed. -03-11-04 A bug in which leading zeros were stripped from variable - expansions within arithmetic computation to avoid being treated - as octal constants when they should not have, has been fixed. -03-10-08 A bug introduced in ksh93o in which a large here document inside - a function definition could get corrupted has been fixed. -03-09-22 A bug in which the .get discipline function was not being - called when a string variable was implicitly referenced from - within a numerical expression has been fixed. -03-09-22 A bug in which a script without a leading #! could get executed - by /bin/sh rather than the current shell on some systems has - been fixed. -03-09-12 +To improve conformance with ksh88, leading zeros will be ignored - when getting the numerical value of a string variable so that - they will not be treated as octal constants. -03-09-03 +The builtin kill command now processes obsolete invocations - such as kill -1 -pid. -03-09-02 The restriction on modifying FPATH in a restricted shell (sh -r) - has been documented. -03-09-02 +The restricted shell (sh -r) has been modified to disallow - executing command -p. -03-08-07 A bug in which the KEYBD trap was not being invoked when - characters with the 8th bit set has been fixed. -03-08-02 A parser bug introduced in ksh93o which caused the character - after () in a Posix function definition to be skipped - when reading from standard input has been fixed. -03-08-01 A bug in which "${foo#pattern}(x)" treated (x) as if it were - part of the pattern has been fixed. -03-08-01 +The command -x option has been modified so that any trailing - arguments that do expand to a single word will be included - on each invocation, so that commands like command -x mv * dir - work as expected. - -03-07-20 --- Release ksh93o+ --- -03-07-20 A bug in which could cause memory corruption when a posix - function invoked another one has been fixed. -03-07-15 A bug in which a file descriptor>2 could be closed before - executing a script has been fixed. -03-07-15 A parsing error for <() and >() process substitutions inside - command substitution has been fixed. -03-07-15 A parsing error for patterns of the form {...}(...) when - used inside ${...} has been fixed. -03-07-15 An error in which expanding an indexed array inside a compound - variable could cause a core dump has been fixed. -03-07-15 A bug in which on rare occasions a job completion interrupt - could cause to core dump has been fixed. -03-06-26 A bug in which process substitution embedded within command - substitution would generate a syntax error has been fixed. -03-96-23 A bug in which ${@:offset:len} could core dump when there - were no arguments has been fixed. -03-96-23 A bug in which ${X[@]:offset:len} could core dump when X - was unset has been fixed. -03-06-22 +The -x option was added to the command builtin. If this - option is on, and the number of arguments would exceed ARG_MAX, - the command will be invoked multiple times with a subset of - the arguments. For example, with alias grep='command -x grep, - any number of arguments can be specified. -03-06-14 A bug in which could cause a core dump on some systems with - vi and emacs editors with the MULTIBYTE option has been fixed. -03-06-06 A bug in which the shell could core dump when a script was - run from its directory, and the script name a symlink to a file - beginning with .., has been fixed. -03-06-05 A bug in which the shell could core dump when a child process - that it is unaware of terminates while it is calling malloc() - has been fixed. -03-06-02 +An option named globstar (set -G) has been added. When enabled, - during pathname expansion, any component that consists only of ** is - matches all files and any number of directory levels. -03-05-30 A bug in which the PATH search could give incorrect results when - run from directory foo and PATH contained .:foo:xxx has been fixed. -03-05-29 +Some changes were made to the code that displays the prompt in edit - mode to better handle escape sequences in the prompt. -03-05-27 I added = to the list of characters that mark the beginning of - a word for edit completion so that filenames in assignments - can be completed. -03-05-20 A bug in which read -N could hang on some systems when reading - from a terminal or a pipe has been fixed. -03-05-19 A bug in which the output of uname from a command substitution - would go to the standard output of the invoking command when - uname was invoked with a non-standard option has been fixed. -03-05-19 A job control bug which would cause the shell to exit because - it hadn't take back the terminal has been fixed. The bug - could occur when running a function that contained a pipeline - whose last element was a function. -03-05-19 A job control timing bug introduced in ksh93o on some systems - which could cause a pipeline to hang if the first component - completed quickly has been fixed. -03-05-13 +The read builtin has been modified so that the builtin editors - will not overwrite output from a previous incomplete line. -03-05-13 A bug in which the name of an identifier could have the string - .sh. prefixed to it after expanding a variable whose name begins - with .sh. has been fixed. -03-05-13 A bug in the expansion of $var for compound variables in which - some elements would not be output when the name was a prefix - of another name in the compound variable has been fixed. -03-05-08 The last item in the ksh93o release on 03-01-02 has been - altered slightly to preserve the leading 0's when the - preceding character is a digit. Thus, with typeset -LZ3 x=10, - $(( 1$x)) will be 1010 whereas $(( $x) will be 10. -03-04-25 A bug in which if x is a name reference, then nameref y=x.foo - did not follow x has been fixed. - -03-03-18 --- Release ksh93o --- -03-03-18 +A -N unary operator was added to test and [[...]] which returns - true if the file exists and the file has been modified since it - was last read. -03-03-18 +The TIMEFORMAT variable was added to control the format for - the time compound command. The formatting description is - described in the man page. -03-03-06 +A -N n option was added to read which causes exactly n bytes - to be read unlike -n n which causes at most n bytes to be read. -03-03-03 +Three new shell variables were added. The variable .sh.file - stores the full pathname of the file that the current command - was found in. The variable .sh.fun names the current function - that is running. The variable .sh.subshell contains the depth - of the current subshell or command substitution. -03-03-03 +When the DEBUG trap is executed, the current command line after - expansions is placed in the variable .sh.command. The trap - is also now triggered before each iteration of a for, select, - and case command and before each assignment and redirection. -03-02-28 +Function definitions are no longer stored in the history file so - that set -o nolog no longer has any meaning. -03-02-28 +All function definitions can be displayed with typeset -f not - just those stored in the history file. In addition, typeset +f - displays the function name followed by a comment containing the - line number and the path name for the file that defined this function. -03-02-28 A bug in which the value of $LINENO was not correct when executing - command contained inside mult-line command substitutions has been - fixed. -03-02-19 +Since some existing ksh88 scripts use the undocumented and - unintended ability to insert a : in front of the % and # parameter - expansion operators, ksh93 was modified to accept :% as equivalent - to % and :# as equivalent to # with ${name op word}. -03-02-14 A bug which could cause a core dump when reading from standard - error when standard error was a pty has been fixed. -03-02-14 +The shell arithmetic was modified to use long double on systems - that provide this data type. -03-02-09 A bug in which a function located in the first directory in FPATH - would not be found when the last component of PATH was . and the - current directory was one of the directories in PATH has been fixed. -03-02-07 +The trap and kill builtin commands now accept a leading SIG prefix - on the signal names as documented. -03-02-05 A bug in the expansion of ${var/$pattern}, when pattern contained - \[ has been fixed. -03-02-05 A bug in which .sh.match[n], n>0, was not being set for substring - matches with % and %% has been fixed. -03-01-15 A bug in which getopts did not work for numerical arguments specified - as n#var in the getopts string has been fixed. -03-01-09 A bug in which using ${.sh.match} multiple times could lead to - a memory exception has been fixed. -03-01-06 A bug in the expansion of ${var/pattern/$string} in the case that - $string contains \digit has been fixed. -03-01-02 +A -P option was added for systems such as Solaris 8 that support - profile shell. -03-01-02 For backward compatibility with ksh88, arithmetic expansion - with ((...)) and let has been modified so that if x is a zero-filled - variable, $x will not be treated as an octal constant. - -02-12-05 --- Release ksh93n+ --- -02-11-30 A bug that can show up in evaluating arithmetic statements that - are in an autoloaded function when the function is autoload from - another function has been fixed. -02-11-30 An optimization bug in which an expansion of the form ${!name.@}, - which occurred inside a for or a while loop, when name is a name - reference, has been fixed. -02-11-18 A bug in which modifying array variables in a subshell could leave - side effects in the parent shell environment has been fixed. -02-11-18 A memory leak when unsetting an associative array has been fixed. -02-11-14 +The code to display compound objects was rewritten to make - it easier for runtime extensions to reuse this code. -02-11-14 +A change was made to allow runtime builtins to be notified when - a signal is received so that cleanup can be performed. -02-10-31 +User applications can now trap the ALRM signal. Previously, - the ALRM signal was used internally and could not be used - by applications. -02-10-31 A bug in which signals received while reading from a coprocess - for which traps were set was not handled correctly has been fixed. -02-10-31 A bug in which a file opened with exec inside a subshell could - be closed before the subshell completed has been fixed. -02-10-21 A bug in which setting PATH or FPATH inside a function might not - take effect has been fixed. -02-10-21 A bug which could cause a core dump when a local SECONDS variable - is defined in a function has been fixed. -02-10-15 A bug in which the associate array name operator ${!array[@]} - could return the same name multiple times has been fixed. -02-10-15 A bug in which the zero'th element of an associative array was - not getting set when an assignment was made without a subscript - specified has been fixed. - -02-09-30 --- Release ksh93n --- -02-09-30 +The maximum indexed array size was increased to 16Megs. -02-09-30 A bug which could cause a core dump when changing attributes - of associative array has been fixed. -02-09-30 A bug in which exporting an array variable would not export the - 0-th element has been fixed. -02-09-30 A bug in which an array assignment of the form a=($a ...) would unset - 'a' before the right hand side was evaluated has been fixed. -02-09-27 A bug in which the error message for ${var?message} when var was - null or unset did not contain the variable name var has been fixed. -02-09-27 A bug in which closing file descriptors 0 through 2 could - cause a subsequent here document to fail has been fixed. -02-09-14 A bug in whence which occurs when the specified name contained - a / has been fixed. -02-09-14 A bug in the parser for strings of the form name$((expr))=value - has been fixed. -02-09-14 A for loop optimization bug in which the number of elements in - an array was treated as an invariant has been fixed. -02-09-09 A bug in which redirection or closing of a file descriptor between - 3 and 9 could cause a subsequent here document to fail has been - fixed. -02-09-09 A bug in which a background job was not removed from the job list - when a subshell completed has been fixed, for example (prog&). -02-09-03 A bug in which an assignment of the form name=(integer x=3) - could be interpreted as an array assignment rather than a - compound variable assignment has been fixed. -02-08-19 A command completion bug which occurred on file systems that - are case insensitive has been fixed. -02-08-19 A bug which could lead to an exception on some systems (for - example FREEBSD) which occurred when setting PATH has been fixed. -02-08-11 A bug in arithmetic rounding in which a value input as a decimal - string would output as a rounded version of the string has - been fixed. -02-08-11 A bug in which the last character could be deleted from shell - traces and from whence when called from a multibyte locale - has been fixed. -02-08-01 A bug which could cause a core dump to occur when a shell script - is executed while a coprocess is running that has closed the - output pipe has been fixed. -02-08-01 A bug in which command completion in multibyte mode could - corrupt memory for long command lines has been fixed. - -02-06-17 --- Release ksh93n- --- -02-06-17 A bug in which user defined macros could cause a core dump in - with MULTIBYTE mode has been fixed. -02-06-17 A bug in which printf format specifiers of the form %2$s were causing - a core dump has been fixed. -02-06-17 A bug in which setting stty to noecho mode did not prevent the - echoing of characters by ksh when emacs or viraw mode - was enabled has been fixed. -02-06-17 A bug in which background job completion could cause the sleep - builtin to terminate prematurely has been fixed. -02-06-17 A bug in which the shell could core dump if getopts was called - when the OPTIND variable contained a negative value has been fixed. -02-06-10 +The edit mode prompt has been modified to handle escape sequences. -02-06-10 A bug which occurred for interactive shells in which the builtin - cat command was used in command substitution on a file whose - size was larger than PIPE_BUF has been fixed. -02-06-10 A bug in which the trap on ERR was not being processed when - set inside a function has been fixed. -02-06-07 A bug in which function definitions could cause the history count - to be decremented by one (and even become negative) has been fixed. -02-06-05 A bug in read in which share mode could be enabled has been fixed. -02-05-28 A bug which could occur when the last command of a script was - a case statement and the action selected ended in ;& instead of ;; - has been fixed. -02-05-23 A bug with unary + introduced in ksh93k has been fixed. -02-05-07 A bug in substitutions of the form ${var/pattern/string} in which - a backslash was inserted in the replacement string when it contained - a special pattern character has been fixed. -02-05-01 A bug in the emacs edit mode which occurred in versions compiled - for multibyte character sets which occurred when a repeated search - was requested after a long line had been returned for the previous - search has been fixed. -02-04-02 +vi and emacs edit modes were modified so that tab completion is - disabled when invoked from the read built-in. - -02-03-26 --- Release ksh93m+ --- -02-03-26 A bug in which \ was not handled correctly when used in file - expansion has been fixed. -02-02-18 A bug in which lines beginning with a # were deleted from here - documents when the here-document delimiter was followed by - a comment has been fixed. -02-12-06 An optimization bug in which ${!x[@]) was treated as invariant in - a for loop has been fixed. -02-02-06 A bug in which the ERR trap is not cleared for a script invoked - by name from within a function has been fixed. -02-01-08 A bug in which a shell script executed from within a subshell - could cause this script to have an invalid pointer leading - to a memory fault has been fixed. -02-01-07 +Added here documents of the form <<< word (as per zsh) which - is equivalent to << delim\nword\ndelim. -02-01-07 A bug in which the first word of a compound assignment, - x=(word ...), was treated as a reserved word has been fixed. -02-01-07 A bug in the handling of \ when noglob was enabled and a - substitution of the form ${word op pattern} occurred in the - same word has been fixed. -02-01-07 +A compilation option, CMDLIB_BLTIN in the file OPTION, has - been added. When this options is set, all commands implemented - in libcmd become shell builtin commands by default. -02-01-07 A bug in which builtin foo, where foo is already a builtin - would result in the builtin foo getting removed has been fixed. -02-01-07 A bug which the shell executed a command found in the current - directory when PATH have no valid directories has been fixed. -01-11-28 The value of $? was not being set when called with exit. -01-11-28 If the last command was of the form (...) and a trap on EXIT or - ERR was set, and the command inside () modified the trap, then - the original trap wasn't executed. -01-11-26 +The value for 0 is now preceded by the base number when - the base was not 10. -01-11-26 +The default has compilation mode has been changes so that - viraw mode will always be on. - -01-10-31 --- Release ksh93m --- -01-10-31 A for loop optimizer bug for subshells contained within for - loops has been fixed. -01-10-16 typeset without arguments no longer outputs variable names - that do not have any attributes that are set. -01-10-16 A bug introduced in ksh93l in which assignments specified with - the exec built-in were not being expanded properly has been - fixed. -01-10-11 An optimization bug in which ${!x) was treated as invariant in - a for loop has been fixed. -01-10-11 Unsigned integer variables in bases other than 10 are printed now - expand in that base with the base prefix. -01-10-10 A number of typos in the self generating man pages for shell - built-ins have been fixed. -01-10-04 The self generated man pages for hist and fc were not working - correctly and have been fixed. -01-10-03 Yet another optimizer bug in which shell patterns were - treated as invariants has been fixed. -01-09-27 Two bugs relating to multibyte history searches and to find - have been fixed. -01-09-27 A bug introduced in ksh93k in which the PATH searching was - not restored after running a command with an assignment list - has been fixed. -01-09-26 A bug in which a zero filled field was treated as octal when - converted to integer has been fixed. -01-09-26 Yet another bug in the optimization of for loops related to - recursive functions with break or continue statements has been fixed. -01-09-25 +The exponentiation operator ** was added to the shell arithmetic - evaluation. It has higher precedence than * and is left - associative. -01-09-25 The code was modified to use the ast multibyte macros - and functions for handling multibyte locales. -01-09-25 +The expansion ${parameter:offset:length} now handles negative - offsets which cause offsets to be measured from the end. -01-09-25 Some spelling errors in the documentation were corrected. -01-09-24 +The /dev/tcp/host/port and /dev/udp/host/port now allow - the ports to be specified by service name. -01-09-24 +The change staring with ksh93g in which the the appropriate - library path variable is prepended with a corresponding library - directory has been modified. With the new method, only the - library path defined in the file named .paths in the directory - where the executable is found will be modified. See the - man page for more details. -01-09-23 +The .fpath file (see ksh93h) is no longer looked for in each - directory on the path to locate function directories. The - file named .paths is used instead. -01-09-23 A bug in which IFS was not being restored after being changed in - a subshell has been fixed. -01-09-16 +With the vi and emacs edit modes, after a list of command - or functions is generated with = or M-= respectively, - any element from the list can be pasted on the command line - by preceding the = or M-= with a numeric parameter specifying - the position on the list. -01-09-16 A bug in ksh93l caused command completion not to find aliases - and functions. Command listing from the edit mode was presented - in reverse order. This has been fixed. -01-09-13 Another bug in the optimization of for loops related to subshells - when traps were set has been fixed. -01-09-07 A change in ksh93l caused brace expansion to stop working - and this has been fixed. -01-09-04 A bug introduced in ksh93k in which an arithmetic statement - within a function that used name references did not follow the - reference has been fixed. -01-09-04 A bug introduced in ksh93l in which export -p did not prefix - each export with the word export has been fixed. -01-08-29 A bug in multibyte input which occurred when a partial multibyte - character was received has been fixed. -01-08-29 A bug introduced in ksh93l which could cause a core dump - when an assignment list containing PATH is specified inside - command substitution has been fixed. -01-08-09 Another bug in the optimization of for loops in ksh93l caused - errors in recursive functions using local variables that - contained for loops has been fixed. -01-07-27 A bug in which IFS would be unset after a command substitution - inside a here document has been fixed. -01-07-26 To conform to the POSIX standard, if you invoked ksh name, - and name does not contain a /, it will first try to run - one in the current directory whether it is executable or not - before doing a path search for an executable script. Earlier - versions first checked for an executable script using the - PATH variable. -01-07-23 A bug in which unset -f invoked in a subshell could unset a - function defined in the parent has been fixed. -01-07-16 A bug in the optimization of for loops in ksh93l caused - name references to be treated as invariants has been fixed. -01-07-09 A bug in which a discipline function applied to a local variable - could cause a shell exception has been fixed. Discipline - functions can only be specified for global variables. - -01-06-18 --- Release ksh93l --- -01-06-18 A bug in assigning integers larger than can be represented as - long integers to floating point variables has been fixed. -01-06-18 A bug in the handling of unsigned integers (typeset -ui) has - been fixed. -01-06-04 The evaluation of the PS1 prompt no longer effects the value - of the $? variable. -01-06-01 A small memory leak from subshells has been fixed. -01-05-22 A bug in which attributes for variables that did not have - values would be lost after a subshell has been fixed. -01-05-22 +The %R format has been added to convert a shell pattern into - an extended regular expression. -01-05-22 +The escape sequences \e, \cX, \C[.collating-element.], and - \x{hex} have been added to ASCII-C strings and to printf format - strings. -01-05-20 +Patterns of the form {n}(pattern) and {m,n}(pattern) are now - recognized. The first form matches exactly n of pattern whereas, - the second form matches from m to n instances of pattern. -01-05-20 +The shell allows *-(pattern), +-(pattern), ?-(pattern), - {m,n}-(pattern}, and @-(pattern) to cause the minimal - match of pattern to be selected whenever possible rather - than the maximal (greedy) match. -01-05-20 +The character class [:word:] has been added to patterns. - The word class is the union of [:alnum:] and the character _. -01-05-20 +Inside (...) pattern groups, the \ character is now treated - specially even when in an enclosing character class. The - sequences, \w, \d, \s are equivalent to the character classes - word, digit, and space respectively. The sequences \W, \D, - and \S are their complement sets. -01-05-20 +The shell now recognizes pattern groups of the form - ~(options:pattern) where options or :pattern can be omitted. - Options use the letters + and - to enable and disable options - respectively. The option letters g (greedy), i (ignore case) - are used to cause maximal matching and to cause case - insensitive matching respectively. If :pattern is also - specified, these options are only in effect while this - pattern is being processed. Otherwise, these options remain - in effect until the end of the pattern group that they are contained - in or until another ~(...) is encountered. These pattern groups - are not counted with respect to group numbering. -01-05-14 When edit completion, expansion, or listing occurs in the - middle of a quoted string, the leading quote is ignored when - performing the completion, expansion, or listing. -01-05-14 A small memory leak from subshells has been fixed. -01-05-10 A bug in which open files were not restored after a subshell - that had used exec to replace a file has been fixed. -01-05-10 +Redirection to a null file name now generates an error message. -01-05-09 The shell now rejects some invalid parameter substitutions that - were previously processed in undefined ways. -01-05-09 A bug in which the output of select was not flushed before the - read when input did not come from the terminal has been fixed. -01-05-08 A bug in which job ids would not be freed for interactive shells - when subshells ran built-ins in the background has been fixed. -01-05-08 +The FPATH variable now requires an explicit . to cause the - current directory to be treated as a function directory. -01-05-08 A bug in read -n when echo mode was disabled has been fixed. -01-05-07 A bug in which function definitions could be listed as part - of the history has been fixed. -01-04-30 +This release uses a new and often much faster pattern matcher than - earlier releases. -01-04-30 +An optimizer now eliminates invariant parameter expansions from - for while and until loops. -01-04-30 +The variable .sh.match is set after each pattern match (# % or /) - in a variable substitution. The variable .sh.match is an - indexed array with element 0 being the complete match. - The array is only valid until the next subsequent pattern - match or until the value of the variable changes which ever - comes first. -01-04-30 +A self generating man page has been added to shcomp. Also, - shcomp now stops compiling when it finds an exit or exec - command and copies the remainder so that it can be used - for standard input. -01-04-30 +The shcomp command was modified so that it can work in an - EBCIDIC environment and that binary scripts are portable - across environments. -01-04-30 A bug in the handling of a trailing : in PATH has been fixed. -01-04-30 A bug in which the builtin version of a command would get invoked - even though the full pathname for the command was specified - has been fixed. -01-04-30 A bug in which read would loose the last character when - reading the last line of a file that did not contain a new-line - character has been fixed. -01-04-23 A bug on some systems in which in vi mode the end of file - character and end of line character could be swapped has - been fixed. -01-04-23 A bug on some systems in which invoking a shell script that - did not have execute permission could set the exit value to - 127 rather than 126 has been fixed. -01-04-20 A bug in which read -n from a pipe would block if fewer than - n characters was received has been fixed. -01-04-09 A bug in which invalid patterns, for example, ) by itself, - was not treated as a string has been fixed so that if i=')', - then [[ $i == $i ]] is true. -01-04-09 +The shell arithmetic now interprets C character constants. -01-04-09 A bug in which a non-zero return from a function defined - with the function reserved word did not trigger the ERR - trap or exit with set -e has been fixed. -01-04-02 A bug on some systems, in which characters above 127 were - not displayed correctly in vi or emacs edit mode has been fixed. -01-04-02 A bug on some systems, introduced in the 'k' point release, in - which the erase character in viraw mode was moving the cursor - to the left without erasing the character has been fixed. -01-04-02 On some systems the wcwith() function was returning a wrong - value for characters and caused characters to be displayed - incorrectly from the shell edit modes. A work around for - this problem has been added. -01-03-26 A bug in which valid scripts could produce syntax errors - when run with locales that considered characters such as "'" - to be space characters has been fixed. -01-03-20 A bug in which an syntax error in an arithmetic expression - entered interactively could cause the shell to go into - an infinite loop outputting the error message has been fixed. -01-03-10 +ksh93 accepts -l as a synonym for -L in test on systems for - which /bin/test -l tests for symbolic links. -01-03-10 A bug in parsing scripts in which { and } are used in place of - in and esac in case statements embedded in compound commands - has been fixed. Use of { and } for in and esac is obsolete. -01-03-06 A bug in which an argument of the form foo=bar was not - being passed correctly to a traced function whose name - was foo has been fixed. -01-03-02 Using $(trap -p name) did not print the name of the current - trap setting for trap name. -01-02-26 Exported floating point variables gave incorrect results - when passing them to ksh88. This has been fixed. -01-02-25 A race condition in which a coprocess which completed too quickly - would not allow subsequent coprocesses to start has been fixed. -01-02-25 The 'g' format specifier is now handled by printf. It had - inadvertently been omitted. -01-02-20 The + was not being displayed during an execution trace - with the += assignment operator. -01-02-19 The error message which occurs when the interpreter name - defined on the #! line does not exist is more informative. -01-02-19 A bug in which $0 would not be set correctly when a - script with #! was invoked by full pathname from the - directory of the script has been fixed. -01-02-19 A shell script did not always pick up tty mode changes - made by external commands such as stty which could - effect the behavior of read. -01-02-19 The -u, -g, and -k unary tests did not give the correct - results when used with negation and this has been fixed. - -01-02-05 --- Release ksh93k+ --- -01-02-05 The sequence \ inside $'...' was not incrementing - the line count and this has been fixed. -01-02-05 +Modified expansion of "${@-}" so that if no arguments are set - it results in null string rather than nothing. -01-02-02 memory leak problem with local variables in functions fixed. -01-01-25 +allow arithmetic expressions with float%int and treat them - as ((int)float)%int rather than as an error. -01-01-19 read -n1 was not working and has been fixed. -01-01-17 +ksh now handles the case in which a here document in command - substitution $() is terminated by the trailing ). Previously, - a new-line was needed at the end of the delimiter word. -01-01-02 A bug in which a KEYBD trap would cause a multi-line token - to be processed incorrectly has been fixed. -00-12-10 +Arithmetic integer constants can now have L and U suffices. -00-12-10 A bug in the processing of arithmetic expressions with compound - variables when the -n option is on has been fixed. -00-12-08 A bug in M-f and M-b from emacs mode has been fixed. This - bug only occurs when ksh93 is compiled without MULTIBYTE enabled. -00-11-29 A bug in which jobs -p would yield 0 for background - jobs run in a script has been fixed. -00-11-21 A bug in integer arrays in which the number of elements is - incorrect when the ++ operator is applied to a non-existing - element has been fixed. For example, integer x; ((x[3]++)). -00-11-20 A timing bug in which the shell could reset the terminal - group to the wrong value in the case that the a new process - changes the terminal group during startup has been fixed. - -00-10-27 --- Release ksh93k --- -00-10-27 Using tab for completion now works only when applied - after a non-blank character at the end of the current line. - In other case a tab is inserted. -00-10-27 A bug in the emacs edit mode for ^X^E has been fixed. - The ^X^E sequence is supposed to invoke the full editor - on the current command. -00-10-18 A bug in which expansions of the form ${var//pattern/string} - did not work correctly when pattern was '/' or "/" has - been fixed. -00-10-18 +The output format for indexed arrays in compound variables - has been modified so that it can be used as input. -00-10-18 Assignments with name references (typeset -n) will now - implicitly unreference an existing name reference. -00-10-17 A bug the += append operator when a single array element - is appended to a variable that is not an array has been fixed. -00-10-16 A bug in which the SIGCONT signal was being sent to - each process will kill -0 or kill -n 0 has been fixed. -00-10-12 +The arithmetic evaluation portion has been rewritten to - perform a number of optimizations. -00-10-10 A bug in which name prefix matching ${!name.*} was not - checking name to see if it was a name reference has been fixed. -00-09-26 A bug in the multibyte version in which the width of for - non-printing characters was not correct has been fixed. -00-09-12 +Made changes to get multibyte editing work on UWIN for windows -00-09-12 A bug in which multibyte characters would be displayed incorrectly - has been fixed. -00-08-08 Removed build dependency on iswprint() and iswalph(). -00-07-20 In some cases the read builtin would read more than a single - line from a pipe on standard input and therefore leave the seek - position in the wrong location. -00-07-05 +If the directory / is on the path, a / will not be inserted - between the directory and the file name during path searching - to avoid searching // for systems that treat this specially. -00-06-26 A bug in which on rare occasions wait could return before all - jobs have completed has been fixed. -00-06-21 A bug in which backspace did not work correctly during the - R replace directive in vi-mode has been fixed. -00-06-12 +Added variable name completion/expansion/listing to the set of - completions. Variable name completions begin with $ or "$ followed - by a letter. -00-05-09 --- Release ksh93j --- -00-05-09 Modified command substitution to avoid using /tmp files when - run on read-only file systems. -00-04-17 +Modified printf to handle '%..Xc' and '%..Xs' options where X - is not an alpha character. Previous versions core dumped with this. -00-04-10 +Changes to multibyte editing code were made to use standard - ISO C functions rather than methods devised before the standard. -00-04-09 Add %H options to printf to output strings with <"'&\t> properly - converted for use in HTML and XML documents. -00-04-07 +Modified getopts builtin to handle \f...\f in usage string - by invoking specified function. -00-04-04 Added self generating man pages for bg, fc, fg, disown, jobs, - hist, let, ., and ulimit. -00-03-30 +The append operator += has been added and can be used - for all assignments, strings, arrays, and compound variables. -00-03-30 +Code was modified in several places to support automatic - generation of C locale dictionaries. -00-03-28 A bug in which the set and trap commands invoked with --name - type arguments would terminate the invoking script has - been fixed. -00-03-27 A bug in which the library path variable was not updated - correctly on some systems as described in the 'g' point - release has been fixed. -00-03-07 printf now returns a non-zero exit status when one of - its arguments cannot be converted to the given type. -00-03-05 The return value and error message for a command that - was found on the path but was not executable was set - incorrectly. -00-03-05 A prototype for ioctl() was removed from the vi edit mode. - -00-01-28 --- Release ksh93i --- -00-01-28 +Most of the built-in commands and ksh itself are now - self documenting. Running command --man will produce - screen output. Running command --html produces the - man page in html format. -00-01-28 +The getopts builtin can process command description - strings to produce man pages. -00-01-28 A bug in which a script could terminate when getopts - encountered an error when invoked inside a function - has been fixed. -00-01-28 When a symbolic link was specified as the name of - the script to invoke by name, the value of $0 was - set to the real file name rather than the link name - in some cases and this has been fixed. -00-01-28 A bug in which the precision given as an argument - to printf was not working has been fixed. - -99-03-31 --- Release ksh93h --- -99-03-31 +The PATH search algorithm has been modified to look - for a file named .fpath in each bin directory and if - found, to search for functions in this directory if - it cannot find the command in that directory. -99-03-31 +When performing pathname expansion, the shell checks - to see whether each directory it reads is case sensitive - or not, and performs the matching accordingly. -99-03-31 +The %T format for printing formatted date/time. -99-03-31 +The emacs and vi modes now handle arrow keys when - they use standard ANSI escape sequences. -99-03-31 +The TAB key can be used for completion in emacs and viraw mode. -99-03-31 A bug in setting .sh.editchar during the KEYBD trap - for the MULTIBYTE option was fixed in release ksh93h. -99-03-31 A bug in shcomp for compilation of unary operators with [[...]] - has been fixed. -99-03-31 A bug in which the value of $? was changed when executing - a keyboard trap has been fixed. -99-03-31 The handling of SIGCHLD has been changed so that the - trap is not triggered while executing trap commands - to avoid recursive trap calls. -99-03-31 A bug in which a local variable in a function declared readonly - would generated an error when the function went out of - scope has been fixed. -99-03-31 A bug in which \ entered from the keyboard - with the KEYBD trap enabled has been fixed. -99-03-31 The error message for a misplaced ((, for example print ((3), - was often garbled and has been fixed. -99-03-31 A bug in the KEYBD trap in which escape sequences of the form - [#~ were not being handled as a unit has been fixed. -99-03-31 A bug in which ksh would consider expressions like [[ (a) ]] - as syntax errors has been fixed. -99-03-31 A function defined as foo() without a function body - was not reported as a syntax error. -99-03-31 A bug in which ksh could run out of file descriptors when - a stream was repeatedly opened with exec and read from - has been fixed. - -98-04-30 --- Release ksh93g --- -98-04-30 +The pipefail option has been added. With pipefail - enabled, a pipeline will not complete until all - commands are complete, and the return value will - be that of the last command to fail, or zero if - all complete successfully. -98-04-30 +The name-value pair library uses the cdt library rather - than the hash library. This change should be transparent - to applications. -98-04-30 +On the U/WIN version for Window 95 and Windows NT, - when a directory beginning with a letter followed by - a colon is given to cd, it is assumed to be an absolute - directory -98-04-30 +When an executable is found on a given path, - the appropriate library path variable is prepended - with a corresponding library directory. -98-04-30 A bug in which a name reference could be created to - itself and later cause the shell to get into an infinite - loop has been fixed. -98-04-30 A bug in shcomp relating to compound variables was fixed. -98-04-30 A bug introduced in ksh93e in which leading 0's in -Z - fields caused the value to be treated as octal for arithmetic - evaluation has been fixed. -98-04-30 A bug when a name reference with a shorter name than - the variable it references was the subject of a compound - assignment has been fixed. -98-04-30 A bug which in which assignment to array variables in - a subshell could effect the parent shell has been - fixed. -98-04-30 read name?prompt was putting a 0 byte at the end of the - prompt on standard error. -98-04-30 A bug in [[ string1 > string2 ]] when ksh was run with -x - has been fixed. -98-04-30 A bug in which the escape character was not processed - correctly inside {...} when brace expansion is enabled - has been fixed, for example {\$foo}. -98-04-30 A bug in line continuation in here-documents has been - fixed. -98-04-30 The default base when not specified with typeset -i is - 10 in accordance with the documentation. Previously, - the value was determined by the first assignment. -98-04-30 A parsing bug in which a # preceded alphanumeric - characters inside a command substitution caused - a syntax error to be reported has been fixed. -98-04-30 A bug in which a decimal constant represented as 10#ddd - where ddd was more than five digits generated a syntax - error has been fixed. -98-04-30 A bug in here document expansion in which ${...} expansions - were split across buffer boundaries has been fixed. -98-04-30 +The sh_fun() function now takes third argument which - is an argument list for the invoked discipline function - or built-in. -98-04-30 +A callback function can be installed which will give - notification of file duplications and file closes. -98-04-30 When ksh is compiled on systems that do not use fork() - current option settings where not propagated to subshells. - -97-06-30 --- Release ksh93f --- -97-06-30 +Hostnames in addition to host addresses can be given in - /dev/tcp/host/port virtual file names. -97-06-30 File name completion and expansion now quotes special - characters in file names from both emacs and vi edit modes. -97-06-30 An empty for list behave like a for list with null expansions. - It produces a warning message with sh -n. -97-06-30 +The code has been modified to work with EBCDIC as well as ASCII. -97-06-30 A bug which would cause the secondary prompt to be - displayed when a user entered a literal carriage - return has been fixed. -97-06-30 A bug which caused ksh read -s name to core dump was - fixed. -97-06-30 A bug with the expansion of \} and \] inside double - quoted strings that also contained variable expansions - has been fixed -97-06-30 Changes in the ksh93e point release caused autoload - functions invoked from within command substitution - to fail. This has been fixed. -97-06-30 A bug in the processing of here-documents that could - prevent variable substitution to occur after $(...) command - substitution for long here documents has been fixed. -97-06-30 A bug caused by a race condition that could cause SIGTERM - to be ignored by a child process has been fixed. -97-06-30 A bug which prevented the startup of a coprocess immediately - after killing a running coprocess has been fixed. -97-06-30 ulimit foobar, where foobar is not an arithmetic - expression, now gives an error message as it did with ksh88 - instead of setting the file size limit to 0. -97-06-30 A bug which could cause an interactive shell to terminate when - the last process of a pipeline was a POSIX function was fixed. -97-06-30 A bug which could cause command substitution of a shell script - to core dump has been fixed. -97-06-30 A security hole was fixed in suid_exec. -97-06-30 Arithmetic functions such as pow() that take more than - one argument, did not work if arguments other than the - first contained parenthesized sub-expression. -97-06-30 The error message from a script containing an incomplete - arithmetic expression has been corrected. -97-06-30 A bug which caused a core dump on some machines when - the value of a name reference contained a positional - parameter and the name reference was not defined inside - a function has been fixed. -97-06-30 Arithmetic expressions now correctly handle hexadecimal - constants. -97-06-30 A bug in which integer variables could be expanded - with a leading 10# when declared with typeset -i - multiple times has been corrected. -97-06-30 A bug in which IFS wasn't correctly restored when - set within command substitution has been fixed. -97-06-30 The _ character is now considered as part of a word - with the M-f and M-b emacs directives as it was in ksh88. -97-06-30 A bug in brace pattern expansions that caused expressions - such as {foo\,bar,bam} to expand incorrectly have been fixed. - - -96-07-31 --- Release ksh93e --- -96-07-31 +The math functions, atan2, hypot, fmod, and pow were added. -96-07-31 +When a shared library is loaded, if the function lib_init() - is defined in the library, it is invoked the first time that - the library is loaded with builtin -f library. -96-07-31 The k-shell information abstraction database option, KIA, - has been revamped. -96-07-31 Empty command substitutions of the form $() now work. - whence -v foo now gives the correct result after calling - builtin -d foo. -96-07-31 A bug in right to left arithmetic assignment for which - the arithmetic expression (( y = x = 1.5 )) did not - yield 1 for y when x was declared typeset -i was fixed. -96-07-31 printf has been fixed to handle format containing \0 - and/or \0145 correctly. In addition, characters following - %b in the format string are no longer displayed when - the operand contains \c. -96-07-31 A bug in printf that could cause the %E format to - produce unnormalized results has been fixed. -96-07-31 A bug which causes some arithmetic expressions to be - incorrectly evaluated as integer expressions rather - that floating point has been fixed. -96-07-31 Functions defined inside a subshell no longer remain - defined when the subshell completes. -96-07-31 The error message from sh -c ';echo foo' has been - corrected. -96-07-31 The format for umask -S has been changed to agree - with the specification in the POSIX standard. -96-07-31 A bug that caused side effects in subscript evaluation - when tracing was enabled for subscripts using ++ or -- - has been fixed. -96-07-31 To conform to the Posix standard getopts has been changed - so that the option char is set to ? when it returns with - a non-zero exit status. -96-07-31 The handling of \} inside ${name...} has been fixed so - that the \ quotes the }. -96-07-31 A bug that caused the read builtin to resume execution - after processing a trap has been fixed. -96-07-31 [[ -s file ]] has been fixed so that if file is open - by ksh, it is flushed first. -96-07-31 In some cases attributes and sizes for non exported - variables weren't being reset before running a script. -96-07-31 The value of TMOUT was affected by changes make to - it in a subshell. -96-07-31 The jobs command did not reflect changes make by - sending the CONT signal to a command. -96-07-31 The error message for ksh -o unknown was incorrect. -96-07-31 Functions invoked as name=value name, did not use - values from the calling scope when evaluating value. -96-07-31 A bug in which the shell would reexecute previously - executed code when a shell script or coprocess was - run in the background has been fixed. -96-07-31 A bug in which an empty here-document would leave - a file descriptor open has been fixed. -96-07-31 A bug in which $(set -A array ...) would leave a - side effect has been fixed. -96-07-31 A discipline function for a global variable defined - within a function defined with the function keyword, - incorrectly created a local variable of the same name - and applied the discipline to it. - -95-08-28 --- Release ksh93d --- -95-08-28 The \ character was not handled correctly in replacement - patterns with ${x/pattern/replace}. -95-08-28 A bug with read in which the line did not end with - a new-line has been fixed. -95-08-28 A bug in file name generation which sometimes - appended a . for filenames that ended in / has - been fixed. -95-08-28 +If a process is waited for after a status has - been returned by a previous wait, wait now - returns 127. -95-08-28 A bug with hist (fc) -e which prevented a command - to re-executed after it had been edited has been fixed. -95-08-28 A bug which prevented quoting from removing the meaning - of unary test operators has been fixed. -95-08-28 A bug with typeahead and KEYBOARD traps with the - MULTIBYTE option set has been fixed. -95-08-28 +Builtin functions can take a third argument which is - a void*. -95-08-28 The nv_scan() function can restrict the scope of a walk - to the top scope. - -95-04-31 --- Release ksh93c --- -95-04-31 The expansion of "$@" was incorrect when $1 was the null - string. -95-04-31 A bug which could incorrectly report a syntax error in - a backquoted expression when a $ was preceded by \\ - has been fixed. -95-04-31 A bug which prevented the shell from exiting after - reporting an error when failing to open a script - has been fixed. -95-04-31 A bug that could lead to memory corruption when a - large here document that required parameter or command - substitution was expanded has been fixed. -95-04-31 A bug that could cause a core dump on some systems - after ksh detected an error when reading a function - has been fixed. -95-04-31 A bug which could cause a coprocess to hang when - reading from a process that has terminated has been fixed. -95-04-31 A bug which caused a script to terminate when set -e - was on and the first command of and && or || list - failed has been fixed. -95-04-31 A bug with here documents inside $(...) when the delimiter - word is an identifier has been fixed. -95-04-31 A bug which caused $0 to display the wrong value when - a script was invoked as an argument to the . command - and the eval command has been fixed. -95-04-31 A bug that could cause the built-in sleep to hang - has been fixed. -95-04-31 A bug introduces in 12/28/93b which caused the backslash - to be removed when it was followed by digit inside double - quotes in some instances has been fixed. -95-04-31 A bug which could cause a core dump if ksh was invoked with - standard input closed has been fixed. -95-04-31 A bug which could cause a core dump if typeset -A was - specified for an existing variable has been fixed. -95-04-31 Variables that were unset but had attributes such as readonly - and export were not listed with readonly, export and typeset. -95-04-31 Several problems with signals have been fixed. -95-04-31 A bug which prevented ulimit -t from working has been fixed. - Also, a bug in which failed ulimits could cause a core dump - has also been fixed. -95-04-31 A bug in expansion of the form ${name/#pattern/string} and - ${name/%pattern/string} has been fixed. -95-04-31 A bug which caused read -r on a line that contained only - blanks to get a non-null value has been fixed. -95-04-31 A bug introduced in the 'a' point release in which - ${x='\\'} expanded to \ when x was unset has been fixed. -95-04-31 A bug which prevented a trap on EXIT from being executed - when the last command in a script was a function invocation - has been fixed. -95-04-31 A bug which caused an interactive shell ignore input when - standard error was redirected to a file with exec, - and then restored with exec 2>&1 has been fixed. -95-04-31 An interactive shell turns on monitor mode even when - standard error has been redirected to a file. -95-04-31 A bug which could cause standard input to be incorrectly - positioned for the last command of a script has been fixed. -95-04-31 A bug in the edit modes which allowed walking back in - the history file for more than HISTSIZE commands has - been fixed. -95-04-31 A bug which could cause a core dump if variable TMPDIR was - changed between two command substitutions has been fixed. -95-04-31. A bug which prevented a trap on EXIT from being cleared - has been fixed. -95-04-31 A bug fixed for the v directive in vi MULTIBYTE has been - fixed. -95-04-31 Code to for IFS handling of multibyte characters has - been added. -95-04-31 The displaying of multibyte strings in export, readonly, - typeset, and execution traces has been fixed. -95-04-31 Variables inside functions are now statically scoped. - The previous behavior was never documented. -95-04-31 Variables inside functions are now statically scoped. - The previous behavior was never documented. -95-04-31 A few changes have been made to the name-value library - that affect built-ins that use disciplines. The - changes allow disciplines to be shared by variables - and should make it possible to add new disciplines - without recompilation. -95-04-31 +The name-value library interface has undergone significant - change for this revision. See the new nval.3 man page. - -94-12-31 --- Release ksh93b --- -94-12-31 +Variables inside functions are now statically scoped. - The previous behavior was never documented. -94-12-31 +If IFS contains two consecutive identical characters belonging - to the [:space:] class, then this character is treated as - a non-space delimiter so that each instance will delimit - a field. For example, IFS=$'\t\t' will cause two consecutive - tabs to delimit a null field. -94-12-31 +The getopts command has a -a name option that specifies a - name that will be used for usage messages. -94-12-31 A bug which caused unset RANDOM to dump core has been - fixed. -94-12-31 A bug which prevented return for terminating a profile - or ENV file has been fixed. -94-12-31 A bug which prevented standard input from being - directed to /dev/null for background jobs when - monitor mode was turned off has been fixed. -94-12-31 Statements of the form typeset -options var[expr]=value - did not perform substitutions on expr as expected. -94-12-31 A bug which prevented the shell from sending a HUP - signal to some background jobs that were not disowned - has been fixed. -94-12-31 A bug which allowed a script to trap signals that are - ignored at the time that the shell was invoked by exec - has been fixed. -94-12-31 A bug which could cause a core dump when a discipline - function was unset within a discipline was fixed. -94-12-31 The typeset builtin now accepts a first argument of - + or - for compatibility with ksh88. -94-12-31 For compatibility with ksh88, the results of expansions - of command arguments will treat the extended character - match characters ()|& as ordinary characters. -94-12-31 A bug which caused read to fail on a file that was - open for read/write with <> when the first operation - was print or printf has been fixed. -94-12-31 When a job is suspended, it is put on the top of - the job list as required by the POSIX standard. -94-12-31 The value of OPTARG when an option that required - an argument but didn't have one was incorrect in the - case the the option string began with a :. -94-12-31 A bug which caused the terminal to get into a bad - state with some KEYBD traps in vi-mode has been fixed. -94-12-31 A bug which caused an invalid trap to cause a script - to terminate, rather than just return an error, has - been fixed. -94-12-31 Backreferencing sub-expressions in patterns and replacement - strings now works. -94-12-31 A bug in chmod which caused the -R option to fail has - been fixed. -94-12-31 +More signal names have been added for Solaris - -94-06-30 --- Release ksh93a --- -94-06-30 An expansion bug which causes portions of a word after - a $((...)) expansion that contains a nested $var expansion - to be lost has been fixed. -94-06-30 A bug that caused a core dump when a script that did not - have PWD set and did a cd inside command substitution - has been fixed. -94-06-30 A bug which caused a core dump on some machines when - the LANG variable was assigned to has been fixed. -94-06-30 A bug which incorrectly handled set disciplines that - performed arithmetic evaluation when the discipline - was called from the arithmetic evaluator has been fixed. -94-06-30 A bug caused by an EXIT trap inside a function that - was executed in a subshell was fixed. -94-06-30 If foo is a function, and not a program, then command foo - now reports that foo isn't found rather than invoking foo. -94-06-30 The previous version incorrectly listed -A as an - invocation option. The -A option is only for set. -94-06-30 A bug was fixed which caused ksh to loop when execution trace - was enabled and the PS4 prompt required command substitution. -94-06-30 A bug which could cause the job control switch character - to be disabled when a script that enabled monitor mode - terminated was fixed. -94-06-30 A bug in the macro expansion global replacement operator //, - when the pattern began with a [ or +( has been fixed. -94-06-30 A bug which prevented ~ expansion from occurring when - it was terminated with a colon inside an assignment - has been fixed. -94-06-30 A bug in the dot command which prevented autoload functions - from working has been fixed. -94-06-30 A bug which caused a variable to be unset if the - its value were expanded inside a set discipline has - been fixed. -94-06-30 Whence -a now longer reports that a defined function - is undefined. -94-06-30 A bug on some systems in which $0 would be incorrect - in scripts invoked by name has been fixed. -94-06-30 Here documents with an empty body now work. -94-06-30 A bug which disabled argument passing and resetting - of options for a script invoked by name inside a - function has been fixed. -94-06-30 A bug in which an EXIT trap set the caller of a function - would be executed if a command called inside a function - was not found has been fixed. -94-06-30 A bug which allowed a script to trap signals that are - ignored at the time that the shell was invoked has - been fixed. -94-06-30 A bug which caused 2<&1- when applied to a shell built-in - to leave standard input closed has been fixed. -94-06-30 A bug which caused the shell to incorrectly parse - $() command substitutions with nested case statements - has been fixed. - - -:::::::: pax :::::::: - -12-05-25 file.c: #include for tmdate() prototype -12-05-14 pax.c: use Format_t.match to eliminate explicit format references -12-05-14 pax.c: add xz format -- requires local system standalone xz command -12-05-07 tar.sh: fix file/option quoting, --show -12-05-04 tar.sh: snarf update from Brian Russell -12-04-20 pax.c: verify that --maxout > --blocksize (else it recurses on newio()!) -12-04-17 pax.c,copy.c: fix multiple prompt for --write --yes -12-04-17 misc.c: --yes accepts { 'y' 'Y' '1' }, { 'q' 'Q' '-' } => remaining no -11-06-21 pax.c,copy.c,file.c: add --filter option mtime= -11-03-17 copy.c: fix bug that didn't list special files for --verbose -11-02-11 pax-tnef.c: handle "" member names -- really? -11-02-02 pax-pds.c: ident now requires at least one dir entry -10-10-10 file.c: don't prune state.update dirs based on time -- doh -10-10-04 pax.c,misc.c: fix --meter off-by-one bugs for long paths -10-10-04 pax.c: add #updated files to --update --verbose summary -10-10-04 pax.c: --meter implies --verbose summary -10-09-01 pax.c: RE errors => exit(2) -10-08-27 add -U, --different to update files with different -10-08-22 format.c: archive update requires (ap->io->mode & O_RDWR) -10-08-11 use conformance("standard",0) test -10-08-09 fix extended header size key precedence/performance -10-08-09 use { SEEK_DATA SEEK_HOLE } for -rw if available -10-08-08 disable SOKTYPE -10-06-21 align { --append --update } with posix -10-06-14 ug+s only for -p [eo] -10-06-14 atime in archive by default for formats that support it -10-06-14 add state.resetacctime to separate -t from state.acctime -10-06-12 fix --exact to list matched directory hierarchies -10-06-01 sync with ast api 20100601 -10-01-22 pax.c: fix -rw to 1 char dir name that dropped '/' separator -09-09-09 ax-tar.c: handle gnu tar octal overflow extensions for all octal fields -08-12-31 pax.c,pax-vczip.c: add vczip compression format -08-05-08 pax.tst: handle systems with privileged chmod +t / mkfifo -08-05-01 pax-tar.c: handle sfsprintf() '\0' -07-12-11 delta2patch.sh: drop pax -v, add pax --nosummary -07-12-06 delta2patch.sh: add -07-09-21 format.c: add sumprint() default scale arg -07-05-01 pax-tar.c,options.c: fix pax extended header for >=2**32 size -07-03-14 pax-tnef.c: swap op == 3 for all arch! -06-10-31 delta.c,format.c: fix ar=>ar delta bug that skipped data twice -06-10-11 add sfstropen()/sfstruse() error checks -06-09-27 pax.tst: fix uid etc. tests to use --listformat -- duh -06-09-12 delta.c: delta for any X_IPERM st_mode changes -06-06-07 pax: add -U --delta.update to update only delta members -05-12-14 pax: fix --filter to work for --read and expand command %(...) -05-06-07 format.c: fix inter volume fill logic -05-05-28 pax: improve "junk data after volume" checks -05-05-22 pax: fix --append for the formats that can handle it -05-05-18 pax-flash.c: add solaris flash embedded archive format read -05-03-19 options.c: -l == --link (not --local) per posix -05-02-08 misc.c: fix interaction between delta and --meter -05-02-07 delta.c,pax.h: don't output delta when src==tar -- duh -04-12-25 bio.c: fix (*putheader)() return value logic, especially for ENOSPACE -04-12-08 listformat now handles high resolution time -04-12-01 tv.h,tv.c,features/tv move to libast -04-09-25 bio.c: fix ap->io->count for skipped data -- wow - pax-rpm.c: fix header padding logic -04-09-01 bio.c: fix bread() seek logic -04-08-11 pax.c,options.h,options.c: add -C,--chmod=mode to control header modes -04-08-05 bio.c: fix bread() pointer arith 64 bit assumption (pax#15) -04-08-01 delta.c: fix checksum 32-bit logic (pax#11) (testpax#01) -04-07-19 delta.c,format.c,pax-tar.c: { O_RDONLY O_WRONLY O_RDWR } are values -04-03-17 pax-tar.c: add tar_putepilogue to *all* tar variants - format.h: let pax-tar.c determine tar variant order - bio.c: fix a few printf format long long mismatches: %ld => %I*d - format.c: map ident buffer CC_ASCII => CC_NATIVE -04-02-29 format.c: drop ap->format=0 for possible deltaverify() - format.c: handle CC_ASCII=>CC_NATIVE getprologue() header translation - options.h,options.c: add --forceconvert to force --from -04-02-25 pax.c: regcomp REG_SHELL => REG_LEFT|REG_RIGHT -04-02-24 pax.c: add --action - copy.c: fix file list peek premature '\n' => '\0' bug - pax.tst: add --action,--checksum,--filter,--install tests -04-02-21 file.c: fix VPATH state.pwd corruption -04-02-14 add -F --fsync to call fsync(2) for each copied file -04-01-27 bio.c: fix bget() buffer size alignment/mismatch overflow -04-01-24 pax-*.c: use paxlib.h interfaces -04-01-03 pax-cab.c: move to paxlib/cab as standalone plugin - pax-calib.c: move to paxlib/calib as standalone plugin -04-01-01 add --passphrase=passphrase, -E -03-12-24 pax-zip.c: move to paxlib/zip as standalone plugin -03-12-18 paxlib.h: add paxpart(), link with -lcodex for paxlib plugins -03-12-05 pax-zip.c: fix EXT header logic -03-12-01 rename OPT_delta_size to OPT_uncompressed: !=0 => compressed - list compression % in delta op field -03-11-25 paxlib.h: add external format dll interface -03-11-20 pax-calib.c: add file suffix heuristics -03-11-19 pax-calib.c: convert ibm -INC [edit comment] to COPY [REPLACING] - pax-calib.c: handle line size > 80 -03-11-11 pax-pds.c: add mvs pds listing -03-11-06 regression tests finally pass after Format_t method switch -03-10-31 Format_t converted to true method -03-10-20 initial readonly ca-librarian support -03-10-01 add pax delta format -- groundwork for vcdiff deltas -03-09-23 pax.tst: change test file names for same ascii/ebcdic sort - pax.c: extended header values with length need no quoting -03-09-11 default output format now ustar -- should eventually be pax - format rename: tar=>oldtar, ustar=>ustar|tar - add --testdate=date regression test hook - add --uid=id --gid=id - ascii vs. ebcdic cleanup -03-09-10 private static cleanup -03-09-09 xopen sync and { pax ustar } format fixes, interface -03-06-21 format.c: add ccode conversion check to putheader() -03-05-28 file.c: fix -vrw directory double list - update to new interface -03-03-05 pax.c: tgz => ustar:gzip, tbz => ustar:bzip -03-02-28 pax.c: handle a few common -x aliases -03-01-14 misc.c: fix meter sign overflow for sizeof(off_t)==sizeof(int) -02-12-13 format.c: fix TNEF bug that did bget(n) for n>buffersize -02-10-23 misc.c: fix meter buffer overflow -02-10-20 pax: drop experimental OMF; use ardirlist() to list ar types - pax: add -t for x/open -02-10-18 pax: add tar/ustar swap and inter-volume junk block checks -02-09-09 format.c: handle all 11 octal digits in cpio format size -02-09-05 file.c: fix chmod() loop at exists=0011 on case ignorant filesystems -02-08-19 pax: cmd line patterns applied before -i or -s path edits - pax: add posix -c for --invert -02-08-06 pax: change --meter to use * instead of non-portable inverse video -02-07-17 pax: handle gnu tar largefile size extension -02-06-26 pax: fix regsubexec() edited symlink text buffer clobber -02-05-24 pax: update to use regsubcomp(),regsubexec() -02-05-07 pax: use ,-lardir for library archives -02-04-23 pax: add dos omf library read -01-12-07 pax: fix --meter to retain paths containing " -- " -01-12-06 pax: fix --meter to stop at 100% (don't tell coach) -01-10-20 pax: describe the 4 operation modes in separate paragraphs -01-10-18 pax: fix --meter for paths containing \f\n\r\v -01-09-06 pax: add ms tnef (transport neutral encapsulation format) archive read -01-08-11 pax: fix tar_checksum() w.r.t. CC_NATIVE!=CC_ASCII -01-06-28 pax: fix --from --to bio logic that sometimes double converted -01-04-24 pax: --from & --to now associated with archive instead of global state -01-04-17 pax: --from conversion only done if no control chars in first 256 -01-04-01 pax: fix --intermediate to create missing dirs first -01-02-27 pax: add lchmod() and lchown() for symlink() restoration -01-02-08 pax.tst: add -L and -P to symlink edit test -01-02-07 format.c: fix malloc off-by-one for vdb format read -01-02-02 file.c: fix duplicate -s map in addlink() -00-12-20 bio.c: include for systems that miss _IOW() etc. -00-10-31 format.c: handle rpm 4.0 and newer -00-09-20 copy.c: always allocate state.tmp.lst! -00-08-31 change paths in delta archive: -rf i -z - -s e -wf o -z - [almost] -00-08-11 copy.c: drop memalign() call for _std_malloc==1 in libast - copy.c: save filter path from sfgetr() reset -00-06-01 pax: fix mime format size by dropping last \r\n -00-05-26 pax: astconf("CONFORMANCE",0,0)=="standard" inhibits some extensions - pax: check USTAR file and link name lengths -00-04-01 pax.tst: export TZ=EST5EDT; new tests should be UCT -00-03-11 pax: add encapsulated mime format read - pax: fix vdb block count -00-02-14 pax: fix hard link read that didn't apply -s edit - pax: logical|physical filter options -00-01-04 pax: fix rpm embedded archive hard seek - pax: --filter implies --nodescend - pax: add --meter - pax: handle ms PORTAR '\' => '/' path separator -99-11-19 pax: try `ratz -c' if `gunzip' not found -99-11-11 add --checksum, --install, --local, --preserve=s -99-11-04 fix zip for archives with EXTLOC headers - don't generate //* file names -99-10-31 pax: add tgz == tar:gzip, --filter=- -99-08-11 bio: fix end of medium handling -99-06-01 restore -T == --test -99-05-28 pax: add rpm read -99-05-21 pax: fix -rw umask(0) bug -99-05-17 pax: fix chmod() delay for ug+s,+t -99-05-11 nocom: long options -99-05-09 pax: sfopen(sfstdin,0,"rt") for input file list -99-05-01 pax: state.xdev => FTW_MOUNT!! -99-04-01 pax: fix Integral_t for sizeof(long)==8 - pax: fix ]] in optget usage -99-03-17 pax: better st_mode preservation -99-03-01 pax: fix dirprefix() prune to work in all cases - pax: add savepath() to handle >PATH_MAX paths -99-02-06 pax: update to new optget() -99-01-11 pax: add bzip2 compression support -98-10-01 pax: fix -rw hard link bug - pax: fix -o preserve=* option.level inconsistencies -98-08-11 cpio.sh: fix with getopts - pax: increase -rw default buffer size - pax: use REG_DELIMITED to parse -s -98-04-01 fix tar delta bug that set st_size=0 before consuming delta head/tail - pax - '?' lists help info for flag - fix -rw bugs introduced by recent delta fixes - testpax: add regression tests - fileout: add EIO memalign fallback to track sgi bug -98-03-19 fix tar delta epilogue check - fix delta pass checks - fix off_t vs. file size mismatches -98-03-17 umask(0) only if -o preserve=* in effect - add File_t.ro to mark readonly files/paths -98-02-14 add -o intermediate to copy output to intermediate before commit -98-01-23 use %I#d scanf format to get off_t right -98-01-11 -K == -o keepgoing - -x format on read accepts that format only (useful with -o keepgoing) -97-12-07 add 4 NULs to work around gunzip bug that peeks beyond EOF -97-11-11 use PROC_FD_PARENT to let procopen() close parent fd -97-10-31 cab list works; anyone have LZX or QUANTUM decompress code? -97-09-22 fix vdb format write -97-08-11 fix omitted missdir() call -97-07-17 -r attempts chmod u+w along with missdir and remove - -rl preserves existing links if possible - beginnings of cab file read -97-05-09 fix putepilogue() with off_t boundary -96-12-25 zip archive header magic fix - use MTIOCGETBLKINFO to determine default tape blocksize - -o eom=!command uses $(command read|write part [file]) for next file - -s ',.*,-,' cats to stdout - -x pax support for >2GB file size -96-11-28 off64_t tweaks - drop -r -w -x order dependency - undo ccmaps() in bunread() - add explicit O_RDONLY checks (!= 0 on some systems) -96-10-11 change to from mem[ae]to[ae]() -96-08-11 add -o to={ascii|ebcdic} -o from={ascii|ebcdic} from mvs -96-02-29 enable -rw setfile() -- why was it disabled in the first place? - fix stdin file list peek bug that dropped leading files -96-02-09 handle zip archives on input -96-01-18 AT&T Research now - switch to -95-11-24 don't check for compressed format if already uncompressing -95-11-18 ignore empty file list lines -95-10-31 fix and compensate for cpio header hard link size bug -95-10-11 drop "blocking ignored in pass mode" message - aschk symlink data need not have trailing '\0' -95-09-01 fix nocom \ handling -95-08-11 builtin nocom for -o filter=nocomment - more delta tracing - vd02 delta algorithm -95-07-17 fix -w output to stdout initialization bug - fix stdin file list peek bug that dropped trailing files -95-05-09 don't check member count unless its really a trailer - sfkeyprintf lookup string arg is now the format conversion character - initialize output archive for -rw to stdout archive - misc.c had putc() and fgets()! - unused var cleanup - add return to listprintf() - fix delta pass missing dir fd bug - fix dirprefix for / - add bax.sh as an *example* -95-04-01 with proto va_start() must come before any arg references - fix delta bug that failed to mark emitted or skipped members - allow -z for patch deltas - be sure to set ap->format before binit() - fix ordering bug that botched most deltas! - use file.name (after -s maps) rather than file.path in delta hash - fix bget() bug that skipped checksum -95-03-19 first round with POSIX 1003.2 1995 - handle file holes on input - delta header contains member index and trailer size - delta trailer contains member checksum - delta epilogue contains member count -95-03-01 internal redesign using Archive_t handles instead of global state - -o ordered (-O) allows single pass through base -95-02-14 make -u work with VPATH - -x composes gzip,compress,delta,delta88,ignore,patch with real formats - -x gzip:tar, -x gzip,tar, -x 'gzip tar' accepted - -x delta is equivalent to -z - - -o delta deleted - fix OPT_owner null dereference - fix archive pass bug that didn't update DELTA_create members -95-01-19 detect compress and gzip on input - add -f -z grouping with -r -w to support -r -f -z -w -f -z - fix a few compress/delta ineraction bugs - add -t s[#]k[#] to skip all [#] and/or keep all [#] tape volumes - use new ALIGN_ identifiers -95-01-11 add s option to -s to stop on success - add delta 94 (vdelta) - add long option names - deprecate most flag options - DELTA_TEMP <64K avoids temp file - add -o delta=patch for patch archives -94-12-25 add lib/pax/*.fmt args files for unknown formats - fix mknod() calls to use the right file type! -94-11-11 fix ar out of phase warning -94-08-11 add -Rh'header' and -Rt'trailer' for vdb write - -e now works for -rw -93-08-11 add vdb `virtual database' r/w format -93-06-11 fix bug that didn't output non-regular files - -w now uses FTW_POST to preserve dir modes -93-04-01 handle PORTAR long member name table -92-04-01 copy all 0 length files out regardless of read permission -91-08-11 add check for garbage after end tar implementation bug -90-10-01 add mips ar format out of date check -90-08-11 header/trailer alignment now table driven -90-07-20 fix binary output bug that set header size and time to 1 -90-06-01 fix misc delta compression bugs -90-05-01 fix DELTA_create bug that did not check COMPRESS -90-03-28 bump regular output block size to 8k -90-02-11 delta changes held off by #if new_delta_format until new libdelta - base archive checksums incompatible with previous versions -90-02-06 fix newio() bug that looped when write() returned 0 -90-01-25 add proposed posix 1003.1b archive/interchange format - tune buffering - change -R option for general record support - generalize delta id file name -- incompatible with old format - prepare for new libdelta and subsequent incompatibilities -89-12-01 add self-delta support, delete -A option (one algorithm with versions) -89-11-18 fix dir mode restoration bug -89-11-11 fix delta update with older file -89-10-31 add portarch and randarch readonly object formats -89-10-11 allow -f with -rwz -89-10-01 add -Bmaxblocks and -C to match latest tar/cpio extensions -89-08-22 align read() buffers to IOALIGN -89-07-27 add EFBIG & EDQUOT checks to newio() -89-07-04 fix cpio binary header mtime and size swab bug - fix -rw bug that makes it work now! - redo file post processing restoration -89-05-11 handle GNU-tar USTAR format botch - missing intermediate directories inherit mode of nearest ancestor - fix names on stdin bug that only did -P - incorporate lar changes from David Muir - expand -R arg syntax - handle ansi/ibm D,F,S,U,V formats on output -89-03-28 fix bget() buffer boundary error for reads < buffersize -89-03-01 ignore DELTA_PASS file set*() calls -89-02-22 fix bread bug for 0 count and bget memcpy overlap -89-01-18 fix copyout() rfd<0 delta bug that generated multiple entries -89-01-11 fix dirsize!=0 bug; change ftwalk XDEV implementation -88-12-11 fix symlink->nowhere bug -88-11-22 add vmsbackup readonly format; fix lseek validity checks -88-11-17 add -T040 to simulate tape device blocking on input -88-11-11 add s5r4 asc and aschk formats -88-11-07 hard links and deltas don't cross volumes -88-11-01 add -n to read exact file list -88-10-20 add bread(0,...) to skip, bget() and bput() io optimizations -88-10-11 fix delta ops to use pattern args -88-10-04 fix argc bug that botched -rw with file args -88-10-01 for delta update, verify that untouched files match base archive -88-09-30 fix allocate() bug: malloc() -> calloc() -88-08-23 use libx/memsum() for checksum calculations -88-08-20 add `![command]' to end of medium replies -88-08-18 table of contents output to stdout -88-08-08 update for libx/ftwalk() and libx/strls() -88-07-28 streamline ftwalk() interface -88-07-21 finish up -a and -u tar compatibility -88-07-17 add cpio.sh and tar.sh interface scripts -88-07-15 convert to pax - -:::::::: html :::::::: - -12-02-29 mm2html: fix so stack bug that popped one too many -12-01-11 mm2html: fix \*(Rf to use ... -12-01-01 htmlrefs: add