Changes since 2001-10-31 follow.

:::::::: ksh93 ::::::::

02-02-18  --- Release ksh93m+  ---
02-02-18  A bug in which lines beginning with a # were deleted from here
	  documents when the here-document delimiter was followed by
	  a comment has been fixed.
02-12-06  An optimization bug in which ${!x[@]) was treated as invariant in
	  a for loop has been fixed.
02-02-06  A bug in which the ERR trap is not cleared for a script invoked
	  by name from within a function has been fixed.
02-01-08  A bug in which a shell script executed from within a subshell
	  could cause this script to have an invalid pointer leading
	  to a memory fault has been fixed. 
02-01-07  Added here documents of the form <<< word (as per zsh) which
	  is equivalent to << delimordelim.
02-01-07  A bug in which the first word of a compound assignment,
	  x=(word ...), was treated as a reserved word has been fixed.
02-01-07  A bug in the handling of  when noglob was enabled and a
	  substitution of the form ${word op pattern} occured in the
	  same word has been fixed.
02-01-07  A compilation option, CMDLIB_BLTIN in the file OPTION, has
	  been added.  When this options is set, all commands implemented
	  in libcmd become shell builtin commands by default.
02-01-07  A bug in which builtin foo, where foo is already a builtin
	  would result in the builtin foo getting removed has been fixed. 
02-01-07  A bug which the shell executed a command found in the current
	  directory when PATH have no valid directories has been fixed.
01-11-28  The value of $? was not being set when called with exit.
01-11-28  If the last command was of the form (...) and a trap on EXIT or
	  ERR was set, and the command inside () modifed the trap, then
	  the original trap wasn't executed.
01-11-26  The value for 0 is now precdeded by the base number when
	  the base was not 10.
01-11-26  The default has compilation mode has been changes so that
	  viraw mode will always be on.

:::::::: pax ::::::::

01-12-07 pax: fix --meter to retain paths containing " -- "
01-12-06 pax: fix --meter to stop at 100% (don't tell coach)

:::::::: html ::::::::

02-03-15 mm2html: add LC_NUMERIC=C for floating point constants
02-02-14 mm2html: shorten indentation
02-01-16 mm2html: handle .so and .xx in getline
	 mm2html: .sn and .so look in dir of including file

:::::::: proto ::::::::

02-03-12 proto.c: add type=free
02-01-07 proto.tst: add TEST 05 -- no fix yet
01-12-12 fix rc ICON path  escapes

:::::::: bzip ::::::::

02-02-14 bzip2.c: fix uwin core dump
02-01-24 bzip2.c: use _PACKAGE_ast touch(3) instead of <utime.h>
	 bzip2.c: fix strstr() loop

:::::::: tests ::::::::

02-03-14 opt.tst: update <.>..< >--keys tests
02-02-02 sfio/(tclose|ttpopenrw|ttell).c: add alarm to handle hung coproc
02-01-27 sfio/terror.h: handle non-idempotent <varargs.h>
02-01-12 date.dat,date2k.dat: fix EST/EDT %z tests
01-12-18 date.dat,datey2k.dat: update for %z change from SHH to SHHMM
	 date.dat: add YYYY/MM/DD tests
01-11-24 opt.tst: update --?+SECTION tests

:::::::: 3d ::::::::

01-11-26 pathreal.c: empty path is an error
01-11-16 ftruncate3d.c,truncate3d.c: use lseek3d indirection via sysfunc()

:::::::: coshell ::::::::

01-12-12 resolve SETSHELL local vs. global conflict -- its both
	 ignore attr now really ignores host -- duh
01-12-11 add global maxidle=0 to ignore idle
	 split readonly and user settable values in `g' command output

:::::::: cpp ::::::::

02-03-15 cpp.tst: add TEST 14 for libpp/ppproto.c memory fault fix

:::::::: msgcc ::::::::

02-03-11 msgcc: fix merge replacement threshhold logic
	 msggen: convert { \a \b < >\r \v } back to C escapes
	 msgcpp: set pp:modern
02-02-14 msggen: add -f to list printf format signatures

:::::::: nmake ::::::::

02-03-14 variable.c: add label to --mam "setv" 
02-02-14 makerules: add and use CMPFLAGS
	 makerules: add win32 ar I flag only when installing .a
	 makerules: iffe { CC CCFLAGS LDFLAGS } => { IFFECC ... }
	 scan.c,variable.c: .SCAN.IGNORE must ignore state prereqs too
	 main.c: fix final message sequence for .ERROR intercept
	 state.c,variable.c: fix $(?x) when state(x) exists but rule(x) doesn't
	 makerules: add .SHARED.UNIQ. to .COMMAND.o (required by sgi.mips3)
02-02-02 makerules: mark :VARIANT: target .SPECIAL
	 makerules: use STDED & STDEDFLAGS to differentiate from ED=vi
	 makerules: drop ED & EDFLAGS add STD* probe with possible execrate(1)
	 makerules: inhibit lib/lib closure for CC.DIALECT==CLOSURE
	 probe.win32: add CC.DIALECT CLOSURE to inhibit .lib closure
	 option.c: -S => -S0
	 makerules: fixed .SHARED.UNIQ. to ignore .MULTIPLE -- duh
02-02-01 makerules: fix .IFFE.REF. for \rsystems -- barf
02-01-22 makerules: ARFLAGS += I for CC.DLL on win32.*
02-01-15 makerules: fix $(CC.PREFIX.DYNAMIC) logic in .BIND.-l%
	 makerules: mark $(CC.SUFFIX.DYNAMIC) .SCAN.IGNORE
02-01-11 makerules: fix $(CC.SUFFIX.LD) prereqs for :LIBRARY: dlls
	 make.probe: add .ign to cygwin CC.SUFFIX.LD
02-01-10 makerules: add proto -e arg to lhs of :INSTALLPROTO:
	 probe.win32: add .ign to CC.SUFFIX.LD
02-01-08 makerules: initialize HOSTCC to $(CC)
02-01-07 makerules: fix .LIBRARY.STATIC.* binding
02-01-04 makerules: .REQUIRE.-l% includes of lib+prereqs before bind
01-12-26 makerules: .REQUIRE.-l% includes if it exists
01-12-24 add CC.REQUIRE.Xaw3d
01-12-20 makerules: fix .RECURSE.INIT to use only first match of $(MAKEFILES)
01-12-19 makerules: foo :VARIANT: ... implies _BLD_foo==implies _BLD_foo==1
01-12-18 makerules: sync .SOURCE.a between .BIND* and .PACKAGE* (again!)
01-12-15 command.c: fix bug that discarded a running job twice
01-11-30 command.c: exit 128 silently marks job error but continues
01-11-25 command.c: add .JOBDONE(target status user sys) .FUNCTION

:::::::: probe ::::::::

02-01-30 probe.c: add probe.ini check to match libast/pathprobe()
01-12-03 probe.c: return HOME relative path if readonly/non-suid fs

:::::::: at ::::::::

02-02-14 atd: add strdup(argv[1]) to workaround argv[1]=>0 mystery

:::::::: builtin ::::::::

02-01-24 look.c: drop <strings.h> ref
01-11-26 what.c: fix doc type, add --matched

:::::::: mailx ::::::::

02-03-17 spam.c: add spamtest=bitmask: 0x0001: content-type==text/html
02-01-31 data.c: clarify imap var docs
02-01-30 local.iffe: add to handle no <termios.h> and ftruncate()
02-01-24 ifdef { SIGTSTP SIGTTOU SIGTTIN }
02-01-16 properly update References: in replies

:::::::: pack ::::::::

2002-03-09 pack,unpack: diagnostic if no file operands

:::::::: pzip ::::::::

02-02-14 Makefile: add explicit -lz references

:::::::: re ::::::::

02-02-14 grep: add -P,--perl-regexp == REG_EXTENDED|REG_LENIENT
02-02-12 ed.c: add \r hacks
02-02-02 sed0.c: add \r to blank() set
01-12-06 grep.c: add -b,--highlight to highlight matched text on ansi terms
01-11-20 minimal.dat: add tests for regnexec() REG_MINIMAL char class bug

:::::::: std ::::::::

02-02-14 touch.c: explicit epoch dates (0) are different from now (also 0)
	 locale.c: don't output on unknown keyword
02-02-11 ps.c: validate input pid strings
02-02-04 ps.c: --format subformat => heading
02-02-02 pss.c: handle __CYGWIN__ bug where sizeof(TTY_CONSOLE)>sizeof(dev_t)
02-01-31 pss.c: add aix getprocs()
	 ps.c: ntpid=>npid, ntpid now a deprecated alias
02-01-28 ls: fix devmajor/devminor to use st_rdev where appropriate
02-01-22 ps: fix `not available' warning to attempt subsequent fields
02-01-21 ps: recode to use pss.[ch] process status stream interface
02-01-06 touch: clarify --time doc

:::::::: tksh ::::::::

02-02-14 Makefile: shell:static because dll is -g => fix this situation

:::::::: tw ::::::::

02-01-16 tw: add symlink to EXPRESSIONS doc

:::::::: libast ::::::::

02-03-17 features/stdio: hack around g++ 3.* clashes
02-03-14 misc/optget.c: fix --keys to not expand inline <.>..\f
02-03-12 port/astlicense.c: add type=free
	 path/pathaccess.c: sibling ".." search ignores relative dirs
	 sfio/sfvscanf.c: sfstrtof get() must return 0 on eof
02-03-11 path/pathexists.c: check path by pairs checking {ENOTDIR,ENOENT}
02-02-14 features/float: copy local min/max macros to avoid printf roundoff
	 features/wchar: include <ast_common.h>, not <ast_std.h>
	 misc/magic.c: match[]=>matches[] to fix K&R match() macro conflict
	 include/vmalloc.h: include <stdlib.h> for !_PACKAGE_ast
	 uwin/mini.sym: add sprintf (now required by features/common)
	 regex/regnexec.c: truncate wide chars for <ctype.h> functions
	 Makefile: fix MAM ast_common.h sequencing bug by making it first
	 cdt/dthash.c: fix DT_DELETE memory leak (DT_DETACH typo)
	 cdt/dthash.c: fix DT_DELETE double free (dt->data->here typo)
	 regex/regcomp.c: fix recomb() to reject RE with backref
	 features/iffeio: explicitly generate stdio.lcl
	 stdio: add {fcloseall,f(get|put)s_unlocked,fmemopen,getdelim,getline}
	 tmmake,tmtime: allow negative time_t if native localtime/gmtime do
	 tmdate: allow years before 1969
	 fmtfmt: add
	 Makefile: add std/*.h for std header iffe overrides
	 comp/iconv.c: fix non-C win32 sfreserve() loop
02-02-11 features/common: separate long long / long double tests
	 features/common: verify printf handles long long / long double
02-02-02 include/ast_std.h,sfio/sfhdr.h: drop _hdr_locale tests -- always on now
	 include/ast_std.h: trust _UWIN <unistd.h>
02-01-31 port/mnt.c: add aix options field
02-01-30 comp/strstr.c: add for ancient s5
	 stdio/_flsbuf.c: only on systems that transfer to native (e.g., uwin)
	 string/strtoi.h: cat min/max error return values
02-01-28 features/tty: add cf[gs]et[io]speed macros for <termio.h>
	 comp/rename.c: punt to (ancient) /usr/lib/mv_dir on EISDIR
02-01-24 sigcrit.c: fix SIGCLD!=SIGCHLD interrupt loop
	 sfvprintf.c: convert fast io macros to functions for uts.390 cc
	 string/strtoi.h: drop #pragma prototyped for standalone sfio
	 sfdcsubstr.c: rename from sfdcsubstream.c for 14 char fs
02-01-22 execlp,execvp,execvpe,spawnlp,spawnvp,spawnvpe: fix __EXPORT__
	 spawnlp,spawnve,spawnvp,spawnvpe: handle ms mode arg -- barf
	 sftable.c: ifdef hacks for _WIN32&_ALPHA_ fp exception
	 _stdfun.c: add _UWIN&_ALPHA_ iob map
02-01-18 sfio/sfstrtof.h: drop #pragma prototyped for standalone sfio
02-01-17 features/hdr: don't include <stddef.h> after it doesn't check out!
02-01-16 misc/magic.c: add version type for YYYYMMDD or [a.][b.]c.d
	 misc/magic.c: recode mime %s parse -- sensible and no buffer overflow
02-01-15 misc/,magicid.h: add generic binary magic number and header
02-01-12 tm/tmlocale.c: override win32 default date for {C,POSIX,en} locales
	 comp/omitted.c: fix cygwin workaround logic bugs
02-01-09 stdio/fseeko.c,ftello.c: add from UNIX98
02-01-08 comp/ use $cc instead of cc
02-01-07 string/strlcat.c,string/strlcpy.c: add bsd api
01-12-18 comp/ fix LFS_CFLAGS default for sun _CS_LFS_CFLAGS botch
	 features/common: add hdr stdarg test
	 tm/tmdate.c: handle YYYY/MM/DD
01-12-10 misc/ add generic 0x00010203 binary magic
01-12-03 path/pathprobe.c: return HOME relative path if readonly/non-suid fs
01-11-30 misc/optget.c: add simple cache for repeat offenders (like ksh read)
	 sfio/sfhdr.h: preserve errno across SFMMSEQON-SFMMSEQOFF
01-11-29 fix GIF version number listing
01-11-28 string/fmtbase.c: p!=0 => base always included in output
01-11-26 misc/fts.c: empty path is an error
01-11-14 misc/optget.c: fix --?+SECTION queries to include paragraphs
01-11-20 regex/regnexec.c: fix REG_MINIMAL character class match bug
01-11-19 features/lib: retain _lib_confstr for all solaris releases
01-11-16 comp/setlocale.c: fix !_lib_setlocale typo

:::::::: libcmd ::::::::

02-01-24 stty.c: ifdef a few more macros for uts (yes, its still running)
01-12-14 date.c: clarify %z doc

:::::::: libdll ::::::::

02-01-11 features/dll: include <dlfcn.h> only if _hdr_dlfcn&&_lib_dlopen

:::::::: libbz ::::::::

02-02-14 blocksort.c: drop -O for msvc
02-01-24 bzhdr.h: rename from bzlib_private.h for 14 char fs

:::::::: libz ::::::::

02-03-11 infblock.c: apply double free patch
02-03-09 gzio.c: add stream->fatal to mark fatal errors previously ignored
	 sfdcgzip.c: fix exception return values and mark SF_ERROR on fatal
02-01-30 minigzip.c: error() => mgzerror() to avoid ancient ld dup sym error
	 minigzip.c: [uU] in executable base name => gunzip, otherwise gzip

:::::::: libcoshell ::::::::

02-01-24 coopen.c: fix small memory leak

:::::::: libcs ::::::::

01-12-12 cssfd: CS_POLL_CLOSE now close()'s if not dropped -- double duh
	 csstat: change down test to avoid unsigned long overflow

:::::::: libpp ::::::::

02-03-15 ppproto.c: fix cpp pp:compatibility double line sync memory fault
02-03-11 pplex.c: add pp:modern to emit \a \v instead of octal forms
02-02-14 ppargs.c: fix -D or -U as last arg core dump
02-01-24 pplib.h: use vmalloc(Vmregion) if _std_malloc
02-01-23 probe.win32: add more msvc predefined macro candidates
02-01-14 ppproto.c: #pragma prototyped noticed -- has notice comment
02-01-10 ppproto.c: fix PROTO_FORCE|PROTO_PASS bug that disabled PROTO_FORCE
02-01-08 pplex.c: fix HEADEREXPAND|HEADEREXPANDALL logic
01-11-22 pplex.c: add pp:headerexpandall for gcc vs. msvc <...> expand diff
	 pp.probe: add pp:headerexpandall test

:::::::: libcdb ::::::::

02-02-14 Makefiles: add explicit -lz -ldll references

:::::::: libpz ::::::::

02-03-09 pzopen,pzdeflate,pzsync: add fatal error checks
02-02-14 pzopen: disable PZ_UNKNOWN check if PZ_NOPZIP -- duh
02-01-11 pzdeflate: use Sfoff_t for sfmove() return instead of ssize_t

:::::::: libtksh ::::::::

02-03-17  update ksh private assoc array offsets -- should be a function call
02-01-30  compensate for uts.390 lack of header guards for { select.h time.h }

July 28, 2011