Commits on Jan 13, 2018
  1. More sh.1 fixes and additions

    dannyweldon authored and siteshwar committed Jan 13, 2018
    cd section was appending rksh93
    Added histexpand and -H
    Removed duplicate -D
    Some options were indented too far
    Some reordering of options
Commits on Jan 2, 2018
  1. Fix a few typos in sh.1

    dannyweldon authored and krader1961 committed Jan 2, 2018
Commits on Dec 29, 2017
  1. Correct $INSTALLROOT when runing bin/package clean

    dannyweldon authored and krader1961 committed Dec 28, 2017
    There was a bug that caused running "bin/package clean" twice to
    remove the entire repo.
Commits on Oct 30, 2017
  1. Allow building with `clang` rather than `gcc`

    krader1961 committed Oct 30, 2017
    This hack allows using clang to build the project. You need to
        export USE_CLANG=yes
        export CC=clang
    before running `bin/package make`. I didn't implement a cleaner solution
    because most of the active contributors agree we want to replace Nmake
    with Meson or Cmake ASAP. Hence this hack to support using clang and
    (soon) oclint. I've tested this on macOS, FreeBSD, and Ubuntu 16.10.
Commits on Oct 28, 2017
  1. Update some files to match output of bin/package

    krader1961 committed Oct 28, 2017
    Running `bin/package build` updates several scripts in the *bin*
    directory because they're missing the current `USAGE_LICENSE`
    definition. This is super annoying as every time you do a build `git
    status` tells you those files have changed and there are now *.old
    versions as well that need to be committed. So commit the updated
    scripts to eliminate that noise.
  2. Tell git to ignore some files and directories

    krader1961 committed Oct 14, 2017
    There are files and directories that are artifacts of building and
    testing this software. And others that are the result of other actions
    such as text editors creating backup files. We don't want those
    artifacts accidentally included in a commit and it's annoying to have
    `git status` telling me they haven't been staged for a commit.
Commits on Oct 27, 2017
  1. Add missing return values

    krader1961 committed Oct 24, 2017
    While trying to build ksh93 with clang I noticed some errors about
    missing return values in the ls.c module that causes the build to fail.
    This change is my best guess as to the correct return values.
Commits on Oct 25, 2017
  1. Remove invalid use of `memccpy()`

    krader1961 authored and siteshwar committed Oct 24, 2017
    The behavior of the `memccpy()` function is undefined when the buffers
    overlap which is sometimes true for the `sfputr()` function. So always
    use an explicit loop to copy the data.
    Fixes #78
Commits on Oct 16, 2017
Commits on Oct 15, 2017
  1. Fix compilation on FreeBSD by renaming ALIGN to MEM_ALIGN

    saper authored and siteshwar committed Jul 1, 2017
    FreeBSD seems to undefine ALIGN in <sys/param.h>
  2. Fix how overlapped buffers are handled

    krader1961 authored and siteshwar committed Oct 14, 2017
    Trying to build this project on macOS (a BSD variant) resulted in two
    `assert()` failures when running `nmake`. The problem is that there are
    at least two places which pass overlapping buffers to functions which
    are explicitly defined to have undefined behavior when the buffers overlap.
    See issue #42.
Commits on Aug 23, 2017
  1. Pass correct file descriptor to sh_iosave()

    siteshwar committed May 20, 2017
    Resolves: rhbz#1421650
  2. .travis.yml: add check for line comments

    kdudka authored and siteshwar committed Jul 14, 2017
    ... which are not used in ksh source code and should not be introduced
    by accepted PRs.
Commits on Aug 3, 2017
  1. Fix build failures caused by update in glibc

    siteshwar committed Aug 1, 2017
    Resolves: rhbz#1477082
Commits on Aug 1, 2017
  1. Fix warning while creating kia file

    siteshwar committed Jul 14, 2017
    Thanks to Paulo Andrade <> for the patch.
    Resolves: rhbz#1438045
Commits on Jul 16, 2017
  1. Use posix exit code if last command exits due to a signal

    siteshwar committed Jul 11, 2017
    If the last command in a script was killed by a signal, ksh kills itself with the same signal. This patch fixes it by using exit() (with status 128 + signal number) instead of kill().
    It also fixes the bug where ksh kills itself with a signal if argument to exit command is greater than 256.
    Resolves: rhbz#1469624
  2. Treat unset parameters as error

    siteshwar committed Jun 30, 2017
    Resolves: rhbz#1222025
  3. Fix parsing of iso8859 characters

    siteshwar committed May 20, 2017
    Thanks Paulo Andrade <> for the patch
    Resolves: rhbz#1417886
Commits on Jul 15, 2017
Commits on Jul 5, 2017
  1. Test builds for openSUSE on Travis

    siteshwar committed Jul 5, 2017
  2. Correctly set CCFLAGS in .travis.yml

    siteshwar committed Jul 5, 2017
Commits on Jun 22, 2017
  1. Fix invalid argument to free()

    siteshwar committed Jun 21, 2017
    Related: rhbz#1463312
Commits on Jun 20, 2017
  1. Fix condition to fork subshell

    siteshwar committed Jun 20, 2017
    Resolves: rhbz#1414808
Commits on May 22, 2017
Commits on May 17, 2017
  1. Fix memory corruption while parsing functions

    siteshwar committed May 17, 2017
    Always initialize savstak variable to NULL to avoid any undefined behavior
    Related: rhbz#1451057
Commits on May 15, 2017
  1. iffe depends on cc -E not inserting newlines between tokens

    siteshwar committed May 15, 2017
    Thanks to Andreas Schwab <> for the patch
Commits on Jan 11, 2016
  1. Version: 2016-01-10-beta

    Lefteris Koutsofios
    Lefteris Koutsofios committed Jan 11, 2016
    RELEASE notes for src/cmd/builtin/RELEASE
    16-01-06 added dummy code in builtin.c to keep the linker from optimizing it out
    RELEASE notes for src/lib/libast/RELEASE
    16-01-08 features/lib: fixed syntax error in tst for memccpy that caused the system memccpy to never be used
    RELEASE notes for src/lib/libexpr/RELEASE
    16-01-06 expr.h: modified definition of EXSTYPE to deal with bison/yacc versions
  2. Version: 2014-12-24-beta

    Lefteris Koutsofios
    Lefteris Koutsofios committed Jan 11, 2016
    RELEASE notes for src/cmd/INIT/RELEASE
    13-12-05 Makefile, add BIN=1 to .paths for ast -lcmd builtins
    13-11-15 fix rebuild logic to handle in-place no-map-libc <=> map-libc
    13-11-14 handle "opt no-name" (specifically for "opt no-map-libc" => _opt_map_libc default)
    13-11-07 cc.darwin*: target 10.3 => 10.7
    13-10-30 fix lcl|nxt logic to work for multi-arch style implementations
    RELEASE notes for src/cmd/builtin/RELEASE
    14-02-06 grep.tst: add more --context=... tests
    13-12-05 ls.tst: move from src/cmd/std
    13-09-13 pr.c: Mbstate_t update
    RELEASE notes for src/cmd/ksh93/RELEASE
    14-12-24  --- Release ksh93v- ---
    14-12-24  A bug which occurred when the undocumented alarm builtin received an
    	  alarm timeout while in the read builtin has been fixed.
    14-12-24  A bug in the startup of interactive restricted ksh which give a
    	  restricted error message for redirection to /dev/null has been fixed.
    14-12-24  A bug in which the output from builtin --? was garbled has been fixed.
    14-12-24  The SIGINFO signal has been added to DARWIN.
    14-12-23  A bug in which job control was being disabled by using `...` command
    	  substitution has been fixed.
    14-12-22  Some patches for compilation on Darwin have been added.
    14-12-02  The requirement that unquoted { and } must match inside string with
    	  ${name op string} has been removed (at least for now).
    14-11-26  A bug in which hitting interrup while a PS1.get function was executing
    	  could cause in infinite loop has been fixed.
    14-11-25 +If tab completion for a command name that is an alias is attempted,
    	  it will use the completion for the command it is aliased to.
    14-11-24  Two bugs with programmable completion have been fixed.
    14-11-24  A parser bug with line continuation after the =~ operator with
              [[...]] has been fixed.
    14-11-20  A fix in read for some multibyte locales such as shift JIS has been
    14-11-02  Merged in changes from Apple for Mac/OS.
    14-10-29  Several bugs in the read -m json builtin have been made.
    14-09-29  A bug which allowed builtin -d to delete a special built-in has been
    14-09-24 +When listing jobs, the shell now shows the directory that the job
    	  was started from when it was not started from the current working
    14-09-09  A bug in which `` command substitutions could hang with large output
    	  has been fixed.
    14-09-02  A bug in the test and [...] command for arithmetic operations when one
    	  of the operands was a variable.
    14-08-28  a bug which could cause a core dump when unsetting a function that is
    	  in the active call chain has been fixed.
    14-08-22  A bug in which a command substitution of a function that fails, does
    	  not cause an assigment command to fail has been fixed
    14-08-05  A bug in which print -s would fail with bad file unit number has
    	  been fixed.
    14-07-22  A bug in which a non-zero exit status not last element of a pipeline
    	  could cause the pipeline to fail when pipefail is off has been fixed.
    14-07-21 +A -m method option has been added to read to read compound variables
    	  using a specified method. Currently only methods ksh and json are
    	  implemented.  -m ksh is equivalent to -C.
    14-07-18 +In bash mode, the last element of a pipe is run in a subshell unless
    	  the option lastpipe is on.
    14-07-15  Fixed a bug in which json format output with 'print -j' had a comma
    	  after the last element.
    14-07-11 +Added -t flag and -P flag to whence and type for bash compaiblity.
    14-07-11 +Added -p flag to alias to output aliases for re-input.
    14-07-10  In bash mode x=() creates an empty index array instead of an empty
    	  compound variable.
    14-07-01  Some ifdefs were added so that ksh93 compiles with SHOPT_COMPLETE
    14-06-30 +The variable COMP_WORDBREAKS for programmable completion.
    14-06-25  A bug on some systems in which cd to a directory without execute
    	  permission would not fail has been fixed.
    14-06-25 +The BASH_SOURCE variable was added when ksh is run in bash mode.
    14-06-25 +The -D and -E options have been added to the complete builtin.
    14-06-19  References to were deleted.
    14-06-19 +The -l flag to trap and the -p flag to umask were added as in bash.
    14-06-17 +In bash mode ${!parameter} is treated like ${$parameter}.
    14-06-17  Fixed a bug in which eval inside a dot script invoked by a profile file
    	  terminated the dot script prematurely after running the eval command.
    14-06-16 +Added parameter expansion operator ${$parameter} for variables and
    	  positional parameters.
    14-06-06  Added -a option to read which is equivalent to -A.
    14-06-05  Fixed a bug in builtin -p.
    14-06-05 +Added -n option to builtin to disable builtins.
    14-06-04  Fixed a couple of file completion bugs.
    14-06-02 +When compiled with the SHOPT_BASH and run with the name bash,
    	  the shell now uses dynamic scoping for name() and function name.
    	  In addition the builtins declare and local are supported.
    	  The SHOPT_BASH option is on by default in the Makefile.
    	  More work remains with the bash compatibility option.
    14-05-25  Fixed a bug in vi command completion in which tab did not work
    	  after a space.
    14-05-25 +Replaced the -p option for read with -p prompt.  For backword
    	  compatibility, if a coprocess is running and prompt begins with -
    	  or is a valid variable name, -p causes the read from a pipe.
    14-05-25 +Modified the -u option for read and print so that it accepts the
    	  option argument p to indicate the coprocess file descriptor.
    14-05-08  A bug in the option parser which could cause 'X -a v=((...)...) to
    	  core dump has been fixed.
    14-05-07  A change to improve the performance of appending an element to an
    	  array has been fixed.
    14-05-02 +A compilation option to add programmable completion with the two
    	  new builtins, complete and compgen has been added.  It should behave
    	  the same as it does with bash.  Please try this out and report any
    	  problems you find.  Use compgen --man and complete --man to get the
    	  man pages.  Use the bash documentation for now for information about
    	  programmable completion.  The compilation is on by default for now.
    14-04-05  A bug in which type name starting with the letter a, did not
    	  allow instances to be created has been fixed.
    14-04-03  A bug which caused a syntax error when a here-doc was embedded
    	  in `` command substitution has been fixed.
    14-03-31  A bug in `` command substition of a pipeline which could cause
    	  memory problems has been fixed.
    14-03-25  A bug in which the assignment A=() when A is an index array of types
    	  did not eliminate the zero-th element has been fixed.
    14-03-24  A bug in which the braceexpand option was ignored when noglob was
    	  on has been fixed.
    14-03-17  A bug in which a timer alarm during a built-in could cause a core
    	  dump has been fixed.
    14-03-03  A bug in which creating an empty array of a type variable with
    	  required fields has been fixed
    14-02-12  A bug which occurs in an interactive shell when a file is opened as
    	  file descriptor 3 for reading which causes a subsequent read
    	  command to fail to read a line from the file  has been fixed.
    14-02-06  The description of .sh.match in the sh.1 man page was fixed.
    14-02-05  A typeset -p bug for an associative array of types has been fixed.
    14-01-29  A process substitution bug which caused a process to hang has been
    14-01-27  Another bug in which extended regular expressions give with the =~
    	  operator in [[...]] gave syntax errors with multiple (...){...} has
    	  been fixed.
    14-01-23  The value of errno is now saved and restored during shell interrupt
    14-01-21  A bug in which a read from a script invoked with set -m could stop
    	  when trying to read, and cause the parent to try to restart which
    	  causes a loop has been fixed.
    14-01-20  A bug in the right shift operator in arithmetic expressions when the
    	  shift count is greated then the number of bits in a long integer has
    	  been fixed.
    14-01-20  Another memory leak which occured for functions defined in subshells
    	  has been fixed.
    14-01-14  Fixed a memory leak which occurred for local variables in a function
    	  that is invoked by a subshell.
    14-01-10  [[...]] now supports hexidecimal constants with aritmetic operators.
    14-01-09  A bug which could cause a core dump with nested subshells and
    	  functions has been fixed.
    14-01-09  A second bug in which appending to an empty array of types does
    	  starts with element 1 rather than 0 has been fixed.
    14-01-06  A bug which could cause a core dump when KSH_VERSION is exported in
    	  the envirnment has been fixed.  KSH_VERSION is a name reference to
    14-01-06  Fixed a bug that could cause a core dump wiith large prompts.
    14-01-06  A bug in which appending to an empty array of types does starts with
    	  element 1 rather than 0 has been fixed.
    14-01-02  A bug in which set -o nounset can trigger unset errors when reading
    	  function definitions has been fixed.
    13-12-31  The documente feature that state that unset a type subvariable that
    	  is readonly is required to be specified when creating an type instance
    	  now works.  The man page generated with typename --man now lists these
    	  fields as required fields.
    13-12-31  A bug in which extended regular expressions give with the =~ operator
    	  in [[...]] gave syntax errors with (...){...} has been fixed.
    13-12-30  A bug in the left shift operator in arithmetic expressions when the
    	  shift count is greated then the number of bits in a long integer has
    	  been fixed.
    13-12-05  If cd is invoked with no arguments and HOME is unset, it attempts to
    	  find the home directory and use that.  Otherwise an error occurs.
    13-12-04  A bug in the handling of $(<file) when contained in a subshell has
    	  been fixed.
    13-12-03  A bug in /bin/cd on Solaris which could cause a core dump has
    	  been fixed.
    13-11-25  The math functions nextafter and nexttowards now work when called
    	  different floating point types.
    13-11-22  Fixed bugs in support for f, d, and l suffices for floating point
    13-11-14 +Added -f fd option to pwd to display the directory corresponding to
    	  file descriptor fd.
    13-11-12  A bug in [[...]] in which $? is not preserved while expanding the
    	  right hand side of a binary expression has been fixed.
    13-11-11  A bug in [[...]] in which [[ 1<2 ]] is a syntax error has been fixed.
    12-10-15  Fixed a bug in which could cause long double data to not
    RELEASE notes for src/cmd/std/RELEASE
    13-12-05 ls.c: move src/lib/libcmd
    RELEASE notes for src/lib/libast/RELEASE
    14-05-12 features/lib: mmap() error return may be ((caaddr_t)0) or ((caaddr_t)-1)
    14-05-09 misc/optget.c: save opt_info state in case infof callout munges it
    14-04-15 misc/spawnvex.c: fix nil pointer deref
    14-04-15 sfio/sfcvt.c: fix flot bug that printed |x|<1 as 0
    14-01-14 tm/strptime.c: add %t
    13-12-06 vmalloc: default to VMALLOC_OPTIONS=check=nosegment; turn on to enable overbooking checks
    13-12-01 port/astconf.c: add pathdev() intercept to pathconf() for fpathconf()
    13-12-01 comp/ add PC { ACL SATTR XATTR } ops
    13-12-01 port/intercept.c: fix remove() intercept to handle directories
    13-11-20 sfio/sfcvt.c: drop [L]DBL_DIG limit checks -- what good are they?
    13-11-20 features/ widen net for ubuntu /lib64
    13-11-17 setlocale.c,utf32toutf8.c,utf8toutf32.c: handle nul byte/wchar_t and nil pointer cases (fixes the tr mem bug)
    13-11-14 features/*: fix tests that reference private argv[1] to handle iffe(1) argv[1]==tmp-file-name
    13-11-11 path/pathcanon.c,path/pathopen.c: fix O_XATTR errno logic, handle "/" path O_XATTR
    13-11-01 features/map.c: map-libc: add ast <error.h> symbols
    RELEASE notes for src/lib/libcmd/RELEASE
    14-02-06 context.c: fix -B0 bug that added superfluous --
    14-01-26 grep.c: add { -An -Bn } for gnu compatibility
    13-12-05 ls.c: move from src/cmd/std
    13-12-01 getconf.c: add -f<fd>, --descriptor=<fd> for fpathconf()
    13-12-01 rm.c: fix --directory logic; could really use unlinkat(d,p,AT_REMOVE)
    13-11-18 wclib.c: fix multibyte buffer boundary side buffer logic
    13-10-31 Makefile: use test instead of [[ ... ]] for mamfile portability -- doh
    RELEASE notes for src/lib/libpz/RELEASE
    13-11-20 pzlib.h,pzopen.c,pzpart.c: drop vmdisc
  3. Version: 2013-10-10-alpha

    Lefteris Koutsofios
    Lefteris Koutsofios committed Jan 11, 2016
    RELEASE notes for src/cmd/INIT/RELEASE
    13-09-25 add _${API}_API_IMPLEMENT guards for implementation code
    13-08-11 executed blocks now have a single argument that is a tmp file prefix
    13-08-11 fix intrinsic function test to rule out type names
    13-07-17 add '^#include.*iffe --include-first' for *.c feature test macro initialization
    13-07-17 refix 13-06-17 fix to check both $CC and $CCFLAGS
    13-06-24 add -lsocket => -lsocket -lnsl for systems that don't have it in -lc
    13-06-17 fix host type logic to handle -m32/-m64 almost cross-compile
    13-05-21 C+probe: add ksh-2013-05-21 `...` hang workaround -- FIXME
    13-05-17 package make should continue if ksh fails to build
    13-05-17 make.probe: fix CC.DIALECT+=EXPORT=DLL logic
    13-05-13 workaround ppcc+bash not handling '-o t t.c'
    13-05-01 add ``results path old'' for *.out.*
    13-03-20 make.probe: add CC.NM.NMFLAGS for stupid stupid stupid aix -Xany
    13-03-06 handle incompletely defined types e.g. "typ DIR dirent.h"
    12-12-05 C+probe: elide */tmp/* and */probe[0-9]* from stdinclude
    12-10-25 set DITTO_OPTIONS=dst=1 in destination read script
    12-09-27 fix admin log total logic
    12-09-18 fix -O disable logic that ate next arg
    12-09-11 make.probe: fix sunos cc/CC CC.STDLIB probe
    12-08-24 add ``api n1 = n2''
    RELEASE notes for src/cmd/builtin/RELEASE
    13-09-25 cksum.tst: adjust tests for gnu { md5 sha } text/binary indicator
    13-09-22 readlink.rt,realpath.rt: add tests
    13-09-19 head.tst,tail.tst: add incomplete line tests
    13-07-17 tr.tst: sync with src/lib/libcmd/tr.c
    13-05-22 pty.c: fix timeout logic
    13-04-22 grep.tst: add --context[=before,after] tests
    13-04-03 finally add grep and xargs
    13-03-21 who.c: work around stupid stupid stupid solaris 11 - hey guys, don't define _PATH_UTMP and it won't get used
    12-11-19 pty.c: change SFSTDERR_FILENO to sffileno(sfstderr)
    12-10-24 tr.c: move to src/lib/libcmd
    12-10-19 od.c: move to src/lib/libcmd
    RELEASE notes for src/cmd/codex/RELEASE
    13-08-11 codex.c: add WINDOW=size to usage[]
    RELEASE notes for src/cmd/codexlib/bzip/RELEASE
    13-09-19 codex.tst: update from obsolete "<meth" and ">meth" to --decode=meth and --encode=meth
    RELEASE notes for src/cmd/codexlib/compress/RELEASE
    13-09-19 codex.tst: update from obsolete "<meth" and ">meth" to --decode=meth and --encode=meth
    RELEASE notes for src/cmd/codexlib/gzip/RELEASE
    13-09-19 codex.tst: update from obsolete "<meth" and ">meth" to --decode=meth and --encode=meth
    13-07-30 gzip.c: 6 now default compression level (same as gzip(1)) for 5x time savings for negligible size in some cases
    RELEASE notes for src/cmd/codexlib/sum/RELEASE
    13-09-19 codex.tst: update from obsolete "<meth" and ">meth" to --decode=meth and --encode=meth
    RELEASE notes for src/cmd/coshell/RELEASE
    13-08-07 NGROUPS_MAX => getconf("NGROUPS_MAX")
    RELEASE notes for src/cmd/dss/RELEASE
    12-08-15 dss.c: update default struct type output
    RELEASE notes for src/cmd/dsslib/bgp/RELEASE
    13-10-10 bgp-mrt.c: fix STATE_BGP_TABLE to parse all attr() before nlri()
    13-08-28 mrt.h: MRT_ATTR_AIGP_20120425 => MRT_ATTR_AIGP
    13-08-28 bgp.c: add BGP_aigp, "aigp_t aigp { values_t aigp }"
    13-08-28 bgp-mrt.c: parse MRT_ATTR_AIGP subtype 1
    13-04-18 bgp-mrt.c: add mvpn_t.src_as* to the member table -- doh
    13-03-21 bgp-mrt.c: fix TABLE_DUMP_V2_RIB* old record data bleed through
    13-03-11 bgp-mrt.c: fix mvpn.src_addrv[46] set bit
    13-03-09 bgp-mrt.c: adjust debug message size to include common mrt header
    12-08-20 bgp-mrt.c: fix bad MCAST_VPN dump data workaround
    12-08-15 bgp.c,bgp-mrt.c: elevate struct data to cx struct types
    12-08-08 bgp.c,bgp-mrt.c: fix mvpn parse anomalies
    RELEASE notes for src/cmd/dsslib/flat/RELEASE
    13-08-11 flat.c: strcopy() => stpcpy()
    13-03-11 flat.c: fix <RECORD><WIDTH> vs <SIZE> logic
    13-03-01 flat.c: fix flatten txt string => bin size+string
    12-11-29 flat.c: implement var length format records on output
    RELEASE notes for src/cmd/dsslib/ip_t/RELEASE
    13-08-28 bgp.h: add BGP_aigp
    13-08-28 ip_t.c: add "values_t" uint32_t vector type
    13-04-18 bgp.h: add BGP_MVPN_src_as*
    13-04-09 ip_t.c: treat undefined unbound generic ip addrd as
    12-08-11 bgp.h: Bgptunnel_t
    12-08-01 bgp.h: mvpn additions
    RELEASE notes for src/cmd/dsslib/lsa/RELEASE
    12-02-29 add { lsag pmcoa } formats
    12-01-15 ospf_lsa.c: handle generic ip address type binding
    03-02-07 change "time" to "ns_t" and u_int64 in the canonical record
    03-01-31 update rtid doc
    03-01-23 update for void* => Dssrecord_t*
    02-12-17 propagate -ldss changes
    02-11-28 convert from sfprintf to errorf
    RELEASE notes for src/cmd/dsslib/xml/RELEASE
    12-09-14 dss.tst: update for libast::tmzone fix
    RELEASE notes for src/cmd/fus3d/RELEASE
    2013-07-29 snarf from amazing dr.ek, ast-ize, and its alive
    RELEASE notes for src/cmd/html/RELEASE
    12-08-15 mm2foswiki: add
    12-08-15 mm2bb,mm2twiki: add (but ignore some) mm2html options for compatibility
    12-08-15 mm2bb,mm2html,mm2twiki: eliminate ksh -n warnings
    RELEASE notes for src/cmd/jcl/RELEASE
    13-03-04 jcl.c: add { --list=dd --list=parms }
    13-03-01 cpy2dss.c: COMP-5 => { be_t le_t } depends on _ast_intswap
    13-03-01 cpy2dss.c: --text --variable flattens db2 VARCHAR structs
    13-02-06 jcm.c: fix group and dummy job parse, handle event clear
    13-02-06 add .EVENT.CLEAR
    13-01-23 cpy2dss.c: must check REC_V_INCLUSIVE() in recfmt
    RELEASE notes for src/cmd/ksh93/RELEASE
    13-10-08  --- Release ksh93v- ---
    13-10-08  The shell arithmetic now recognized suffices f,F, l, and L for
    	  floating point constants.
    13-10-07  The shell now prints an error message on standard error when a
    	  job specified with %job does not exist.
    13-10-04  A bug in the value of i.MAX inside an arithmetic expression when the
    	  variable i is unsigned long has been fixed.
    13-09-23  A bug in which a compound assignment to a type, [(T_t x=(i=2)] where
    	  type T_t is defined in FPATH would fail with a syntx error has been
    13-09-16  A bug in which a 0 value for variable in arithmetic expression inside
    	  a function fails when set -u has been set has been fixed.
    13-09-16  A bug which could cause a core dump when generating the man page
    	  for user defined types containing compound variables has been fixed.
    13-09-16  A bug in the handling of array instances of type variables in an
    	  arithmetic expression has been fixed.
    13-09-13 +The signal .sh.value variable is now a compound variable with the name
    	  value.q for sending a signal with -q and value.Q for sending a value
    	  with -Q.
    13-09-13  A bug in $(...) command substitution that corrupted a trailing
              multibyte character in non-UTF-8 locales has been fixed.
    13-09-13  Eliminted extranesous output of standard error when ksh is invoked
    	  with the -v (verbose) option.
    13-09-10  A bug in finding a function defined inside a type that was defined
    	  in a namespace has been fixed.
    13-09-10  A bug in the binding of function local variables inside arithmeitc
    	  expression inside namespaces was fixed.
    13-09-10 +A -Q option was added to kill to pass integers as large as pointers.
    	  The -q option now only accepts integers as large as typeset -i.
    13-09-09  A bug in command substitution has been fixed.
    13-09-09  Qualified print format "%([no]unicode)q" added to prefer \u[...]
    	  over \w[...] and override LC_OPTIONS=unicode.
    13-09-04 +\w[hex] locale-specific code point literals have been added.
    13-09-04 +The float(f) math function was added.
    13-09-04 +The int(f) math function was fixed to return 0 for floating point
    	  numbers larger than the maximum integer.
    13-09-04  A bug in which assigning a compound indexed array a value of () did
    	  not preserve the -C attribute has been fixed.
    13-09-04  kill -q can now pass numbers as large as typeset -li and
    	  .sh.sig.value is typeset -i rather than a compound variable.
    13-09-04  kill -q yields the processor and returns 2 when siqueue fails with
    	  EAGAIN and yield.
    13-09-03  A bug in which $(( where x is a floating point variable and
    	  xxx is not one of the known extensions yields a random value has
    	  been fixed.  It now is unset which has value 0 when set -u is off.
    13-09-03  A bug in overriding discipline functions for types defined in
    	  namespaces has been fixed.
    13-09-03  A bug which on some systems caused a core dump for large <<< here
    	  documents has been fixed.
    13-08-27 +enum constants can have .DIG, .MAX, or .MIN sub-variables.
    13-08-26 +Floating variables can be following by DIG, MAX, MIN, EPSILON,
    	  INT_MAX, INT_MIN, or MAX_10_EXP to give values correspong to
     	  the floating type of the variable.
    13-08-26 +Integer variables can be followed by .DIG, .MAX, or .MIN in
    	  arithmetic expression so give the values corresponding to that
    	  integer type.
    13-08-26 +Added 12 math constants such as E, PI, and SQRT2.
    13-08-23  Documented __ in sh.1 man page.
    13-08-22  Fixed __ to work in nested types.
    13-08-22  A bug in which print -v .sh.stats did not work within a namespace
    	  has been fixed.
    13-08-21  enumeration subvariables introduce in 13-07-30 can now be used
    	  with enum arrays and reference to enum array elements.
    13-08-20  A bug in arithemtic with variables used in an arithmetic expression
    	  inside a namespace has been fixed.
    13-08-19  A bug in which compound variables created in a namespace did not
    	  display correctly outside of the namespace has been fixed.
    13-08-19 +The variable .sh.pwdfd which expands to the file descriptor number
    	  corresponding to $PWD has been added.
    13-08-15  A bug in which copying the .sh.stats and .sh.siginfo variables
    	  gave values that could vary has been fixed.
    13-08-14  A bug in which unknow starup options, for example ksh --foobarbla
    	  would cause the shell to core dump has been fied.
    13-08-14  A bug in which {n}<&0 did not work after <<< string hs been fixed.
    13-08-12  A bug in which background jobs where not removed after the
    	  user was notified about completion has been fixed.
    13-08-11  A bug in which subscripts were evaluated twice for subscripts
    	  on the left hand side of assignments make by typeset has been fixed.
    13-08-11 +namespace was modified so that namespace names can be a compound
    	  variable rather than just an identifier and namespace are no
    	  longer nested.
    13-08-07  typeset -p (and print -v) now display the short attribute for
    	  typeset -sF and typeset -sE.
    13-08-06 +You can now use the redirection <& {n} whic is the same as <& $n.
    13-08-05  Fix a bug in which read -C could reference uninitialized memory.
    13-07-31  Fixed a bug with index arrays of short integer types in arrays
    	  inside types that could lead to a core dump.
    13-07-30  Fixed a bug with short integer arithemtic that could lead to a
    	  core dump.
    13-07-30 +An experimental change to each enumeration variable have subvariables
    	  for each enumeration constant.  ${} will expand to the
    	  numerical value of the enumeration name associatied with enum.
    13-07-30 +An experimental change to allow ${foo.__} to expand to the parent
    	  node for foo, or foo if foo doesn't have a parent.  There are now
    	  regression tests for .__ yet.
    13-07-26  Fixed a memory leak bug with `...`.
    13-07-24  A bug in which += assignments did not work for environment variables
    	  specified for non-special builtin commands has been fixed.
    13-07-24  The _ variable is new set as a reference to the type inside
    	  discipline functions for non-type variables in the type.
    13-07-23  A bug in the arithmetic assignment to an enum using a ?: operator
    	  with the nounset option has been fixed.
    13-07-22  The .sh.sig variable has been modified to treat .sh.value as a
    	  compound variable containing int and ptr.
    13-07-18  Assignments of the type name=(...) to array variables now preserve
    	  the array type and the variable type if any.
    13-07-18  If a PATH ends in ., and you are in the current directory and this
    	  directory is in FPATH, ksh now treats this a a function directory.
    13-07-17  ${!.sh.sig@]} now expands to all the .sh.sig. variables.
    13-07-17  A bug in which a fatal error such as invalid shift in a function
    	  defined with f() did not terminate the script when the f was
    	  invoked with a redirection has been fixed.
    13-07-17  A timing bug in $(...) which could cause the return value to be
    	  127 has been fixed.
    13-07-16  A bug in which references to compound variables inside a namespace
    	  was not working has been fixed.
    13-07-15  Running a function f that assigns to .sh.value no longer outputs the
    	  value of .sh.value when invoked via ${ f;}.
    13-07-15  Fixed a bug in which bool -A a=( [2]=true [4]=false ) caused the
    	  number of elements to show up as 4 rather than 2.
    13-07-11  Eliminated two references to uninitialized memory.
    13-07-10  A memory leak with using aliases has been fixed.
    13-07-09  A memory leak with autoload functions has been fixed.
    13-07-08  When using kill -q to send a signal, a CONT signal is not sent to
    	  wake the process if it is sleeping after sending the signal.
    13-07-08  Fixed a namespace bug in which print -v did not work for printing
    	  a compound array of a namespace variable.
    13-07-02  A bug in which trap '' TTOU could cause the shell to go into an
    	  infinite loop has been fixed.
    13-06-25  ksh93 uses the new ast system call intercepts to restart interrupted
    13-06-21  A -f nn option has been added to cd to change to a directory
    	  relative to a file descriptor of an open directory.  cd -f nn
    	  is equivalent to cd ~{nn}.
    13-06-20  A bug in which  ${IFS+abc} did not expand to abc when IFS is
    	  unset has been fixed.
    13-06-18  A bug on some systems with arithmentic expressions containing
    	  x**y has been fixed.
    13-06-13  Changes made for reliable delivery of queued signals.
    13-06-12  The character '@' in an associative array subscript is not quoted
    	  when displayed on output so that it will be a valid subscript on
    13-06-06  In accordance with the standard set -u now causes failures for
    	  unset positional parameres.
    13-06-05  Several changes to handle queued signals have been made.
    13-06-04  A bug with the arithmetic expression $((2**63 / -1)) on some
    	  systems has been fixed.
    13-05-31  Fix a bug in job completion when trying to make a selection after
    	  hitting <TAB> on an empty directory.
    13-05-30  A bug with set -m in a script wich could cause the script to hang
    	  has been fixed.
    13-05-30  Two bugs related to the processing of a nameref foo=$1 where $1
    	  is of the form arr[subscript] where subscript is an arithmetic
    	  expression has been fixed.
    13-05-29  ksh93 now intercepts the LC_TIME variable.
    13-05-29  A bug in which builtin -d date did not delete the date builtin has
    	  been fixed.
    13-05-29  namespace commands are no longer allowed inside function definitions
    	  and now generate a syntax error.
    13-05-28  Fixed bugs in typeset -c for copying attributes for simple variables.
    13-05-28  Fixed two bug for typeset -c and typeset -m for variable .sh.match.
    13-05-28 +Added -j option to print (and %(json)B format specifier to printf)
    	  which will print a compound shell variable in JSON format.  This is
    	  expermental.  Let me know if I got things wrong.
    13-05-23  A bug for enumeration types in which unset elements of an array
    	  expanded to the default enum name rather than to the empty string
    	  has been fixed
    13-05-23  A bug in which set -u did not fail for unset array elements of
    	  an array of short ints (typeset -is) has been fixed.
    13-05-22 +Added -c option to typeset which is similar to typeset -m except
    	  that the variable is copied rather than moved.  This is experimental
    	  and there are known bugs.  If it can't be made reliable it will
    	  not be added.
    13-05-20  Fixed a bug in which running script < file, where script did
    	  reads generated output the the terminal in error has been fixed.
    13-05-20  Updated documentation for typeset -s and typeset -l for integer
    	  and floating point types.
    13-05-17  A bug in the ${b[i}} when b is an enumeration variable whose
    	  value corresponds to the 0'th element.
    13-05-17  A bug in which set -o nounset caused ((boold=true)) to fail has
    	  been fixed.
    13-05-16  A bug in which a nameref to a compound sub-variable that does
    	  not exit failed when called from a function with static variables
    	  has been fixed.
    13-05-15 +The set -s -Aarray sort option added on 13-04-25 now works for
    	  sorting an indexed array of type instances.
    13-05-15  A bug in which ${!foo*} did not contain foo when $foo exists
    	  has been fixed.
    13-05-15  typeset -m foo=bar now generates an error when set -o nounset is
    	  on and variable bar is unset.
    13-05-14  A bug in which bar was not empty after typeset -m foo=bar has
    	  been fixed.
    13-05-13  A bug in which the exit trap could be executed twice with ${...;}
    	  has been fixed.
    13-05-10  Added more documentation with enum --man.
    13-05-10  With print -v for with nested compound variables, the output contains
    	  typeset -C for sub-variabes that are compound assignments.
    13-05-10  Reduced the number of warning when running gcc with -Wshadow option.
    13-05-09  Updated man page to mention _Bool enumeration and bool preset alias.
    13-05-08  Modified the code to that CHLD traps are delayed when a trap from
    	  another signal is being modified.
    13-05-08  Added a ksh -n options that suggests that x=$((expr)) be replaced by
    13-05-07  A bug in which typeset -p and print -v did not display elements that
    	  were compound variables without any sub-variables has been fixed.
    13-05-06  Fixed a bug with typeset -m when varaible is a name reference to
    	  a local variable from a calling function.
    13-05-06  A bug in which shcomp failed to compile some scrips that defined
    	  enums has been fixed.
    13-05-03  Fixed a bug with typeset -m a[i]=a[j] when a is a numeric array type.
    13-05-02  Fixed another typeset -m but form moving types containing compound
    13-05-02  Fixed another typeset -m bug for moving a compound variable contained
    	  in a type variable.
    13-05-01  Fixed two bugs additional bugs related to typeset -m for compound
    13-05-01 +Increased to maximum number of enumeration elements from 32K to
    13-04-30  A bug in which typeset -m did not preserve attributes has been fixed.
    13-04-30  A bug with with read -C var when var contained index array subscripts
    	  that caused side effects on evaluation has been fixed.
    13-04-29  A bug in defining and using multi-dimensional types and enums has
    	  been fixed.
    13-04-25  A bug which caused iffe to fail on some systems has been fixed.
    13-04-25 +The -K option has been added to set to sort indexed arrays of
    	  compound elements based on a list of keys.
    13-04-18  Fixed a bug with process substitution on systems that don't support
    13-04-18  Added serialization to processing of CHLD traps.
    13-04-17  A bug in arithmetic in which x[i].foo in a loop would not be
    	  re-evalued when subscript i changed value has been fixed.
    13-04-15  Fixed a couple of problems with regression tests.
    13-04-15  ksh now waits for background jobs started in functions contained
    	  in command substitution.
    13-04-11  Made code changes based on warning from the "clang" tool.
    13-04-11  Fixed two core dumps on some architectures related to uninitialzed
    13-04-10  ksh now waits for background jobs started in $() and ${...;} to
    	  complete as it did in ksh93u+.
    13-04-10  A bug in which x=\\x; case x in $x) echo yes;; *) echo no; esac
    	  printed yes has been fixed.  It should print no.
    13-04-08 +ksh now sets and .sh.sig.status for CHLD traps.  The
    	  .sh.sig.status can be one of exited, killed, dumped, stopped or
    13-04-08 +The CHLD trap is now triggered with STOP and CONT signals.
    13-04-05  A bug in which a command with one or more >(...) process substitution
    	  arguments did not wait for all >(...) to complete before running the
    	  next command has been fixed.
    13-04-04  A bug in which monitor mode was not working for scripts has been
    13-04-04  A bug in which an unset variable error with set -u on did not
    	  terminate the current script has been fixed.
    13-04-03  The shell now uses mmap() on systems that suppport it for
    	  command substitution.
    13-04-03 +Functions that are used in brace group command substitution ${ ... }
    	  can assign the result to .sh.value instead of writing to standard
    	  out with the same result, but faster.
    13-04-02  A bug in the handling of string files in a type that is a member
    	  of another type has been fixed/
    13-04-02  A bug in cd ../.foobar, where ../.foobar exists, has been fixed.
    13-03-29  A bug in which read -r -d delim ignored -r has been fixed.
    13-03-28  A bug in which the KEYBD trap did not work correctly lines that
    	  are continued  has been fixed.
    13-03-28  read with line delimiter 0 and field separator \n did not split on
    	  '\n' and has been fixed.
    13-03-28  A bug in which "typeset -a" could cause a core dump has been fixed.
    13-03-27 +The variable .sh.sig containing siginfo information is no set during
    	  a SIGCHLD trap.
    13-03-26  A bug resulting from one of the memory leak bugs fixed on 13-03-15
    	  has been fixed.
    13-03-22  A bug in displaying indexed arrays of types in a compound variable
    13-03-22  A bug in which typeset -T did not display subtype names correctly
    	  do to a caching problem has been fixed.
    13-03-21  A bug in which ${...PATH=...} command substitution did not preserve
    	  path bindings has been fixed.
    13-03-20  The exit value from the expansion of the PS1 prompt no longer affects
    	  the exit status of the shell.
    13-03-20  A fork bomb which could occur when a job was stopped in a shell with
    	  monitor mode, but not a job control shell has been fixed.
    13-03-19  A new patch to replace the patch removed on 13-03-06 for non utf8
    	  locales in command substitution has been added.
    13-03-17  A bug with print -v for an array of integer or floats has been fixed.
    13-03-15  Two memory leaks related to arrays created in functions has been
    13-03-14  A bug in reading an instance of an indexed array variable has been
    13-03-12  Initialized a variable in sh/macro.c that had been uninitialized.
    13-03-12  Fixed a bug that could cause a core dump with associative arrays
    	  used withing types.
    13-03-12  Empty fields and empty arrays as type elements are not displayed
    	  when expanding a type instance.
    13-03-11  The trap command now blocks signals that have traps until the
    	  trap command completes.
    13-03-11  Signals that have traps that occur while processing a trap are
    	  deferred until the trap command completes.
    13-03-10  A bug in the expansion of a compound variable containing nested
              types that contains arrays has been fixed.
    13-03-06  The patch made on 13-02-07 to handle non utf8 locales has been
    	  removed (for now) because it broke a utf8 locale script.
    13-03-05  A bug in which ${!var*} to not expand correctly when it was at
    	  the beginning of a script for after a call to enum has been fixed.
    13-03-05  A bug in the expansion of a compound variable containing nested
    	  types has been fixed.
    13-03-04  A bug in the for loop optimizer which could falsely treat typeset -b
    	  as loop invariants  has been fixed.
    13-02-27  The exit value from expanding the PS[1-4] prompts no longer affect
    	  the exit status of the shell when you exit with EOF.
    13-02-22  'kill %' caused the shell to core dump.  This has been fixed.
    13-02-21  The 12-01-16 bug fix prevented .sh.match from being used in the
    	  replacement string.  The previous code was restored and a different
    	  fix which prevented .sh.match from being computed for nested
    	  replacement has been used instead.
    13-02-20  Fixed two bugs related to reading compound variables with
    	  read -C that contain sub-elemects that are type variables.
    13-02-19  Fixed a bug introduced on 13-01-17 when adding the feature of
    	  allowing math functions to pass arrays as arguments.
    13-02-13  A bug in which hitting interrupt with reading from a terminal
    	  sent the interrupt to the current process rather than the current
    	  process group has been fixed.
    13-02-13  A bug in which and x[0].name were not treated the same
    13-02-08 +The -p option was added to enum to display the values that are
    	  valid for the enum.
    13-02-07 +A preset alias named bool which is an alias for an enum
    	  named _Bool which has values true and false has been added.
    13-02-07  A bug in the processing of multibyte characters in non utf8 locales
    	  in command substitution has been fixed.
    13-02-05  Fixed emacs tab completion bug in which typing <tab><tab> in a
    	  directory with one element that contained an element of one entry
    	  did not expand to both names.
    13-02-24  Increased the maximum level of recursion for evaluating variables
    	  inside arithmetic expressions from 9 to 1024.
    13-02-24  Added exp10 math function.
    13-01-31  A bug in integer division which occured for numbers between INT_MAX
    	  and UINT_MAX has been fixed.
    13-01-31  A bug in the parser that did not allow for redirections with
    	  ((...)) arithmetic statements has been fixed.
    13-01-17 +User define math functions introduced on 10-03-24 now allow passing
    	  arrays as arguments.
    13-01-10 +ksh now treats ESC-O-letter the same as ESC-[-letter in vi and emacs
    	  edit modes.
    12-12-10  A bug with enumerations types when declaring an indexed array of
    	  an enumeration type has been fixed.
    12-11-30  A bug in which whence or type on a preset alias did not output the
    	  value has been fixed.
    12-11-28  Assigning an element of an indexed array as an empty array now
    	  correctly displays this with typeset -p.
    12-11-28  typeset -p of an array variable whose 0 element was an array variable
    	  with no elements did not output correctly and has been fixed.
    12-11-20  Numerous changes related to new algorithm for shell redirections
    	  using the spawnvex() library.  Not yet used in all cases.
    12-11-14  A bug with caused by using spawnvex*() functions for redirections
    	  of simple commands with here-documents has been fixed.
    12-11-12  A memory leak which occured while doing path search has been fixed.
    12-10-24  A bug which caused the shell to report a syntax error when a
    	  command substitution appeared on the line that started a here
    	  document has been fixed.
    12-10-23  The shell now uses the new spawnvex*() functions for redirections
    	  of simple command that are not builtin.
    12-10-21  Here documents with $() and ${ } use larger buffers.
    12-10-21  Builtins now use mmap() for files that are opened for reading.
    12-10-18  A bug in which preceding a special builtin with command did not
    	  prevent assignments from remaining has been fixed.
    12-10-17  A bug in the self documentation for types which causes the field
    	  descriptors to be off by 1 has been fixed.
    12-10-17  An array bug which caused a regression test to fail has been fixed.
    12-10-16  A bug in the exit status for command substitution caused by no longer
    	  using pipes has been fixed.
    12-10-16  A bug in the self documentation for types with discipline functions
    	  led to an extra line containing -. and has been fixed.
    12-10-16  Fixed a bug with typeset -p that could cause a core dump.
    12-10-15  Fixed a bug in which unsigned long was used when unsigned long long
    	  was needed.
    12-10-15  Fixed a bug in in which could cause long double data to not
    	  aligned correctly in types.
    12-10-09  A bug in which nested types were not able to invoke a discipline
    	  method defined by an embedded type has been fixed.
    12-10-09 +read -d '' now reads up to a NUL byte.
    12-10-04  libcmd builtins are statically linked into ksh93 and by default are
    	  bound to the path /opt/ast/bin whether this path exists or not.
    	  Changing the .sh.op_astbin variable changes the binding.
    12-10-02  Fixed a bug that could cause a core dump when unsetting type
    12-10-02  Command substitution for using $() no longer uses a pipe and
    	  waits for the process to complete before finishing.
    12-10-01  Updated man page for [[ s1 < s2 ]] and [[ s1 > s2 ]] to clearify
    	  that the string comparisons are based on the locale.
    12-10-01 +Added the variable SH_OPTIONS which consitst of name=value pairs.
    	  For defined options it assigned value to the variable .sh.op_name.
    12-10-02 +Add the variable .sh.op_astbin to define the directory where several
    	  shell builtins will be bound.
    12-09-28  Fixed a bug that caused core dumps when unsetting an array of types
    	  on some systems.
    12-09-28  Fixed a LINENO bug that causes function line numbers to be wrong on
    	  some 32 bit systems.
    12-09-24  The LINENO variable can now handle scripts with more than 2147483647
    12-09-24  The number of elements for an indexed array for a 64 bit architecture
    	  has been increased to 2147483647.
    12-09-21  A bug in which the output of a two dimensional sparse indexed array
    	  would cause the second subscript be treated as an associative
    	  array when read back in has been fixed. Elements that are sparse
    	  indexed arrays now are prefixed type "typeset -a".
    12-09-19  A bug in which running more that 32767 subshell could cause the
    	  shell to core dump has been fixed.
    12-09-19  A bug in which the freeing of a compound variable with types and
    	  arrays when leaving a function has been fixed.
    12-09-18  A bug in which compound -a for a type element did not display the
    	  -C attribute has been fixed.
    12-09-14  >; file now fails if the user does not have write permission on file.
    12-09-13  Fixed a compilation problem with Solaris which does not have
    12-09-12  Moved from using libast spawnveg() to new libast spawnvex().
    12-09-12  Changed the default build to disable SHOPT_FIXEDARRAY.
    12-09-11  Fixed two bugs related to name references to compound array
    12-09-10 +Added ~{fd} expansion where fd is the number of an open file or
    	  a variable whose value is the number of an open file.
    12-09-10  Fixed a bug in typeset -m the .sh.match is being renamed.
    12-09-07  Fixed a bug in .sh.match code that coud cause the shell to quitely
    12-09-07  Modified the code to use bool instead of int in several places.
    12-09-05  Modified pipe and socketpair creating to create file descriptors
    	  with close-on-exec set.
    12-08-31  A bug in vi mode in which ~/tst/make/users/hv<TAB> did not expand
    	  correctly has been fixed.
    12-08-31  A bug that could cause a core dump after typeset -m has
    	  been fixed.
    12-08-30  For an associative array A, $((A[sub])) no longer cause subscript sub
    	  to be created.
    12-08-29  A scoping error in setting the scope for a reference when the
    	  reference contained subscripts containing a variable from a different
    	  scope has been fixed.
    12-08-27  A number of changes to open files with close-on-exec has been made.
    12-08-24  A bug in which unsetting instance variables in a type could effect
    	  the value of that instance in other type instances has been fixed.
    12-08-23  A bug in which name references to compound variable array elements
    	  did not work correctly has been fixed.
    12-08-22  .sh.match now handles subpatterns that had no matches with
    	  ${var//pattern} correctly.
    12-08-21  A bug in setting .sh.match after ${var//pattern/string} when string
    	  is empty has been fixed.
    12-08-21  A bug in setting .sh.match after [[ string == pattern ]] has been
    12-08-21  The poll builtin from Roland Mainz has been added with the option
    12-08-21  A bug in which read -S did not handle "" inside double quotes has
    	  been fixed.
    12-08-21  A bug in which a compound variable defined in a type could not
    	  have elements added to it has been fixed.
    12-08-20  A bug in which creating a two dimemsional associative array could
    	  add an extra 0 element to the second subscript has been fixed.
    12-08-20  typeset -H foo no longer unsets foo when foo has been exported to
    	  the shell.
    12-08-20  A file descriptor for the current directory is now made available
    	  to built-ins in the context pointer.
    12-08-10  Rewrote .sh.match expansions fixing several bugs and improving
    12-08-09  A bug in which assignments following a process substitution argument
    	  were treated as assignments rather than arguments has been fixed.
    12-08-07  Fixed a bug in which discipline functions define in a type from
    	  within a namespace where not being run in the namespace.
    12-08-07  .sh.match no longer gets set for patterns in PS4 during set -x.
    12-07-25  Each shell variable now contains a pointer to the shell pointer.
    12-07-20  <shell.h> interface updated to pass the shell interpreter pointer
    	  to most functions.
    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-16  The code was modified to do automatic retry for several system calls
    	  the fail with errno set to EINTR.
    12-07-12 +Added -q option was added to kill to send queued signals on systems
    	  that support sigqueue().
    12-07-12 +Added -p option to builtin to output builtins in a format that can
    	  be used to reinput.
    12-07-05  Eliminated compile options and code for ECHOPRINT and OLDTERMIO.
    12-07-05  Eliminated compile options BGX, ESH, HISTEXPAND, TYPEDEF and VSH.
    	  They are the default.
    12-07-02 +The -a option was added to trap to cause the current setting to be
    	  appended to the new trap setting rather than replacing it.
    	  the input line has been fixed.
    	  not returned by a function to indicate a signal exit has been fixed.
    12-06-28  --- Release ksh93u+ ---
    12-06-06  A bug in which exporting left or right justified fields could loose
    12-05-31  Fix 64 bit big-endian arithmetic bug that mishandled nan and inf.
    12-05-25  A command substitution containing a here-document that itself contains
    	  interrupt and did not terminate when the delimiter was entered
    12-04-06  Modified namespaces to hand variables FPATH, PATH, and OPTIND that
    12-02-08  A bug in job control in which the foreground process group was not
    	  for some other variables, for example, HISTFILE has been fixed.
    11-12-13  In vi edit mode a literal <TAB> can now be entered by preceding it
    	  with a backslash.
    	  command substitution caused standard error to be lost has been fixed.
    11-06-07 +A number of changes to support the still undocumented namespace option
    11-03-03  A bug in which the width of the prompt was calculated incorrectly
    	  command substitution is not completed before the closing ), for
    	  occurred inside command substitution has been fixed.
    10-11-11  A bug in typeset -m when the variables were compound array instances
    RELEASE notes for src/cmd/kshlib/dss/RELEASE
    12-08-24  Makefile: shell:20120609
    08-06-09 sync with ksh93t api
    RELEASE notes for src/cmd/kshlib/setid/RELEASE
    13-07-31 first release
    RELEASE notes for src/cmd/mailx/RELEASE
    13-10-01 mailx: add autosign to auto sign new messages
    13-08-11 head.c: add header charset conversion buffer boundary checks
    13-08-11 add -o noconvertheaders to disable header charset conversion
    12-09-26 head.c handle =?UTF-8?[BQ]?...?=; other charsets later
    RELEASE notes for src/cmd/mam/RELEASE
    13-08-11 strcopy() => stpcpy()
    RELEASE notes for src/cmd/msggen/RELEASE
    13-04-01 split src/cmd/msgcc into { src/cmd/msggen src/cmd/msgcc }
    10-10-20 add raw type (like str) for ksh -D style strings
    10-06-01 sync with ast api 20100601
    06-11-15 date -f x => date +x for ast-base portability
    06-10-11 add sfstruse() error checks
    02-03-11 msgcc: fix merge replacement threshhold logic
    	 msggen: convert { \a \b \f \n \r \v } back to C escapes
    	 msgcpp: set pp:modern
    02-02-14 msggen: add -f to list printf format signatures
    01-10-10 msgcc: allow some email forms to pass
    01-06-10 msgcpp: add proper escapes to OMIT pattern
    01-05-29 msgcc: add similar unused message replacement, -M-similar
    01-04-22 msgcc,msggen,msgget: use mcindex()
    01-01-31 ignore ls generation errors
    00-04-20 first release
    RELEASE notes for src/cmd/nmake/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-07-17 use O_CLOEXEC
    13-05-28 fix MAM CC.SUFFIX.OBJECT initialization
    13-05-07 main.c: drop Vmstat_t.m_busy Vmstat_t.m_free
    13-05-06 add :COBWATCH:
    13-04-11 add :COBTRACE:
    13-04-05 add .SOURCE.h defaults ala .SOURCE.a
    13-03-20 add CC.NM.NMFLAGS for stupid stupid stupid aix -Xany
    13-03-19 incorporate optional
    13-02-20 scan.c: makerule() from tmp buffer in case of shorter canon()
    13-02-14 command.c: .FOREGROUND => all MAKING prereqs in parent chain done (e.g. via coshell service)
    12-12-01 fix MAMROOT logic when PWD outside of viewpath
    12-11-09 option.c: omit delayed/unknown options from oldmake punt
    12-09-18 set --novirtual if VPATH contains less than 2 dirs
    RELEASE notes for src/cmd/pax/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-06-24 pax.h,pax.c,file.c: change chmod members to modekeep and restoremode
    12-11-08 file.c: fix lchmod() logic for systems that implement only ENOSYS
    12-10-17 copy.c: fix SEEK_HOLE loop that set last file byte to 0
    12-09-28 pax.c,options.c: document t<compress> => tar:<compress>
    RELEASE notes for src/cmd/re/RELEASE
    13-04-03 grep: move to lib/libcmd and cmd/builtin
    13-01-24 ed.c: splice => splicef to avoid gnu splice(2)
    RELEASE notes for src/cmd/sort/RELEASE
    13-09-19 main.c: convert to mb*(Mbstate_t) api
    13-05-17 sfopen.c: disable SFOPEN_INTERCEPT experiment -- better handled by plugins
    13-02-14 main.c: change "-o file" to not use sfstdout unless /dev/stdout (for user discipline functions)
    13-02-13 main.c: add { RS_MORE RS_LAST } logic for rsprocess()
    RELEASE notes for src/cmd/sortlib/sync/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-02-13 sync.c: set RS_MORE for (*readexit)()
    13-02-11 ss.c: allow SUM FIELDS=(NONE) for SUM FIELDS=NONE
    RELEASE notes for src/cmd/ss/RELEASE
    13-03-21 ssd.c: work around stupid stupid stupid solaris 11 - hey guys, don't define _PATH_UTMP and it won't get used
    RELEASE notes for src/cmd/std/RELEASE
    13-09-26 split.c: fix opetget() docs
    13-09-19 ls.c: convert to mb*(Mbstate_t) api
    13-08-07 banner.c: (we still have banner?) drop bosu 3rd arg to main() -- thanks clang
    13-07-17 ls.c: fix -l for empty symlink
    12-11-07 ls.c: move --testsize logic after -H hackery
    12-10-01 iconv.c: move src/lib/libcmd
    RELEASE notes for src/cmd/tests/RELEASE
    13-05-09 { aso cdt vmalloc } kpv sync
    RELEASE notes for src/cmd/tksh/RELEASE
    12-08-24 Makefile: shell:20120101
    RELEASE notes for src/cmd/tw/RELEASE
    13-08-26 expr.c: fix null pointer deref in matchval() -- thanks Philippe
    13-08-02 find: add { -show -delete } for gnu/sol compatibility
    13-04-03 xargs: move to lib/libcmd and cmd/builtin
    RELEASE notes for src/cmd/vczip/RELEASE
    13-05-09 kpv sync
    RELEASE notes for src/lib/libardir/RELEASE
    11-08-31 ar-omf.c: fix FILENAME #pragma prototyped incompatibility
    RELEASE notes for src/lib/libast/RELEASE
    13-09-27 path/pathcanon.c: fix buffer clobber bug between pathdev() and fgetcwd()
    13-09-27 path/pathopen.c: handle easy O_XATTR case for /dev/fd open() semantics
    13-09-25 include/ast_std.h,comp/setlocale.c: AST_LC_unicode => AST_LC_unicodeliterals, LC_OPTIONS=...unicodeliterals...
    13-09-25 include/ast_std.h,comp/setlocale.c: AST_LC_native LC_OPTIONS=...native... to bypass ast unicode iswalpha/wcwidth tables
    13-09-25 comp/eaccess.c: resolve <ast_map.h> vs <ast_intercept.h> conflict -- _ast_eaccess wins
    13-09-18 include/ast_std.h,ast.h: api>=20130913 add Mbstate_t and { mb*() wc*() } macros with Mbstate_t* last arg
    13-09-18 path/pathcanon.c: handle more flags for /dev/file/flags@...@path and do flag name lookup from table
    13-09-16 include/ast.h: add PATH_EXCEPT_LAST for readlink(1) --canonicalize
    13-09-16 path/pathcanon.c: handle PATH_EXCEPT_LAST
    13-09-12 misc/fgetcwd.c: fix stat corruption bug on systems without fdopendir()
    13-09-12 path/pathcanon.c: fix bug that added extra / when fgetcwd() returned /
    13-09-09 comp/setlocale.c,port/codeset.c: consistent handling of US-ASCII + conformance(0,0) across all os's
    13-09-09 string/utf8towc.c,string/wctoutf8.c: add { utf8toutf32() utf8towc() wctoutf8() }
    13-09-07 include/ast_std.c,comp/setlocale.c,string/stresc.c: add ast.byte_max for single byte locales
    13-09-06 comp/iconv.c: add sfclrerr() to iconv_move() if all input chars not consumed
    13-09-06 port/codeset.h,port/codeset.c: internal api for retrieving locale codeset names
    13-09-04 string/chresc.c,stresc.c: add \w[hex] support -- thanks Roland
    13-09-04 string/utf32stowcs.c,string/wcstoutf32s.c: add -- thanks Roland
    13-09-04 sfio/sfsetbuf.c: fix bug where SF_GETR mode was not cleared causing subsequent memory corruption
    13-09-04 vmalloc/vmopen.c,vmdcsystem.c,vmstat.c: temporarily set vm->meth.meth=0 to disable vmstat() during init
    13-09-04 port/intercept.c: include <ast_standards.h> to ensure fdopendir() prototype if _lib_fdopendir
    13-09-04 include/ast_std.h,comp/setlocale.c: add LC_OPTIONS=unicode and AST_LC_unicode
    13-09-01 path/pathcanon.c: O_* flags dev path: /dev/file/flags@flag[,flag...]@[/]path
    13-09-01 path/pathcanon.c: limit NAMED_XATTR paths to /dev/file/xattr@canonical-path//@//[remainder]
    13-08-29 cdt/dtstrhash.c: change sign-bit hitting fnv constants to hex to silence unsigned warnings
    13-08-26 features/float: fix (FLT|DBL|LDBL)_*_(MIN|MAX) algorithm to not use exact powers of 2!!
    13-08-24 include/fts.h,misc/fts.c: make preparations for FTS.fts_dirfd, fdopendir(), fgetcwd(), openat(), fstatat()
    13-08-23 path/pathcanon.c: add PATH_DROP_LEAD_SLASH2 and PATH_DROP_TAIL_SLASH to unify ast c14n
    13-08-23 features/float: add (FLT|DBL|LDBL)_EPSILON logic
    13-08-22 features/lib,include/ast_std.h,comp/qsort.c,comp/qsort_r.c: add { qsort qsort_r } from Bentley/McIlroy code
    13-08-22 misc/getcwd.c: now a wrapper call to fgetcwd(AT_FDCWD)
    13-08-21 regex/regdecomp.c: fix REG_SHELL decompilation bug
    13-08-21 regex/regcomp.c: fix REG_SHELL ~(A)(...) parse bug that didn't treat second ')' as closing paren
    13-08-20 misc/fgetcwd.c: add, inspired by olga
    13-08-17 path/pathcanon.c: /dev/file/flag[,flag...]:[/]path for relative and absolute paths
    13-08-17 port/intercept.c: move pathdev() intercepts to ast_*at() and make ast_*[!at]() call ast_*at() counterpart
    13-08-15 features/lib,features/dirent,port/intercept.c: add ast_opendir() and fdopendir() tests
    13-08-14 features/atdev: additional support for comp/at.c emulation on frankenstein systems
    13-08-11 features/lib: add `lib fdatasync,fssync,sync' tests
    13-08-11 features/fcntl.c: another round for { O_DIRECTORY O_SEARCH }, stabilize ast extension values
    13-08-11 port/intercept.c: add RATIFY() to check for paths with embeded directory fd refs
    13-08-11 convert strcopy() usage to stpcpy(); strncopy() will not change
    13-08-08 path/pathcanon.c: add PATH_ABSOLUTE to canonicalize relative path to absolute (rooted) path
    13-08-08 comp/resolvepath.c: now a veneer to pathdev+PATH_ABSOLUTE...
    13-08-08 string/stpcpy.c,string/stpncpy.c: add { stpcpy() stpncpy() } emulations
    13-08-08 include/ast.h,path/pathcanon.c: add { /dev/file@flag1,.../path /dev/file@flag1,..././path } to pathdev
    13-08-08 port/intercept.c: handle O_ASYNC anomalies in ast_openat()
    13-08-07 sfio.h,sftmp.c: add SF_TMPFILE notification for sftmp() switch from buf to file
    13-08-07 include/ast.h: add getconf("string") macro using astconf()
    13-08-07 features/fcntl.c: add more macro guards to cover diffs between iffe time and compile time
    13-08-07 features/limits.c: { _POSIX_NAME_MAX _POSIX_PATH_MAX } failsafes for systems (like darwin) that omit them
    13-08-06 tm/tvsleep.c: fix interrupted select() remaining time logic
    13-08-06 path/pathopen.c,pathdev.c: handle /dev/fd/ dir pseudo stat
    13-08-05 vmalloc/malloc.c: add VMALLOC_OPTIONS=usage => VM_usage
    13-08-01 path/pathopen.c: fix /dev/fd/<fd>/trailing-path bug that missed trailing-path
    13-07-31 features/lib: add setregid
    13-07-29 vmalloc/vmdcsystem.c: add EINTR restart checks for system getmemory
    13-07-25 add ast/sys/socket.h => ast_socket.h => ../include/sys/socket.h for intercepts
    13-07-22 pathopen.c: fix PATH_DEV logic to preserve ksh sh_open() semantics
    13-07-19 fix features/fcntl.c to keep track of highest bit in o_local
    13-07-18 incorporate roland mainz' solaris compatibility and hugepage patches
    13-07-18 include/vmalloc.h: restore Vmethod_t callout function order for backwards binary compatibility
    13-07-17 port/intercept.c: ast_openat(fd,0,...) => openat(fd,".",...)
    13-07-16 string/chresc.c: limit \xH \xHH to 2 hex digits (\u and \U handle wide chars now)
    13-06-28 intercept.c: add AST_SERIAL_always, in particular for AST_SERIAL_RESTART
    13-06-25 intercept.c: add syscall intercepts to unify { *at() restart pathopen() }
    13-06-25 pathopen.c: low level physical/logical/special path open using pathdev()
    13-06-24 pathcanon.c: add pathdev() for  { /dev/... /proc/... } parse
    13-06-19 vmbest.c: fix strict-aliasing warnings
    13-06-19 debug.h,debug.c: add debug_printf(fd,fmt,...), debug_vprintf(fd,fmt,ap), debug_snprintf(buf,siz,fmt,ap)
    13-06-18 features/lib: fix lib *64 tests to reference related headers
    13-06-18 malloc.c: add VMALLOC_OPTIONS=debug for debug trace vs verbose trace
    13-06-18 reg[nr]exec.c: fix file size < min boyer-moore match uninitialized data ref
    13-06-17 vmalloc: harden code to handle signal storm -- almost working save one workaround
    13-06-10 sfsetbuf.c: update SFIO_OPTIONS parse to model VMALLOC_OPTIONS
    13-06-10 SFIO_OPTIONS: add _Sfmaxm maxm=size 0:legacy-min-req -1:unlimited otherwise: page rounded limit
    13-06-10 sfrd.c: change map minimal requirement logic to use _Sfmaxm
    13-06-10 sfrd.c: add SFTEST_map_minimal, disabled by default for _ast_sizeof_pointer>=8
    13-06-07 vmalloc: split global initialization into lazy components
    13-06-01 vmalloc: getenv("VMALLOC_OPTIONS") is the only env control
    13-05-31 regex/regnexec.c: fix stkstd iterference by using private env->mst
    13-05-30 vmalloc/vmmaddress.c: fix leaky shmid in _vmpagesize()
    13-05-28 vmalloc/vmdebug.c: add free() delay list to avoid deadlock
    13-05-28 include/ast_errorf.h: split out for low level disc/meth libs
    13-05-24 string/strsort.c: add strsort_r() for Strcmp_context_f
    13-05-22 string/fmtbuf.c: add thread-safe logic
    13-05-21 misc/optget.c: add the D "DATA" section
    13-05-09 { aso cdt vmalloc } kpv sync
    13-05-05 include/ast.h: _AST_PROFILE_NEWOF for debugging newof() vs oldof()
    13-05-01 misc/spawnvex.c: some cc's don't like switch(intmax_t)
    13-04-18 comp/iconv.c: fix some truly rotten code in iconv_move() -- how did it work at all?
    13-04-01 misc/spawnvex.c: fix omitted SPAWN_frame case that caused EINVAL
    13-03-11 sfio/sfflsbuf.c: memcpy() => memmove() ouch
    13-03-11 path/pathfind.c: type=="" => type=0
    13-03-07 features/(dirent|lib|sys): handle opendir64 => DIR64
    13-03-07 vmalloc/vmmopen.c: disable some #include that _PACKAGE_ast already does
    13-02-14 misc/optget.c: -Wall cleanup -- thanks werner
    13-01-03 string/stropt.c: fix off-by-one comparison bug - happy new year
    12-11-15 misc/spawnvex.c: add SPAWN_frame and SPAWN_FRAME
    12-11-10 tm/tmxdate.c: handle yyyymmddThhmmss.nnnnnnnnn[-+]hhmm
    12-10-17 comp/ add PC MIN_HOLE_SIZE
    12-10-16 spawnvex.c: spawnvex_open(SPAWN_EXEC) => posix_spawn() exit ENOENT=126 ENOEXEC=127 ok
    12-10-15 hash/hashlib.h,hash/hashscan.c: fix *ancient* hashscan() bug that didn't handle hashsize() during scan
    12-10-12 misc/spawnvex.c,features/sys: spawnvex() finally working for spawn variants
    12-09-27 regex/reglib.h: fix superfluous mask in bit test macros that limited values to 256 bits (now unlimited)
    12-09-26 comp/iconv.c: fix UTF-16 <=> UCS-2 mixup
    12-09-26 string/qp.c: add { qpdecode() qpencode() }
    12-09-24 sfio: use #if _mmap_worthy instead of obsolete #ifdef MAP_TYPE
    12-09-14 tminit.c: for UTC zone with no native name use getenv("TZ")
    12-09-13 tmzone.c,tmxdate.c: handle [ZY][EW]n[ABC]? tz notation
    12-09-11 spawnvex: add generalized spawnveg() replacement
    12-07-31 cdt: sync with kpv
    12-07-31 error.h: add { Error_write_f, void* handle } for sh_exit()
    12-07-30 astsa: update to handle installation that already have { aso cdt sfio vmalloc }
    RELEASE notes for src/lib/libcmd/RELEASE
    13-09-25 shasum.c: add sha*sum variants
    13-09-25 cksum.c: handle SUM_INDICATOR per-method { '*'(binary) ' '(text) } read mode indicator
    13-09-25 cksum.c: fix --header to include "text" when --text specified
    13-09-25 cksum.c: { -T, --text && -t, --total } => { -t, --text && -T, --total } for gnu compatibility
    13-09-22 realpath.c,readlink.c: add based on ast::pathdev()
    13-09-22 sync.c: add roland's changes + --sfsync
    13-09-19 xarrrrghs.c: halfscore d's be walkin' t'plank t'day: fix run() to work for context==0
    13-09-19 head.c,tail.c: count incomplete lines too
    13-09-19 do not check for command when /bin/echo implied
    13-09-13 cat.c,cmdext.h,cmdlist.h,cut.c,join.c,od.c,paste.c,rev.c,tr.c,uniq.c,wc.c,wc.h,wclib.c: Mbstate_t update
    13-08-11 join.c: drop setlocale() call already done by optget()
    13-08-11 strcopy() => stpcpy()
    13-07-17 tr.c: finally handle ``tr -Cd "[=e=]" <<<"1e2é3"''-- how about a posix equivalence class api
    13-07-16 cp.c: limit st_size>0 logic to S_ISREG() files
    13-05-01 vmstate.c: update for new vmalloc snarf
    13-04-22 grep.c: add first draft of context.c to handle -C
    13-04-03 grep.c: fix --highlight to highlight all matches on each line
    13-04-03 grep.c: add -o, --only-matching to list matching parts, each part on a separate line
    13-02-14 Makefile: add { cmdext.h cmdlist.h } force rebuild -- must do this better
    13-02-07 grep.c: drop b_pgrep() but retain p*grep argv[0] check
    12-12-12 mktemp.c: fix doc literal [...] => [...]]
    12-11-21 wc.c,wclib.c: add --invalid-bytes, -X and fix invalid byte logic
    12-10-25 xargs.c: drop bogus "out of space" diagnostic for "command not found"
    12-10-24 tr.c: move from src/cmd/builtin
    12-10-24 grep.c: change -S,--strict to -p.--strict|lenient, add -K,--ksh-regexp -S,--sh-regexp
    12-10-19 od.c: move from src/cmd/builtin
    12-10-15 iconv.c: use sh_run() for /usr/bin/iconv -l
    12-10-03 cmdlist.h: _AST_VERSION>=20121001 => CMDLIST(command,"directory")
    12-10-03 grep.c,xargs.c: move from src/cmd/kshlib/cmdtst
    12-10-03 iconv.c: move from src/cmd/std
    12-09-27 tail.c: fix bug that exited tail -f on tvsleep() error (who cares if it returned sooner)
    RELEASE notes for src/lib/libcodex/RELEASE
    13-08-08 codex.c: handle <method>.WINDOW=NNN^<method>...
    13-08-06 code-vcodex.c: do not encode more than a window at a time!
    13-07-30 codexlist.c: work around installations with obsolete vcodex plugin
    13-05-24 code-vcodex.c: add to unify codex<=>vcodex
    RELEASE notes for src/lib/libcoshell/RELEASE
    13-07-24 coopen.c: close child side of msgfp in parent (stops hung caller on shell failure)
    12-12-01 coexec.c,cowait.c: fix service fd bugs
    RELEASE notes for src/lib/libcs/RELEASE
    13-08-07 csopen.c: NGROUPS_MAX => getconf("NGROUPS_MAX")
    12-08-21 msg.h: add MSG_openat
    RELEASE notes for src/lib/libdss/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-04-08 cxopen.c: fix cxmembers() bug that referenced data.string instead of (dumped on be 32 bit)
    13-04-08 cxopen.c: fix cxcast() ref to use ref data instead of original record!
    13-03-10 dssopen.c: move default dss suffix from dssfind() to loadtags()
    12-09-04 cxcomp.c: type identifiers only in non-compound var constructs
    12-08-15 cx.h,cxopen.c: add cxmembers() default externalf for struct types
    12-08-11 cxcomp.c: add logical cast for naked non-numeric variable expression
    12-08-01 dssprintf.c: change --all to only list fields with non-default values
    RELEASE notes for src/lib/libexpr/RELEASE
    12-09-16 exeval.c: one more scanf("%[... fix
    RELEASE notes for src/lib/libjcl/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-06-27 path.c,find.c: add ${N:s%old%new%:...} edit expressions to prefix file
    13-03-14 run.c: move --subtmp rm -rf to after the last step
    13-03-04 jcl.h,run.c,uniq.c: add { JCL_LISTDD JCL_LISTPARMS }
    13-01-15 open.c,run.c: use main scope name for tmp files
    12-12-04 add JCL_SUBTMP
    12-11-30 uniq.c: add item labels when more than 1 item type
    RELEASE notes for src/lib/libpp/RELEASE
    13-08-11 strcopy() => stpcpy()
    13-08-11 ppexpr.c,ppop.c: add clang _has_include => #exists, _has_include_next => #exists_next
    RELEASE notes for src/lib/librecsort/RELEASE
    13-02-13 recsort.h: add { RS_MORE RS_LAST } for RS_READ event
    13-02-13 rsprocess.c: add RS_READ event RS_LAST logic
    RELEASE notes for src/lib/libsum/RELEASE
    13-09-25 sum.h,sumlib.c: add Sum_t.flags and SUM_INDICATOR for gnu { '*'(binary) ' '(text) } read mode indicator
    RELEASE notes for src/lib/libtksh/RELEASE
    12-08-24  Makefile: shell:20120101
    RELEASE notes for src/lib/libvcodex/RELEASE
    13-09-25 Vclz4/vclz4.c: add _PACKAGE_ast headers
    13-08-07 vcodex.h,vcsfxsort.c: ssize_t (64 bit) => Vcinx_t (32 bit) -- noticable affect on memory footprint
    13-06-04 add vcgetsuff() to return suffix given method
    13-05-29 add Vcodex_t.errorf -- not suitable for discipline level
    13-05-27 add vcxml.c
    13-05-23 api change: vcgetfname(char* path, char** meth, char** suff)
    13-05-22 add Vclz4 from Chris Rath
    13-05-09 kpv sync
    13-04-23 move open source plugins from vcodexlib
    13-01-03 vcsfio.c: handle decode of encoded /dev/null
    12-12-05 vcsfio.c: all for expansion in data write
    12-11-27 vcodex.h,vcsfio.c: add VC_DECODE|VC_OPTIONAL
    RELEASE notes for src/lib/libvgraph/RELEASE
    13-04-23 kpv snarf
  4. Version: 2012-08-01-master

    Lefteris Koutsofios
    Lefteris Koutsofios committed Jan 11, 2016
    RELEASE notes for src/cmd/3d/RELEASE
    12-06-25 change strcpy() within buffer to strcopy()
    12-06-22,utimensat3d.c: add utimensat()
    12-05-25 handle missing getdents64 on linux+gcc-4.4
    12-05-25 syscall3d.c: tweak _exit() logic (really?) to dumped core on recent solaris
    11-12-01 fix fcntl 3rd arg int vs void*
    10-06-01 sync with ast api 20100601
    10-04-10 mkdir3d.c: fix mkdir() intermediate dir logic
    10-01-19 3d.h: increase some path buffer sizes -- these need to be dynamic!
    09-05-15 dll_3d.h: handle dllopen => dlopen
    08-12-04 fs.c: change open(/dev/fd/NN,...) try open(2) first, then dup(2)
    08-06-20 ast_3d.h,ast.c: add libast/misc/setenviron.c
    07-03-26 Makefile: drop -L* from IFFEREFS -- handled by .IFFE.REF.
    07-03-21 lib_3d.h,error.c: handle error_info => *_error_data_
    06-12-04 3d.h: strmode() bsd conflict tweak
    06-11-23 finally get linux to pass regression tests
    06-11-21 fchdir3d: let chdir do the work if fd matches cached path
    06-09-28 used getconf LIBPATH|LIBPREFIX|LIBSUFFIX -- how novel
    06-09-26 3d.h,dir3d.c,dll3d.c: fix strtou*l*l maps for __int64 vs. long long
    06-09-18 strmatch.c,touch.c: add private obsolete api copies
    06-08-27 mkdir3d.c: foloow mkdir -p mode rules for missing intermediates
    05-02-01 IFS may be unset and { ash bsh } don't on startup -- wow
    05-01-01,utimets3d.c: add utimets() intercept
    04-12-15 pathreal.c: "..." should fail if no lower view -- doh
    04-10-01 features/syslib: _exit test now uses SIGKILL (openbsd abort() hangs)
    04-07-26 update runtime docs
    	 3d.1: drop in deference to the runtime docs
    04-07-20 3d.h: undef _BLD_DEBUG to avoid raw libast symbols
    04-07-19 fs.c,lib.c,open3d.c,vcs_3d.h: { O_RDONLY O_WRONLY O_RDWR } are values
    04-07-19 dir3d.c: rewinddir643d() must call seekdir643d() (not seekdir64())
    04-07-01 3d.tst: TMP => TWD to match regress(1)
    04-06-16 3d.tst: coordinate $TMP with regress(1)
    04-06-14 lib.c: fix fs3d() 2d return value
    04-06-11 3d.tst: fix test and error counts
    04-05-04 open3d.c: create missing lower level dirs for O_CREAT ... file paths
    03-08-15 mount3d.c: change 3d intercept test to handle NiL || ""
    03-06-11 ast.c: add _map_malloc checks for _ast_malloc => malloc
    03-06-05 pathreal.c: fix ancient multiple relative|.. symlink bug
    03-06-04 change `shift $OPTIND-1' to `set x "@"; shift $OPTIND'
    03-03-28 dir3d.c,rmdir3d.c,syscall3d.c: add D_FILENO and D_TYPE ifdefs
    03-03-25 dup3d.c: fix bug that cleared Dir_t pointer just after allocation
    03-03-07 ftruncate3d.c,lseek3d.c,truncate3d.c: check _typ_off64_t
    02-10-18 features/ handle pseudo files in cc -E line syncs
    02-07-17 syscall3d.c: clean up user level intercept code
    02-06-25 open3d.c: fix bug that created 0 mode file with only O_RDWR
    02-06-14 ast_3d.h,cs.c: move fmttime() macro override to cs.c
    02-06-06 dir3d.c: fix rewinddir() bug that did not decrement intercepted count
    02-04-01 Makefile,cs.c,cs_3d.h,ast_3d.h: _WIN32 tweaks
    01-11-26 pathreal.c: empty path is an error
    01-11-16 ftruncate3d.c,truncate3d.c: use lseek3d indirection via sysfunc()
    01-10-31 fchdir3d: add along with state.file[].dir to cache open dir paths
    	 dir3d.c: add recursive call intercepts
    	 error.c: add recursive call intercepts
    	 pathreal.c: add buffer size check
    	 features/ add bsd syscall __RENAME() checks
    	 syscall3d.c: check _lib_syscall before using it!
    01-10-30 features/,syscall3d.c: handle -ldl calls back into 3d
    01-09-20 drop extra } in USAGE that emitted -} for --?
    01-07-17 Makefile: don't link 3d dll against ast dll
    01-02-19 close3d: dup reserved fd's higher
    01-02-14 add :VARIANT: to build dll's for CC.DLL.VARIANTS
    01-01-01 dir_3d.h: real readdir must be struct dirent, not dirent64
    00-12-14 fix -c
    00-10-31 ast.c add pathtemp.c
    00-10-19 init.c: initialize _3d_2d
    00-07-17 fix fchown to call MSG_fchown (not MSG_fchown); fixes vim dump!
    00-02-14 3d command long options (finally)
    99-01-01 --- release 4.0 ---
    99-04-01 dll: sfsprintf => _3d_sfsprintf
    	 check for __*_nc (osf.alpha)
    99-02-14 pathreal: copy to if not already there
    	 rewinddir3d: just call seekdir(p,0); fixes `top' core dump
    99-01-11 lseek3d,syscall3d: add sysfunc() for off_t!=long
    99-01-01 --- release 3.0 ---
    98-02-14 fix _RLD32_LIST => _RLDN32_LIST typo
    	 pathreal: fix (P_LSTAT|P_READLINK) under pwd bug that did phys on .
    	 features/ tighten up version __call header grep
    	 unlink: trap remove() too
    	 features/ favor strong (_ prefix) name for some arch's
    98-02-06 syscall3d: handle longjmp with cp->active
    98-01-23 features/ check for _xstat vs __xstat
    98-01-01 add readdir64 rewinddir64 seekdir64 telldir64
    97-10-11 fix lefty's virtual dir touch bug -- recursive doubling on stbuf
    97-07-17 CS_INTERFACE=2
    97-04-01 features/ fix __exit() test for new sgi
    96-12-25 handle stat64() implementations on top of _xstat()
    	 3d.tst must be run under 3d!
    	 _SCO_STAT_VER tweaks
    	 sgi _RLD_NEXT_PATHNAME fix for -32 -n32 -64 differentiation
    	 _*xstat() hacks around proto in *stat3d.c
    	 add constant casts for long shift counts
    	 fix pathnext() to report version instance level in state.path.level
    96-11-28 fix rename() to do physical stat on subject path!
    96-02-29 handle syscall loops caused by botched libs like solaris
    	 generalize name service interface to handle ifs+vcs
    	 catch acl,facl even if not on local sys
    	 fix features/ bug that set $stdc incorrectly
    	 use alloca() in execve() if possible
    	 add 3d.tst and test makefile action
    	 fix a few important virtual dir / create / append bugs
    	 fix null dereference in open3d() for state.in_2d
    96-02-14 add NFS acl,facl
    96-02-08 fix 2d bug in link,rename,symlink that generated empty arg 1
    96-01-30 fix features/ for compilers that ignore prototypes
    96-01-22 P_TOP only takes effect for files in virtual dir!
    95-11-24 optimize exec $shell to eval in
    95-11-11 don't fs3d_copy opaqued files
    95-10-11 fs3d_mkdir virtual dir fix
    	 fix 2d virtual dir test in pathreal()
    	 solaris _rename() != weak rename()
    	 solaris exit() doesn't call _exit()
    	 all static data in state
    	 test state.in_2d in link3d()
    	 fix that was broken sometime after 91
    	 linux LD_BIND_NOW not needed with
    95-07-17 handle irix-5.3 struct stat64 and off64_t
    	 dlsym(__exit) before dlsym(_exit)
    95-05-09 fix pathcanon() bug that incremented state.path.level too far on ...
    	 percolate inode metadata changes to the top level too (no more EROFS)
    	 add P_TOP to truncate() too!
    	 feature/ does not generate #include, up to *3d.c
    	 spawnveg.c must come after spawnve.c in ast.c
    	 cspoll.c must come after cs*.c in cs.c
    	 fix 3d to work like $SHELL if no shared 3d lib found
    	 fix chdir .. symlink bug that set state.pwd to physical path
    	 add %n.n.nd to bvprintf
    	 ignore a few more non-initialization setcwd() errors
    95-01-19 fix undefined var ref for _VER_ hack calls in features/
    95-01-11 access W_OK succeeds if on lower view
    94-12-01 add /#fs/NAME/load to load shared lib fs
    	 add user system call trap() stack
    	 VPATH=*::* or VPATH=*:-:* to separate disjoint views
    	 change trap() to intercept()
    94-07-17 add /#fs/safe
    94-06-01 fix symlink() and link() bug that didn't instantiate virtual dir
    	 fix [f]statvfs() infinite loop for att hybrids
    94-05-11 merge with the real vcs
    	 add char*_3d_2d: if _3d_2d!=0&&getenv(_3d_2d)==0 then 2d
    	 trailing slash in pathreal() interpreted as slash dot (off/w test=010)
    93-05-28 add /#option/limit=n to limit view depth
    93-04-01 --- release 2.0 ---
    93-03-11 change /dev/3d/* to /#*
    	 remove anno and rpl specific hooks
    	 add name,monitor,active fs mounts
    92-04-01 --- release 1.1 ---
    92-02-11 change retained mounts to /dev/3d/dev
    92-01-11 add $SHELL and /bin/sh exec() checks to force 3d sh
    	 fix checklink() to concatenate relative links with original prefix
    91-11-11 --- release 1.0 ---
    	 add feature/ to handle att s5r4, hp snake, sun 4.1
    	 change umask() 3d state toggle to mount(-,/dev/3d/option/{2d,3d})
    	 fix creat() virtual dir bug for umteenth time
    	 link() and rename() now migrate to top instead of EROFS
    RELEASE notes for src/cmd/INIT/RELEASE
    12-07-17 add C code NOTE("...") to ammend --verbose output
    12-06-26 fix "npt foo" to handle function-like macro foo()
    12-06-20 use $KSH for rt in "results test"
    12-06-15 Makefile: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
    12-06-15 add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
    12-06-13 handle admin.db column output
    12-06-08 fix 12-06-06 typo
    12-06-06 check for -l* in reverse and accumulative order (e.g., for -last & -lm)
    12-06-04 always check $INSTALLROOT/lib/package/profile
    12-05-31 Makefile: ID=ast; $(INSTALLROOT)/prototyped.h => $(INSTALLROOT)/$(ID)/prototyped.h
    12-05-28 api foo YYYYMMDD => FOOAPI(rel) test macro
    12-05-24 change admin.db comment => owner attributes
    12-04-25 ratz.c: add sear -k option to keep installation tmp dir on exit
    12-04-17 skip sh version logic for ``use''
    12-04-17*: _LARGEFILE64_SOURCE => _LARGE_FILE_API moved to libast/features
    12-04-09*: speak aixese for _LARGEFILE64_SOURCE
    12-02-29 cc.darwin.i386*: handle default cc vs kernel bittedness
    12-02-29 C+probe: add __TIMESTAMP__ to the nopredefined list
    12-02-29 don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH
    12-02-29 fix ksh vs -lcmd compatibility checks
    12-02-23 checkcc() before checkread() for sensible diagnostics
    12-02-14 { --clobber --compare --link=lib*.a* } for --mam=static
    12-02-14 export LICENSEFILEDEFAULT instead of LICENSEFILE
    12-02-14 handle @(cc|ld).${HOSTTYPE}* intercepts
    12-02-07 add { clean clobber } actions
    12-02-02 fix ulimit -c defaults for --nokeep
    12-01-18 add INPUT|OUTPUT|ERROR -e 'filter' to filter before comparison
    12-01-21 fix `admin make' bug that created unused $INSTALLROOT/lib
    12-01-21 Makefile: :PACKAGE: license=ast -- oops
    12-01-20 cc.darwin,cc.mvs.390: tmp=/tmp/cc.${USER:-$LOGNAME}.$$.err
    12-01-12 add admin make share closure to handle alternate HOSTTYPEs
    11-12-13 add /*<NOSTDIO>*/ test code comment to disable default #include <stdio.h>
    11-11-11 C+probe: test for .so before .sl
    11-10-26 don't forget about *.pkg for admin update
    11-10-18 cc.*-icc: update and add more
    11-10-11 handle package make|view when no source installed
    11-09-11 count admin '*** termination code' errors
    11-08-31 mamake.c: add -e, ignore use recursive prereq timestamps
    11-08-29 add ``set stdio try1.h - try2.h ...''
    11-08-29 trap EXIT => trap 0 for ancient sh
    11-08-11 handle ancient sort that doesn't have -k
    11-06-01 make.probe: add more /lib64 logic
    11-05-01 fix admin ditto to sync LICENSES too
    11-03-25 initialize { $SED $TR } before first use!
    11-03-21 fix vpath probes
    11-03-17 fix cleanup to rm $tmp* instead of $tmp*.*
    11-02-24 change curl usage to "curl -L ..."
    11-02-11,C+probe,make.probe, add ###.*archiac.*###
    11-02-02 Makefile: add :MAPLIB: check for ancient -lw
    11-02-02 make.probe: handle -print-multi-directory => 64 => /usr/lib64 /lib64
    11-02-02 HOSTTYPE=*,*cc*[,-*,...] sets CC [ and CCFLAGS ]
    11-02-02 make.probe: handle gcc $ORIGIN link but exec failure -- gee thanks
    11-01-25 cc.hp.ia64: bundled cc is a pile of shaving cream
    11-01-07 check debug==3 for is_hdr() failure
    10-11-22 fix timing problem between |& and exec &p
    10-11-10 fix cc cross compile check to use checkcc absolute path
    10-10-10 list main env vars at start of make action
    10-10-10 ratz.c: tweak widnows delays
    10-09-10 ratz.c: add _SEAR_ARGS for _SEAR_EXEC
    10-09-01 fix ratz from source logic
    10-08-25 consolidate license file search in .package.licenses.
    10-08-22 ratz.c: run sear bootstrap command detached
    10-08-20 C+probe: version_stamp only if version_flags works
    10-08-17 unset makerules *DIR variables in env
    10-08-15 "make" action now lists some env values
    10-08-11 add "DO command ..."
    10-07-27 handle "rt X=Y ..."
    10-06-29 ratz.c: non-option sear args passed to sear_exec()
    10-06-25 "api" op changed to not do "map-libc" type mappings
    10-06-25 "force admin ditto" => no ditto --update option
    10-06-22 C+probe: handle cc that require .[ci] input for version info
    10-06-21 change default remote access to ssh (about time)
    10-06-12 DISGNOSTICS [ 1 | 0 | pattern ] and fix EXIT for all
    10-06-09 add AT&T to usable nmake check
    10-06-06,iffe.tst: add { api ver } ops
    10-04-22 update "html binary|source" NAME/PASSWORD info
    10-04-15 don't forget candidate headers for hdr|sys!
    10-04-11 disable man page metarule -- now done by admin-man(1)
    10-02-14 $CC verification needs $INSTALLROOT/bin in PATH
    10-02-11 fix package admin make report error count
    10-02-02 fix write binary bug that did scp on local fs
    10-02-02 up to date binary targets must still be in PACKAGE.*.lst
    10-01-01 fix premature $INSTALLROOT/bin during cross compile check
    10-01-01 make.probe: handle ['"] in CC.VERSION.STRING
    09-12-04 add "opt name" to check for name in $PACKAGE_OPTIONS
    09-11-30 change RESET to STATE.RESET to make it global
    09-11-14 make.probe: use gcc { -print-multi-directory -print-search-dirs }
    09-11-11 re-order and combine cc checks
    09-10-27 C+probe,make.probe,probe.win32: add CC.SUFFIX.DEBUG
    09-10-21,Makefile: test -e is not in ksh88!
    09-10-06 handle cc -E #error with 0 exit status (sgi)
    09-10-06 stub in ar intercept checks -- not used yet
    09-10-06 add ar intercept because some aix require -Xfoo first!!
    09-09-24 fix UMASK logic to create test support files before umask
    09-08-28 release.c: change docs to mention stdin if no file operands
    09-08-24 fix isascii() bug that failed on od(1) trailing space
    09-08-20 make.probe: add CC.SHARED.NAME
    09-08-20 add { JOB CONTINUE EXITED KILL FIFO }
    09-08-11 filter lines containing : for package results
    09-07-31 make.probe: add CC.AR.ARFLAGS (for aix ar -xany)
    09-07-31,cc.*: fix -dumpmachine to handle 32/64/* bit options
    09-06-24 fix admin.db output formatting
    09-05-05 export dll hackery environment vars
    09-05-05 handle non-identifier hostnames
    09-05-05 mamake.c: pass undefined ${...} identifiers to the shell
    09-05-05 mamake.rt: add macro expansion regression tests
    09-05-01 fix output initialization *again*
    09-04-28 handle admin.db contact field $9
    09-04-15 add implicit "ini" op to initialize io for subsequent ops
    09-03-31 EXPORT before test => global ENVIRON[]
    09-03-26 test fail pattern is 'fail[es]'
    09-03-26 UNIT - ... appends (options) to command line
    09-03-19 x.tst => x only if x is command target
    09-03-15 add ${MAIN} for base name of main unit
    09-03-10 add .SOURCE:tests if tests is a dir
    09-03-03 allow command line unit to override UNIT
    09-03-03 handle IO == $'\n'
    09-02-02 delay $INSTALLROOT/bin/.paths generation until mamprobe runs
    09-01-30 cc.mvs.390: c89 balks at [ ()] in -Dname="..."!
    09-01-27 add isascii() to use ratz instead of tar
    09-01-20 add --size=bytes option
    09-01-08 add test.* prereqs, multiple arg lists with :T=*: binding
    09-01-03 fix UNIT to allow command line override
    09-01-03 handle TWD
    08-12-24 fix cross-compile HOSTTYPE logic
    08-12-15, handle http codes { 301 302 303 }
    08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!!
    08-09-30 fix ksh93 regression test signal count
    08-09-26 ignore SIGPIPE for SET pipe-input
    08-09-24 package only test foo => make --recurse=only recurse tests foo
    08-09-20 make.probe: handle another /usr/bin/file shared lib description
    08-09-20 add --pipefail for SET pipe-input ...
    08-09-17 Makefile: add gdbm1.c for <gdbm-ndbm.h>
    08-09-10 make.probe: add CC.NOPROTECT
    08-08-08 add --width=width
    08-08-05 dbm.req: favor sleepycat ndbm compatibility
    08-08-04 C+probe: fix stdlib initialization logic
    08-06-24 fix $INSTALLROOT/bin/cc intercept time stamp file typo
    08-06-20 make the localyunit before *.rt => *.tst -- doh
    08-06-20 prepend $PWD onto PATH for local units -- doh^2
    08-06-11 fix bug that skipped the last test
    08-05-20 add --local to put *.tmp dir in local fs
    08-05-05 add IF command ... ELIF command ... ELSE ... FI
    08-05-01 package test => ulimit -c 0
    08-04-28 fix EXPORT quoting
    08-04-28 fix UNIT set check args too
    08-04-24 exit code > 256 => signal termination
    08-04-10 C+probe: change probe_so order to check .so last (macos ld workaround)
    08-04-01 handle multiple admin HOSTTYPEs per HOST
    08-03-28 C+probe: add C++ #include <iostream> (no extension) dir probes
    08-03-17 fix trap on EXIT, add terminated note to final tally
    08-02-28 make.probe: fix probe_warn to include ld!
    08-02-02 make.probe: add CC.RUNPATH to match default -L order
    08-01-31 check lib64 for LD_LIBRARY_PATH
    08-01-31 tweak ancient /bin/sh workarounds
    08-01-28 make.probe: darwin ld export dynamic is -force_flat_namespace
    08-01-28 C+probe: handle sgi cc error message but exit 0 botch(es)
    08-01-23 fix checksum doc typo
    08-01-09 C+probe: add __FUNCTION__ to the undef (don't check) list
    07-12-14 add set nooptimize
    07-12-03 add LC_ALL=C
    07-11-27 fix overaggressive *.md5 cleanup
    07-11-20 treat exit status >= 250 as normal error with no signal
    07-11-05 fix write op error count pattern
    07-11-05 fix $(~req) .ver binding
    07-08-11 probe.win32: add cl.exe setuid workaround, CC.VERSION[.STRING]
    07-08-01 handle 'package read lcl|tgz'
    07-05-08 execute basename instead of absolute path for short $0
    07-04-27 cc.sgi.mips[34]: for #error to exit non-zero -- a no brainer
    07-04-20 defer to systems without 'grep -q' -- sigh
    07-04-11 handle $(CC.*) => ${mam_cc_*}, $(...) => ${...}
    07-04-11 make.probe: fix CC.PICBIG probe, default { CC.PIC CC.DLL } to BIG
    07-04-04 prepend ${tst}${ext} to each .c probe
    07-03-28 fix binary tgz architecture type duplication
    07-03-28 add binary write PACKAGE.$HOSTTYPE.lst
    07-03-28 add -F header to mac test
    07-03-23 make.probe: handle file(1) that returns 'archive' for .so
    07-03-22 fix STDED probe for implementations that ignore EOF
    07-03-11 add nocopyright and tst => nocopyright
    07-03-11 add copyright=0
    07-03-08 C+probe: restore IFS after probe.ini
    07-02-26 mamake.c: expand first of ${mam_lib*} for ${AR}
    07-01-05 fix "admin write binary" logic
    07-01-01 add "cmd" --verbose trace
    07-01-01 sort => LC_ALL=C sort
    07-01-01 C+probe: LC_ALL=C
    06-12-22 make.probe: lean on gcc -v for stdlib, but preserve /usr/local!
    06-11-23 *.md5 are not tarballs -- doh
    06-11-23 add -F, --features=feature-test-header
    06-11-11 make.probe: favor lib64 over lib for hosttype==*64
    06-10-31 make.probe: add "-ignore-source-dir -iquote" test
    06-10-31 add status{...} code block
    06-10-11 fix DO to handle {...} (time for regress.tst?)
    06-10-11 handle already gunzip'd *.tgz
    06-10-06 add reference for header content tests
    06-09-27 fix UMASK to do DO too (duh)
    06-09-22 drop -O for npt tests (for msvc intrinsics)
    06-09-14 cc.darwin: drop -O until gcc 4.* gets its act together
    06-09-11 { cc ld ldd } intercepts check ${HOSTTYPE%.*} too
    06-09-08 add PIPE INPUT|OUTPUT for pipe io
    06-09-05 C+probe: add { probe_version version_stamp version_string }
    06-09-05 make.probe: add version stamp comment, CC.VERSION[.STRING]
    06-08-27, add UMASK
    06-08-25 add -b,--ignore-space,IGNORESPACE
    06-08-25 add IGNORESPACE
    06-08-24 handle \000 in data
    06-08-24 handle -f* for INPUT|OUTPUT|ERROR
    06-08-16 fix 'install flat' logic
    06-08-11 handle style=shell %K date format
    06-07-17 ratz.c: fix __MVS__ FAR definition
    06-07-17 "header x.h" -- deprecate "include x.h" for .SCAN.iffe
    06-07-17 differentiate urls vs. assignments
    06-06-27 add --failed, --heading
    06-06-27 C+probe,,make.probe,, 'ulimit -c 0'
    06-06-26 cc.darwin.ppc: handle -lcc_dynamic disappearance
    06-06-25 implement PROG
    06-06-11 Makefile: add -ldbm :MAPLIB:, provide public
    06-05-06 add PACKAGE_admin_tail_timeout
    06-05-22 ratz.c: upgrade to zlib-1.2.3
    06-05-09 fix admin.db docs
    06-03-11 fix `package use - command ...'
    06-03-05 make.probe: work around pedantic bash 3.1 mismatched " in `.`
    06-02-14 "results failed test" == "results test failed"
    	 cc.sgi.*: add _AST_cc_OPTIONS parameterization, -OPT:Olimit=0
    	 cc.linux.ia64-icc: add for intel cc
    06-02-02 freebsd stuck with os version for all arch
    06-02-01 fix locale logic (tw -d requires dir arg)
    06-01-31 require $CC only for make|test
    06-01-30, use the backwards-compatible --http-passwd add more pdksh => /bin/sh checks
    06-01-26 wget --http-pass => --http-password fix wget error logic wget --http-pass => --http-password
    06-01-11 pass package.license.class to make --mam too variants=pattern => --variants=pattern darwin rel<=7 => darwin7.ppc freebsd rel<=4 => freebsd4 freebsd rel<=5 => freebsd5
    05-12-07 don't emit <stdio.h> if <sfio.h>|<ast.h> (XXX)
    05-12-05 make.probe: disable readonly.exe core dump via ulimit -c 0
    05-09-22 add EXEC [ ++NOOUTPUT ++NOERROR ++NOEXIT ]
    05-09-21 fix --style=shell compare to ignore \r
    05-09-12 all --force to force %.rt regeneration
    05-09-05 regenerate from %.rt only if newer, :SAVE: %.tst
    05-08-25 add add %.rt=>%.tst for mktest
    05-08-18 'package host cpu' now checks $NPROC first
    05-07-17 add { define extern include print } ops accept output{...}end output on success only -- doh
    05-07-01 add TARPROBE for tar B flag probe
    05-06-24 fix binary read chmod via *.sum
    05-06-06 fix KEEP_HOSTTYPE logic to handle synthesized types
    05-06-01 make.probe: verify that cc_pic works for hosted cc
    	 cc.lynxos.ppc: make -mshared the default note $INSTALLROOT/bin/@(cc|ld|ldd) installation
    05-05-25 make.probe: add CC.INCLUDE.LOCAL instead of -I- in CC.DIALECT
    05-05-24 really fix grouping logic -- with tests this time pipe/socket configuration mismatches => use /bin/sh
    05-04-28 add $(TESTS)
    05-04-19 package results test uses rt if possible fix 'op var - ... - ...' grouping logic
    05-04-15 handle autom4ate style
    05-04-11 fix unit name when command line unit also specified handle all ast package test output formats fix make docs for options passed to underlying make
    05-04-08 cp -p to $OK to preserve mtime add "TITLE name" to change TEST output title
    05-04-01 add pretty make test + wrapper
    05-03-29 test -e path => test -f path -o -d path
    05-03-24 make.probe: fix CC.PICBIG probe to prefer -fPIC over -fpic -- doh
    05-03-19 mamake.c: command line name=var also defines name.FORCE=var
    05-03-11 unset LC_ALL when LC_* EXPORT'd old make.out saved in circular make.out.[1-9]
    	 mamake.c: sync with nmake :W=O:
    05-03-01 fix flat hierarchy initialization admin action now properly resets sibling remote logs relax unknown/unwritten package messages to warnings handle space in command line name=value
    	 make.probe: add mvs -Wc,dll,exportall,longname,rent to CC.DLL probe
    05-02-24 hosttype *.powerpc => *.ppc
    	 cc.lynxos.ppc,ldd.lynxos.ppc: add
    05-02-22 mamake.c: fix { -G --debug-symbols -S --strip-symbols } MAMAKEFLAGS bug
    05-02-20 probe.win32: handle /platformsdk mount
    05-02-19, add write tst for tgz in tst subdir
    05-02-18 accept cc -dumpmachine with 0 or 1 -
    05-02-14 handle mutiple architectures per host in admin.db
    	 Makefile, honor $INSTALLROOT/bin/.paths overrides normalize trailing [-_]bits in host type some ksh-compatible shells don't do *(pattern)
    05-02-11 back out 05-01-11 child process stdin hijack
    	 cc.lynxos.i386: -dynamic instead of -static default
    05-02-10 cyg usr/doc => usr/share/doc
    05-02-08 drop -m with pax -- delta bug fixed 2005-02-08 work around old bash 0<... redirection bug
    05-02-06 source.tgz: update generated files only when they change
    05-02-02 *.sh,*probe: IFS may be unset and { ash bsh } don't on startup -- wow
    05-01-11 update setup docs to include authorize+password fix .source.cyg final directory edit notice=1 for conspicuous empty NOTICE file fix *-index.html installation retain input file suffix in tmp copy
    	 mamexec.c: fix non-contiguous "exec" bug that skipped lines fix candidate lib test to try grouping subsequent libs fix child process stdin hijack that skipped input lines --shell=osh to force read -r compatibility command chop iffe input leading space before # for KnR compatibility
    05-01-05 add ${TAR} ${TARFLAGS} and tar B flag for pipes
    	 mamake.c: fix makefile scan to ignore lib*.[hH] immunize function/symbol tests from aggressive -O
    04-12-28 add :WWWPAGE: faq.*.mm index generator
    04-12-21 ratz.c: make sure tmp dir is writable -- doh
    04-12-08 fix dat test for aggressive -O
    04-12-01 add `include file' to pull in #define's for `exp'
    04-11-11 default MAKESKIP is "*[-.]*"
    04-10-22 ratz.c: change docs to note zlib license
    	 mamake.c: handle --debug-symbols and --strip-symbols make (debug|strip)=1 => --(debug|strip)-symbols add :LICENSE: => package.license.class
    	 mamake.c: fix recursive order logic
    04-10-18 add :LICENSE:, :OMIT: to omit package subdirs
    04-10-11 add 'authorize name' and 'password password'
    04-10-01 double check $static link with ! $static
    	 Makefile: add BUILTIN_LIB to $INSTALLROOT/bin/.paths
    	 make.probe: add CC.DIALECT EXPORT={ALL,REF,EXT,DLL} add BUILTIN_LIB to $INSTALLROOT/bin/.paths
    04-09-21 $(init)$(name) is now an implicit prereq
    04-09-09 copy to $INSTALLROOT/bin/ok
    04-09-01, rename *.txt => *.README add the runtime package type (no *.[ah]) fix key test reports
    04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] }
    04-08-11 handle HOSTTYPE for solaris > 9 add `checkaout proto' for { make view } check for { md5sum md5 } add {if|elif|else|endif} test ... add 'exp - expression' and '( expression )' add 'name = test ...' user defined macros add '! test ...' negation add implied { .c .sh } generated prereq
    	 cc.darwin.ppc: handle 10.3 -dylib mess
    04-08-01 let include handle nested requirements -- duh
    04-07-31 attempt a second ping before admin assumes host down
    04-07-26 fix hp.ia64 HOSTTYPE
    04-07-23 probe.win32: generalize #include dir order search
    04-07-17 add INPUT -x for chmod +x
    04-07-01 TMP => TWD
    04-06-29 put COMMAND in $TWD too
    04-06-21 mkdir -p INPUT and OUTPUT intermediate dirs add :TEST: -- to disable .c .sh search
    04-06-18 add .SCAN.tst
    04-06-17 TEST returns true if active, false otherwise add CD to change test pwd from $TWD
    04-06-16 add TWD for ./unit.tmp override DO now flushes previous test INPUT and OUTPUT handle -f for printf instead of print
    04-06-11 make sure $INSTALLROOT/bin is in front of $PATH skip nmake if older than 2000-10-31
    04-05-20 fix arg vs. package parse with - or '' to disambuguate
    04-05-11 package verbose update lists closure for package setup add src/lib/libardir to nmake proto bootstrap probe for rm -u vs. chmod -R u+rwx
    04-05-01 $CC must be C, not C++; allow release command on $PATH
    04-04-15 make.probe: check probe_libdir false positives add lib/package/*.lic src package subdirs add mamfile=0 to inhibit Mamfile generation config name_DECLARED => HAVE_name_DECL fix mac to handle default value
    04-04-11 normalize sed [\\\\/] quoting
    04-04-04 only checksum generated tarballs add STDCHMOD
    04-04-01 C+probe: set export LANG=C for uniform error messages
    	 make.probe: another CC.STDLIB tweak fix regress core dump pattern, expand [a-z] match ranges
    04-03-31 Makefile: add intl :MAPLIB: test
    	 make.probe: fix CC.STDLIB search; drop CC.* path duplicates
    04-03-28 drop unused exec $stdin<&0 dup
    04-03-25 Makefile: add iconv :MAPLIB: use ${PING:-ping -c 1 -w 4}, allowing admin.db override
    04-03-24 add *.md5 checksum for each *.(c|exe|tgz) update base change on md5 sum instead of size adjust case label \ and keyword quoting for ancient /bin/sh
    04-03-22 probe.win32: ncc => nld
    04-03-19 change the instructions and old source dir default fix recurse=list check add *.md5 checksum for each *.(c|exe|tgz) fix update base/delta/sync existence check
    04-03-18 -d2 does not remove core dumps on exit
    04-03-17 fix make recurse arg/action order
    04-02-29 add regress action to compare current and previous tests fix sgi.mips[23] HOSTTYPE test for old irix cc add `export variable ...' admin action now handles host name with non-id chars non-numeric M T W in admin.db disables that action fix admin write binary local vs. shared clash add _AST_CC_hp_pa_DEFAULT=+DAportable
    	 cc.hp.pa64: sync with -bnolibpath => -blibpath:/usr/lib:/lib
    	 probe.win32: sync with make.probe
    	 make.probe: fix last chance dynamic test
    	 make.probe: add CC.EXPORT.DYNAMIC -Wl,-E
    	 make.probe: add ibm.risc CC.EXPORT.DYNAMIC -bexpall
    	 make.probe: move probe_dll_def to the end of probe_dll capture subcomponent mamfile recursion
    04-02-24 make.probe: strip "..." from cc/ld traces add ``set [no]define'' to disable macro #define/#undef
    04-02-23 make.probe: rework CC.LD search
    04-02-14 make.probe: add CC.EXPORT.DYNAMIC for main dynamic sym export
    	 make.probe: resurrect CC.PIC with separate semantics from CC.DLL
    	 make.probe: add CC.SHARED.LD for CC.SHARED linker
    	 C+probe: clear DISPLAY to stifle interactive windows
    04-02-11 handle ``siz void*'', add cross{ ... }end
    	 make.probe: add { CC.AR CC.SIZE }, fix cross command search
    	 cc.darwin.ppc: change $cc => $CC for old ksh + libast conf bug
    04-02-09 make.probe: drop -nostartfiles from CC.SHARED for C++
    04-02-04 fix cross compilation bug that mixed binary formats
    04-02-02 package admin now ditto's bin/package too
    04-01-30 cc.sgi.mips3: drop warning 3421
    04-01-11 output label#count for tests in loops
    04-01-05 fix bug that ignored the first SAME
    04-01-04 fix typo that did not recognize rcp
    03-12-19 mamake.c: add `foolib:foo:libfoo' to recurse()
    03-10-11 add EXPORT, export COLUMNS=80 for message consistency
    03-09-23 ratz.c: fix tar header number parse bug that skipped to next number rm cleanup now handles files matching -*
    03-09-11 add unnamed { ... } blocks add COPY from to, like MOVE but comprison still done rm -rfu to handle test dirs w/o u+rwx
    03-08-14 Makfile: add hello.c to the manifest
    03-08-11 fix `html binary' generation
    03-06-21 fix INITROOT initialization bug make sure admin logs exists before tail'ing
    03-06-11 probe.win32: fix $(BINDIR) typo that expanded in sh instead of make
    	 cc.mvs.390: return code 4 yields exit code 3 but its *really* ok fix onpath function global var conflict
    	 make.probe: add CC.DIALECT { GNU -dD } add Mamfile to lcl manifest
    03-06-10 fix setup action typo that only checked the INIT package *.s390x => *.s390-64
    03-06-09 add cyg :POSTINSTALL:
    03-06-08 make.probe: fix CC.STDLIB logic add User-Agent identification tweak source and binary installation instructions, +-Wl,+cdp,${INSTALLROOT}/lib/: drops abs lib paths add
    03-06-06 fix $INSTALLROOT/bin/ldd check
    	 make.probe: add CC.STDLIB verification
    03-06-04 make.probe: add +forceread +noforceread
    03-05-11 handle http://host:port/path
    03-05-06 fix setup action PACKAGEROOT and INIT logic
    03-05-05 fix cygwin tarball names
    03-04-30 move (cc|ld|ldd).$HOSTTYPE updates from Makefile
    03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" => ""
    	 make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR)
    	 probe.win32: sync with latest CC.*
    03-04-25 add args to `. $makeprobe' for ancient sh
    03-04-23 fix dup "covered by" licenses
    03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's fix admin write binary tarball snarf
    03-04-21 package covered *.@(pkg|lic) too
    03-04-15 don't generate incremental archives for lcl add incremental=[source:1 binary:0] archive control generate $INSTALLROOT/bin/cc wrapper for CC != cc admin must ditto lib/package/*.@(pkg|lic) too
    	 mamake.c: ignore time of ignore prereqs
    	 mamake.c: -D2 lists propagated times
    03-04-11 tidy up cyg tarballs fix old shell clash between get() and $get
    03-04-05 restore *.inx generation somehow lost during cyg additions add pthread_num_processors_np() last resort for cpu count use `make believe' to accept mamake generated files handle `make [make-flags] [target ...]'
    	 mamake.c: ignore -e
    03-03-21 fix cyg old make typo switch to `package setup' instructions
    03-03-19 add registry checks for `host cpu' `results failed' now lists core dump messages
    03-03-17 on cygwin verify 'ntsec binmode' in $CYGWIN or die
    	 Makefile: install gcc wrapper if no cc add :DETAILS: { :README: :EXPORT: :INSTALL: :TEST: } ops
    03-03-12 add :DETAILS: for style-specific details
    03-03-11 add beta setup/update support add (TESTCC) prereq for .sh tests
    03-03-07 add
    03-03-06 fix lib win32 test cygwin vs native incompatibility change internal stdio.h guard to handle C++ inline vs. macro
    03-03-03 check for curl or wget for update add setup action == update read make fix packageroot() typo that showed up in non ~user shells
    	 mamake.c: treat name+=value args like name=value
    	 mamake.c: add ${var?*|value?match?no-match?}
    	 mamake.c: fix archive vs. dynamic bind logic
    03-02-28 add the "cyg" (cygwin) package type add "cyg" stubs, :CATEGORY: for category name(s)
    03-02-25 mamake.c: add -D4 system(3) debug trace
    03-02-24 change --mismatch to --corrupt=accept
    03-02-14 ratz.c: add _WIN32 setmode([01],O_BINARY) and fopen "rb"/"wb"
    03-02-12 Makefile: handle getconf LIBPATH with host pattern
    03-01-31 fix .lic search
    03-01-30 handle { INIT ksh nmake } already installed elsewhere admin handles command outside of $PACKAGEROOT/bin
    	 Makefile: install $(INSTALLROOT)/lib/make/
    03-01-28 admin remote commands on one line to please syslog
    03-01-23 probe.win32: borland and mingw32 tweaks
    03-01-22 fix $CC test to ignore set -x trace -- duh
    03-01-16 tw --chop on by default
    03-01-14 use /bin/cp to copy previous binaries to bin/ok/ admin now initiates remote exec and copy from local host
    03-01-12 handle admin "xxx:" default root
    03-01-03 probe.win32: add /usr/include/borland path truncation workaround
    02-12-10 add <&$nullin >&$nullout to checkread() $cc
    02-12-06 probe.win32: fix inlcude => include typo, add lcc lib
    	 probe.win32: CC.MAKE.OPTIONS = nativepp=0
    02-12-04 mamake.c: fix ${foo-bar} to expand foo if defined
    02-11-28 probe.win32: add C++ and -I- CC.DIALECT checks
    02-11-26 package release now checks for second level files
    02-11-22 update action now uses HTTP/1.0
    02-11-21 probe.win32: update the vc include dir test
    02-11-20 make.probe: fix CC.LD.ORIGIN typo that expanded make var
    02-11-13 fix list.install => list.installed typo
    02-11-12 make.probe: add CC.LD.ORIGIN for a.out origin dir relative dll search
    	 make.probe: add CC.LD.STRIP for link time a.out strip fix package_use vs. PACKAGE_USE check
    02-10-24 fix bug that required a :WWWBIN: assertion to post
    02-10-23 mamake.c: fix unuinitialized time in make()
    	 ratz.c: fix meter buffer overflow
    02-10-20 fix lib/probe/C/make/probe update test
    02-10-18 probe.win32: update for mingw
    	 make.probe: add bash workaround to SHELLMAGIC test work around yet another cygwin hassle
    02-10-17 short circuit id check for *[-+/\\]*
    02-10-08 unset FIGNORE to avoid rm . errors unset FIGNORE to avoid rm . errors $CC must at least compile and executable hello world
    02-10-04 $INSTALLROOT/lib/package/tgz=>$PACKAGEROOT/lib/package/tgz $(ED) => $(STDED), $(EDFLAGS) => $(STDEDFLAGS) add identifier checks for tests that (implicitly) require them disambiguate a few --config macros
    02-10-02 fix shell=bsh `hdr a/b'
    02-09-30 handle chmod of -* files verify that $SHELL is Bourne compatible tighten PACKAGE_USE logic PATH,LIBPATH,etc. validation fix bug that didn't define mac variable on success
    02-09-22 handle admin_action=ditto --config sizeof(foo) macro is SIZEOF_foo fix long.long test so it doesn't defeat uwin "typ long.long" convert $("foo") nmake string constants
    02-09-21 "-" info-path writes probe info to stdout
    02-09-11 make.probe: move from nmake src to be part of
    	 mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end
    	 mamake.c: pass cc absolute path to mamprobe generate mamprobe -- yuk (at least its confined to INIT) lcl,nxt: drop default sys/ check tw --logical by default; add --physical
    02-09-10 SHELLMAGIC creeps into package too -- duh and fooey
    02-09-09 test that remote .profile exists before sourcing
    02-09-06 don't ditto nfs junk --show now lists directory ops instead of enumerating all
    02-09-05 add --remote={rsh|ssh} add admin [[{rsh|ssh|-}]:]directory
    02-09-02 change 'print -r --' to 'print -r -' for ksh86 compatibility
    02-09-01 cc.unix.mc68k: add for ancient 3b1
    02-08-22 fix component() to test for components -- duh
    	 Makefile: add LICENSE:.DONTCARE to workaround mam
    02-08-11 provide defaults for LD_* additions
    02-08-07 ratz.c: change -m to use * instead of non-portable inverse video
    02-07-17 close tmp file in trap before rm for cygwin fix "type" to handle i1586 (P4) add the view action
    02-06-28 handle multiple packages for release action
    02-06-27 catch sol*.sparc=>sol*.sun4 when CC=gcc
    02-06-14 fix admin_action to not include qualifiers fix help/html doc typo
    02-06-11 fix ditto update doc to `PACKAGEROOT field matching *:*'
    02-06-07 change substitute $("\n") to \n
    02-06-06 clarify output streams for help/html
    02-05-22 mamake.c: fix executable file check to use (S_IXUSR|S_IXGRP|S_IXOTH)
    02-04-04 fix update to differentiate *.sun4 and sun4
    02-03-27 yacc/bison warning only if both missing
    02-03-24 mamake.c: all shell actions wrapped with -c to avoid #! problems
    02-03-23 recover $PACKAGEROOT/bin/package if not in INIT package precheck $CC, not `cc' fix install to use pax -ps to preserve set-uid/gid fix install to use list.installed for existing files only
    02-03-17 fix PAX initialization that was sometimes omitted for read fix update delta sync fetch
    02-02-14 fix macro{ }end docs to include " add dfn to extract #define from headers handle nxt #include ok but no line sync drop local header clash logic add -X, --exclude=dir to exclude -I dirs lcl,nxt now generate <...> headers instead of "..." admin.db root dir matching -* disables host fix package.src.pat typo -- too many ) add { :COVERS: :DESCRIPTION: :REQUIRES: } handle { :COVERS: :DESCRIPTION: :REQUIRES: }
    	 Makefile: move proto.c generation to the proto component dir
    02-02-02 add for .exe challenged win32 systems/commands add STD* commands/flags
    	 mamake.c: update mamprobe info when older than mamprobe executable move ed/ex workaround to fix `host type' bug that incorrectly assumed sun4 for sol add execrate(1) hooks for challenged systems add check for { cc ar nm yacc/bison } before make
    	 ratz.c: fix "rb" vs. "r" macro tests add nxt, similar to lcl but defines _nxt_foo for #include, remove vaibale from sccs,cvs ident strings -- duh
    02-01-24 C+probe: check CC.DYNAMIC to handle cc that accept but ignore -B* handle 'mem struct.a.b'
    02-01-22 cache (internal) `foo vs. struct foo' test results uts.370 => uts.390
    02-01-18 fix uts hosttype
    02-01-17 add 'results failed ...' to list failures only change ARCH internal var to all_types to avoid env conflict fix hdr/lib precheck that missed some -- ouch fix noexecute test that forgot to check compile first!
    02-01-15 ratz.c: fix path[] type typo
    02-01-01 tighten license search
    02-01-08 `pwd` => ${PWD:-`pwd`} expand license file pattern match
    02-01-04 fix `exp name "value"' bug that duped "value" fix initial <sys/types.h> check to honor --config
    01-12-25 fix bug where -o file restored old file
    01-12-23 uniq the closure lists
    01-12-07 ratz.c: fix --meter to retain paths containing " -- "
    01-11-30 ratz.c: use sear_system() to execute; should work on all windows
    01-11-28 ratz.c: fix sear_rm_r() to check SetCurrentDirectory() status
    01-11-26 drop n+=v for ksh compatibility
    01-11-21 add rsync script replacement [hey, it works!] add [ditto]:directory notation to admin.db
    01-10-31 handle *.sum paths with embedded space change executable() to onpath() executable([!] foo) replaces test [!] -x foo (.exe hack) add os2 fix to `host type'
    	 mamake.c: add .exe hack fix intrinsic function lib test update pic probe to match make.probe for linux.ia64
    01-10-30 make action skeleton view now checks subdirs
    01-10-20 don't recurse into leaf dirs matching $MAKESKIP tarball package.notice replaces `license accepted' prompt eliminate `license accepted' prompt add update to download latest from a url use builtin arithmetic when we know its ksh unkown -> unknown
    01-10-18 convert to YYYY-MM-DD delta releases instead of NNNN convert to YYYY-MM-DD delta releases instead of NNNN
    	 ratz.c: fix -m for paths containing \f\n\r\v
    01-10-16 ratz.c: _SEA_* => SEAR_*
    	 ratz.c: preserve stdin for sear_exec()
    	 ratz.c: add recursive sear_rm_r() to sear_exec() tmp dir cleanup
    01-10-10 add mam_cc_SHELLMAGIC add nfs wakeup call to admin to avoid stale file handles
    01-10-04 cc.darwin.ppc: -flat_namespace is not longer the default (huh)
    01-10-01 package make: prepend $INSTALLROOT/bin/ok to PATH
    	 package read: save cpy of bin/package when reading the INIT package allow cc path with optional arguments
    01-09-24 Makefile, add $INSTALLROOT/bin/.paths initialization
    01-09-19 add recurse to list.package.* bootstrap build nmake with _BLD_STATIC for _WIN32
    01-09-11 ratz.c: add _SEA_SKIP & _SEA_COMMAND for self extracting archives
    01-09-07 fix output capture to not generate files names with spaces
    01-09-07 fix delta release number search
    01-08-11 handle single gz executable packages (e.g., for ksh) fix package install to require nmake only if no *.sum drop ancient menu and prompt actions; check ./hdr.h clash
    01-07-17 package: fix use cross compile test to generate files in /tmp
    01-06-27 ratz: handle hard and soft links if possible
    01-06-07 Makefile: fix :MAPLIB: for sco
    01-05-31 add add -x crosstype to run crossexec exp test now handles pass{}end fail{}end yes{}end no{}end add package host canon external-host-type-name fix `use USER' lookup for shells that support ~USER
    	 cc.*: add -dumpmachine to dump target HOSTTYPE
    01-05-18 drop $HOME/tmp/ debug trace -- oops
    01-05-01 mamake.c: scan() now handles :PACKAGE: foo:command
    01-04-26 *.sh: expand [a-z][A-Z][0-9] for non-contiguous character codes fix run *.sh for shells that don't $* across . command
    	 cc.mvs.390: recode for /bin/sh
    01-04-25 include non cc-g variants by default *[._]* => *?[_.]* for mvs.390 /bin/sh
    01-04-24 no tests for VARIANT=="DLL"
    01-04-22, tarball text members are ascii encoded
    01-04-18 allow package name to be the same as one of its components
             cc.mvs.390: handle .C .cpp .cxx
             cc.mvs.390: compensate for -o that does not overwrite
    01-04-01 regress: fix SAME that just skipped it -- we should regress regress!
    	 iffe: fix bug that didn't emit _hdr_foo for internal hdr tests
    	 iffe: fix lcl bug for cc -E that doesn't emit line syncs
    	 ratz: add ascii=>ebcdic conversion for text archive members
    	 mamake: fix buffer overlap bug that clobbered the probe file path
    01-03-17 iffe: handle : separator as first arg
    01-03-15 mamake.c,ratz.c,release.c: add <stdlib.h> and <string.h>
    01-02-26 fix bug that omitted runtime #define for `mac' op
    01-02-22 handle SF_CLOSE clash in <sfio.h>
    01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
    	 C+probe: quote "$cc" when its an argument!
    	 mamake: execute actions with $SHELL, ignored signals back to default nmake check error output to /dev/null fix INIT a.out updates for knr cc package list now handles large tgz dirs *-ok executables moved to ok/* for *.dll systems change "exec >&-" to "exec >/dev/null" else linux mkdir fails!
    	 mamake: handle `bind -lx [dontcare]'
    01-02-12 ratz.c: fix _PACKAGE_ast includes $HOSTTYPE env overrides if $PACKAGEROOT/arch/$HOSTTYPE/ $CC ^HOSTTYPE=[A-Za-z_0-9.]*$ overrides HOSTTYPE fix dat code that used previous $tmp.exe fix dat code for _DLL imports
    01-02-09 add copy() for shells with the dissappearing here doc bug
    01-02-08 Makefile: guard against null $(CC.HOSTTYPE)
    01-02-06 Makefile: separate out cc,ld,ldd workarounds (so they will be packaged)
    01-02-02 fix package use for $INSTALLROOT != */$HOSTTYPE create intermediate recursion makefiles when needed add $SECONDS to the DEBUG trace prompt
    01-01-01 ratz.c: #ifdef for uwin ncc, check PACKAGE_PATH for local installations add psrinfo for osf.alpha host cpu change pax --meter probe; some hang on /dev/tty fix `install flat ARCH'
    	 mamake: eliminate loops from scan order
    	 C+probe: add probe_verbose -V for aix cc=xlc, add list refs to top-level licenses only add local link table to change log html
    00-12-25 `no package archives' is a hard error, duh reorder host type logic for lame shells
    	 mamake.c: getcwd => getwd for NeXT -- how about posix==default guys really gross workaround for NeXT -lposix stdout null's handle cc -E that insists on compiling
    00-12-15 ancient sh function call blows $*; call only when $# == 0
    	 *.sh: `getopts 2>/dev/null` => `(getopts)2>/dev/null` for ancient sh fix LD_LIBRARY*_PATH initialization add for _POSIX_SOURCE and linker multiply defined syms
    00-12-12 ratz: add --meter a few VPATH fixes
    	 Makefile: don't override *.mips* cc if -version not accepted
    00-12-11 *.inx now contains name=value
    00-12-07 handle PC netscape . => _ pathname mangle .tar.gz => .tgz
    00-11-27 add checklicense() to do license checks at read time change component list from preformat to table
    00-10-31 *.pkg must assert closure add cc- variants to list.package.binary omit dups from package list invalid arg gives one line Usage relax checkaout checks for non-owners package use sets NPROC if not already set or [01]
    	 proto.c: add $(INSTALLROOT)/include/ast hack
    00-10-26 add .SOURCE rhs to :WWWPAGE:
    00-10-25 package: fix install add list.install
    00-10-22 regress: fix VIEW to skip empty dirs
    00-10-19 $(PACKAGEROOT)/bin/nmake => $(PACKAGEROOT)/bin/manmake
    	 iffe: validate #define identifiers
    00-10-18 C+probe: mac os10 additions
    	 package: add DYLD_LIBRARY_PATH initialization
    	 add ldd.$(CC.HOSTTYPE)
    00-10-01 iffe: handle -I* -L* options
    00-09-21 mamake: add libxxx and xxx to makefile ordered prereqs
    00-09-19 C+probe: add probe_longlong
    00-09-11 package: drop manmake and $PACKAGEROOT/bin/nmake
    00-09-08 iffe: verfiy that $cc is a C compiler
    00-06-14 mamprobe: fix win32.* probe
    	 mamake: fix bug that used lower view path for generation
    	 package: don't clobber $PACKAGEROOT/bin/nmake
    00-06-01 C+probe: fix stdinclude *again*
    	 package: fix write delta source to use default pax format
    	 package: add disambiguating bias for sgi.mips3 over sgi.mips4 fix for directory content packages lib ast-locale
    00-05-01 iffe: fix invalid _LIB_ macro identifier
    00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude
    00-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
    00-03-17 package: all archives are .tgz for binary download
    	 package: $(PACKAGEROOT)/LICENSES/* in source and binary archives
    	 package: implement install and verify actions
    	 iffe: add exp, pth file dir ..., fix lib - -lfoo, fix lib - - -la -lb
    	 iffe: -L* must affect LD_LIBRARY* hacks for .exe tests -- yuk add *.pkg :INDEX:
    00-03-07 package: add admin action
    00-03-06 makefile: install optional make probe override script C+make+probe.lcl
    00-02-14 --- release 1.0 ---
    	 ratz: treat "foo/" as a dir, not a regular file
    	 package: clarify source and binary installation instructions
    	 package: fix so binary packages can install without cc
    	 package: "ratz" now a non-archive package (the only one) for bootstrap
    	 package: handle VPATH=a:b arg "ratz" package adjustments
    	 Makefile: use :PACKAGE_INIT: to support binary INIT packages add :WWWALL:
    	 C.probe: fix .so check that let .dll slip through
    	 iffe: fix config sh var assignment for HAVE_member_IN_struct
    	 iffe: fix config sh var assignment for symbol_DECLARED
    	 package: delay PATH export until dll hack exports complete
    	 package: don't forget binary package $(INSTALLROOT)/lib(32|64)
    	 package: add delta change log for source packages
    00-02-10 mamprobe: add mam_cc_DLLBIG
    	 package: fix spelling typos
    	 package: add html help output beef up source and binary help => html
    00-02-08 package: mkdir man/man[138] in the new arch to cover MAM bug
    00-01-28 package,release: add -rcount to release
    	 package: fix linux "host cpu" and "host rating"
    	 package: copy *.lic to $PACKAGEBIN for "make" and "write binary"
    	 package: fix 'release change log' case match
    00-01-24 package: add copyright action
    	 mamprobe: add -D_BLD_DLL to mam_cc_DLL
    00-01-11 package: tsort for package write
    	 package: early verification that $CC works
    	 package: add non-interactive command arg for use action
    	 proto: fix -C intermediate mkdir()
    	 mamprobe: unixware.i386 ksh workaround
    	 C.probe: move hosttype to C.probe (with unixware.i386 workaround) fix mm2html option quoting add don't force static=1; grab dll's instead
    	 *.sh: fix getopts test to handle botched implementations like osf.alpha fix read -r test
    99-12-25 iffe: tweak verbose messages
    	 iffe: hand code non-optget getopts parse
    	 iffe: fix bash quoting bug again
    	 iffe: do test -w . after option parse
    	 package: fix PACKAGEROOT search
    99-11-19 --- release 0.2 ---
    99-11-19 first working package & friends
    99-10-31 change from lib0ast to INIT; add MAM and package bootstrap
    	 hostinfo: gobbled by package
    99-10-01 iffe: add --config, yes{...}end no{...}end, fix read -r workaround
    99-09-27 iffe: add --all --verbose, --* set options
    99-09-22 regress: -v disables long line truncation
    99-09-11 WWWDIR and MM2HTMLINFO are now lists searched in $(HOME)
    99-08-11 hostinfo: fix type sgi.mips4
    99-06-24 add
    99-06-08 ${TMPDIR:-/tmp}
    99-06-07 add
    99-06-01 iffe: add `siz type' for _siz_type == sizeof(type)
    99-05-11 hostinfo,iffe,regress,use: long options
    99-05-01 C.probe: fix over aggressive stdinclude, e.g., /usr/include/machine
    99-04-01 hostinfo: sgi.mips? -o32 and -n32 checks
    	 iffe: check that . is writable
    99-03-17 hostinfo: fix for cc not found
    	 dl.c,hello.c,m.c: headers in conditionals to force .DONTCARE
    	 C.probe: extra check for include dirs pulled in by <sys/types.h>
    99-03-03 regress: add `UNIT - ...' for extra args
    	 Makefile: add (_hosttype_) prereq for cc
    99-01-23 hostinfo: tweak rating, use /proc/cpuinfo if there
    99-01-11 C.probe: shlib before lib, /usr before /
    98-12-25 iffe: work around win32.alpha intrinsic clash with -O
    98-11-11 regress: fix UNIT PATH lookup
    98-11-01 regress: add PROG
    98-10-01 hostinfo: add unixware.*
    	 use: export PACKAGE_*
    98-08-11 C.probe: add /usr/include check (for sco CC)
    	 hostinfo: handle uwin uname update
    98-05-01 regress: fix bug sometimes didn't list last test
    98-04-01 hostinfo: add cc path arg
    	 hostinfo: now works with /bin/sh
    	 Makefile: strengthed -lm probe
    98-01-23 Makefile: check for -ldl -lm
    	 C.probe: handle gcc -v -E phony include dirs
    	 iffe: fix lcl by dropping sort -u -- we need the real first
    	 iffe: `mem x' to test if x is a non-opaque struct
    98-01-11 $(INSTALLROOT)/lib32 for sgi.mips3
    	 $(INSTALLROOT)/lib64 for sgi.mips4
    98-01-01 cc.sgi.mips*: turn off ld library multiply defined
    97-10-11 regress: add VIEW function for locating data
    97-10-01 Makefile: -ldl test moved to libdll Makefile
    97-08-11 regress: add MOVE
    	 regress: add SAME
    	 regress: use getopts
    	 regress: `EXEC' repeats previous test
    97-07-17 use: tweak PATH and LIBPATH bootstrap order
    	 iffe: fix lcl bug that botched pathnames with embedded spaces
    97-06-12 iffe: add npt `needs prototype' test
    97-05-09 hostinfo: mvs.* => mvs.390
    	 Makefile: cc.$(_hosttype_) workaround installed here
    	 iffe: fix nolink{ ... }end
    	 iffe: add [no]static{ ... }end for static link test
    	 C.probe: _probe_PATH => _probe_export which must be eval'd
    97-04-01 use: _RLD_ROOT set too
    97-03-17 mm2html: changed inner loop
    	 mm2html: handle .if|.ie|.el, .so
    	 mm2html: handle different man styles
    	 mm2html: differentiate mm/man in some non-obvious cases
    	 hostinfo: r5000 is not mips4
    97-02-14 hostinfo: validate type with cc
    96-12-25 C.probe: uwin tweaks
    	 iffe: use `...` instead of $(...) for alpha /bin/sh
    	 iffe: fix `typ' divide by 0
    	 iffe: `lcl' now drops X: prefix
    	 iffe: +l* -> -l*
    	 iffe: eval around ${...#%...} for bsd /bin/sh
    	 use: add sgi.mips LD_LIBRARY<abi>_PATH variants
    	 use: add -e to list exports
    	 iffe: lcl leaves leading [a-zA-Z]: for dos
    	 iffe: fix no{link|output|execute} logic
    	 C.probe: don't automatically add /usr/include for non-hosted compilers
    	 C.probe: don't automatically place /usr/include last
    	 C.probe: check gcc style -v -E for stdinclude usrinclude
    96-11-28 iffe: check BASH_VERSION for IFS botch
    	 iffe: typ only if sizeof(long xxx) != sizeof(xxx)
    	 hostinfo: fix sgi.mips[234] tests
    	 hostinfo: fix ncr.i386 tests
    96-10-31 iffe: work around old bsh here doc bug by running separate sh
    96-10-11 iffe: *.iffe and *.iff for iffe src files
    	 hostinfo: tighten sgi.mips cpu type check
    96-10-01 C.probe: add probe_libdir to catch alpha /usr/shlib
    96-09-17 iffe: fix typ bug that failed for single id types!
    96-08-31 hostinfo: handle recent sgi hinv cpu changes
    96-07-17 make sure sizeof(long xxx)>sizeof(xxx) for typ
    96-05-09 C.probe: drop multiple / in stdinclude
    96-02-29 use: package root must have bin and lib subdir
    	 mm2html: add
    	 C.probe: probe_members += -whole-archive for gcc
    	 iffe: add + fix the blasted `...'...\\...'...`
    96-01-31 use: add pkg dir
    	 hostinfo: add tandem
    96-01-01 hostinfo: windows_nt|windows[0-9][0-9] -> win32
    95-11-24 hostinfo: linux-aout.* for non-elf linux
    95-11-11 use: add aix LIBPATH
    95-10-11 hostinfo: no args prints type
    95-08-11 use: add
    95-05-09 save original PATH in _probe_PATH
    	 beef up library dir probe
    95-04-01 use c source suffix if it still preserves the dialect
    	 add hostinfo
    	 add lib/hostinfo/typemap user type map
    	 add sol.sun4 cpu count
    	 fix C.probe to properly handle C/C++ combined compiler drivers
    	 add NeXT to hostinfo
    	 bummer: mach has /usr/bin/hostinfo
    95-03-19 fix dialect executable test
    95-03-19 --- release 0.0 ---
    RELEASE notes for src/cmd/at/RELEASE
    12-02-29 atd.c,atx.c: fix uid/gid sequencing for unix/winix compatibility
    10-06-01 sync with ast api 20100601
    10-03-19 atd.c,atx.c: each job in separate session
    06-10-11 add sfstruse() error checks
    06-09-19 atd.c: sysconf() => astconf()
    06-05-17 handle empty or nonexistent crontab
    05-06-29 fix (...) => @(...) syntax error
    02-02-14 atd: add strdup(argv[1]) to workaround argv[1]=>0 mystery
    01-06-18 crontab: clarify the command<=>job relationship
    01-03-28 atd: fix log file rollover infinite loop
    01-02-14 atd: monitor daemon and restart if it dies
    01-01-01 atd: add actual and expected info to atx log messages
    00-09-28 crontab: update USAGE
    00-06-16 atd,atx: use base 36 instead of 64 in job names (now just lower case)
    00-05-22 crontab: clarify crontab jobs w.r.t at(1)
    00-05-09 atd: ": LABEL; command" sets job label to LABEL
    	 atd: roll over log file to AT_LOG_FILE.old each month
    00-03-14 at,atd: add at.allow and at.deny checks; tweak uwin verifcations
    00-01-22 --- release 1.2 ---
    00-01-22 crontab: fix getopts check
    99-10-11 at,atd: fix job dictionary bugs
    99-08-11 at: fix usage for at+batch
    	 at.h: add AT_STRICT
    99-06-23 atd: fix job queue handle lookup that dropped jobs
    99-06-23 --- release 1.1 ---
    99-05-09 tweak uwin FAT checks -- how do you get FAT security?
    	 at,batch,crontab: long options
    99-04-01 "..." path vars
    	 the official off-by-one bug of the millenium
    98-07-17 fix bad scanf base 64 format
    98-02-14 get it working
    	 add -A for admin commands (all entries, all queues)
    97-11-11 atd: use csread(CS_RESTART) to avoid SIGCHLD interrupts
    	 atd: add state.atxd in.atxd code for systems with incomplete chmod u+s
    97-10-31 fix `at date ...' arg parse bug
    96-05-24 --- release 1.0 ---
    RELEASE notes for src/cmd/builtin/RELEASE
    12-05-31 od,tr: errno!=EPIPE => !ERROR_PIPE(errno)
    12-02-28 pty.c: change --verbose[=level] to --debug=level
    12-02-11 what.c: fix boyer moore cut n paste bug -- thanks werner
    12-01-26 pty.c: fix --man docs
    10-04-22 dlls.c: fix --path to only list the path -- doh
    10-11-03 od.c: use is[w]print() for printable char check
    10-10-19 od.c: speed up inner loop
    10-09-15 od.c: fix (unsigned char*) (char*) mismatches
    10-09-08 tr.c: handle tr abc '[%*]xyz'
    10-08-04 dlls.c: add -l to list plugin version stamps
    10-06-21 pty.c: add 4 sec timeout for initial handshake -- fix me!!
    10-06-01 od.c: add -c locale checks (and undo some fmtesc() work), add ast -tC1
    10-04-12 pty: fix sfpoll() result read/write bug
    10-04-12 cat.rt: add -v tests
    10-04-11 cmp.rt: add
    10-04-01 pty: add --tty='stty-settings'
    10-03-23 tail.tst: add -f large initial offset test
    10-03-19 pty: add --dialogue
    10-03-15 pty: fix select() fd management
    10-03-07 tail.tst: add partial line -f test
    10-03-05 mktemp.rt: add
    09-09-24 uuencode,uudecode: use uumeth(0) to generate usage method list
    09-08-18 add fifo tests
    09-08-01 join.tst: TEST 19 for empty field defref bug
    09-05-24 tail.tst: add r combinations
    09-03-31 features/pty,Makefile: add pty.h and -lutil refs for linux -- great, another util library
    09-02-14 join.tst: add a VSC test
    09-02-14 tail.tst: add some VSC tests
    09-02-02 mktemp: add
    09-02-02 tail.tst: update for -b[blocks], +cl, -cl
    09-01-30 pty.c: add <ast_time.h> (for fd_set!! on mvs.390)
    09-01-12 tr.tst: add tests for trailing '-' in source and/or destination sets
    09-01-03 mkfifo.rt: add
    08-10-15 rm.rt: add to test rm -f x x
    08-02-14 look.c: fix operand parse / diagnostic bugs
    08-01-30 expr.tst: add substr * 1 * tests
    07-09-21 cksum.tst: drop sha1, add -r compatibility
    07-02-23 cksum.tst: add -x tw tests
    07-02-07 cksum: handle std => libcmd move
    06-12-12 chmod.rt,mkdir.rt: add absolute mode tests
    06-11-15 cp.tst,ln.tst,mv.tst: add initial regression tests
    06-10-31 global edit to eliminate most non-const static data
    06-10-11 add sfstruse() error checks
    06-08-25 uniq.rt: add initial regression tests
    06-08-23 mkdir.tst: add -p final dir mode tests
    06-07-20 pty.c: add
    06-06-25 chmod.rt,mkdir.rt: add initial regression tests
    06-06-24 dlls.c: add --containing
    06-01-30 od.c: add -tb binary character format
    05-12-06 od.c: handle od() static split buffer overflow
    05-08-07 tr.c: fix a-b- and a-b-c
    05-03-07 od.c: handle -t ...z for --printable
    04-10-01 fmt.tst: update for --optget
    04-09-30 od.c: -v does not accept an offset operand
    04-08-08 uuencode.c: fix -x docs, add -b == --method=binhex
    04-07-22 look.c: access() => eaccess()
    04-07-01 pr.c: add -c and -v via sfio input discipline
    04-05-27 expr.tst: add string and `:' operator tests
    04-04-14 tr.c: char* => unsigned char* to avoid sign extension
    03-10-11 od.c: add --map=ccode, -tm, generate doc from tables
    03-09-18 tail.tst: add header and timeout tests
    03-07-28 expr.tst: add
    03-07-14 fmt.tst: add
    03-06-10 who.c: ctime() arg must be time_t* (linux.s390-64)
    03-05-21 asa.c,asa.tst: add
    03-05-15 join.tst: add -v2 tests
    03-04-05 nl.tst: generate test data file
    03-02-24 nl.c,nl.tst: add
    03-02-14 od.c,tr.c: no error message for EPIPE
    03-02-11 dlls.c: add Dllinfo_t.env
    02-11-14 what.c: stop on < to catch html/xml
    	 update cmdinit() calls for 4th flag arg
    02-09-11 dlls.c: add --base & --path
    02-09-05 eliminate case ignorant file name clashes (for mac os X)
    02-08-30 dlls.c: exit 1 if no matching dll found
    02-08-28 od.c: check and report write errors -- ouch
    	 dlls.c: add --info
    02-08-23 dlls.c: add
    02-08-19 chown.tst: add chow regression tests
    02-04-15 look.c: add look.tst, fix hang
    02-03-24 uude…