diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2012-06-24 22:28:35 +0000 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2012-06-24 22:28:35 +0000 |
commit | 3950ffe2a485479f6561c27364d3d7df5a21d124 (patch) | |
tree | 468c6e14449d1b1e279222ec32f676b0311917d2 /lib | |
download | ksh-upstream.tar.gz |
Imported Upstream version 93u+upstream
Diffstat (limited to 'lib')
-rw-r--r-- | lib/package/INIT.README | 1013 | ||||
-rw-r--r-- | lib/package/INIT.html | 991 | ||||
-rw-r--r-- | lib/package/INIT.pkg | 12 | ||||
-rw-r--r-- | lib/package/INIT.req | 0 | ||||
-rw-r--r-- | lib/package/INIT.ver | 1 | ||||
-rw-r--r-- | lib/package/LICENSES/epl | 221 | ||||
-rw-r--r-- | lib/package/ast-ksh.README | 5212 | ||||
-rw-r--r-- | lib/package/ast-ksh.html | 5346 | ||||
-rw-r--r-- | lib/package/ast-ksh.pkg | 89 | ||||
-rw-r--r-- | lib/package/ast-ksh.req | 0 | ||||
-rw-r--r-- | lib/package/ast-ksh.ver | 1 | ||||
-rw-r--r-- | lib/package/ast.def | 47 | ||||
-rw-r--r-- | lib/package/ast.lic | 5 | ||||
-rw-r--r-- | lib/package/epl.def | 8 | ||||
-rw-r--r-- | lib/package/ksh.pkg | 14 | ||||
-rw-r--r-- | lib/package/ksh.req | 0 | ||||
-rw-r--r-- | lib/package/ksh.ver | 1 | ||||
-rw-r--r-- | lib/package/package.mk | 1537 |
18 files changed, 14498 insertions, 0 deletions
diff --git a/lib/package/INIT.README b/lib/package/INIT.README new file mode 100644 index 0000000..aa6af8b --- /dev/null +++ b/lib/package/INIT.README @@ -0,0 +1,1013 @@ +The INIT package is required by all but the standalone and self +extracting archive packages. It contains the package command, support +scripts, and utilities. The package command installs binary packages, +makes source packages, and generates new package tarballs. + +Source Package Installation Instructions: + + (1) Do not install packages as root/super-user. Although some components may + have setuid executables, few must be owned by root. These are best + changed manually when the security implications are understood. + (2) Choose a package root directory and cd to it. This will be a local work + area for all packages. + (3) These instructions bypass the click to download package links on the + download site. If you already clicked, or if your system does not have + curl(1), hurl(1), lynx(1) or wget(1) then use the alternate instructions + for (3),(4),(5) in plan B below. Plan B installs the hurl(1) + script which works with ksh and modern bash. The top level URL is: + URL=http://www.research.att.com/sw/download + (4) If the bin/package script does not exist then run: + test -d bin || mkdir bin + url=$URL/package + (wget -O bin/package $url||curl -L $url||hurl $url) > bin/package + chmod +x bin/package + (5) Determine the list of package names you want from the download site, then + use the package(1) command to do the actual download: + bin/package authorize "NAME" password "PASSWORD" \ + setup source $URL PACKAGE ... + (Refer to the AUTHORIZATION paragraph on the main download page for + NAME/PASSWORD details.) This downloads the closure of the latest + source package(s); covered and up-to-date packages are not downloaded again unless + package force ... is specified. Package content is verified using md5sum. + If the package root will contain only one architecture then you can install in bin and + lib instead of arch/HOSTTYPE/bin and arch/HOSTTYPE/lib by running this + instead: + bin/package authorize "NAME" password "PASSWORD" \ + flat setup source $URL PACKAGE ... + To update the same packages from the same URL run: + bin/package setup source + (6) Build and install; all generated files are placed under arch/HOSTTYPE + ($INSTALLROOT), where HOSTTYPE is the output of bin/package (with no + arguments.) name=value arguments are supported; CC and debug=1 (compile + with -g instead of -O) are likely candidates. The output is written to + the terminal and captured in $INSTALLROOT/lib/package/gen/make.out: + bin/package make + (7) List make results and interesting errors: + bin/package results + Run the regression tests: + bin/package test + List test results and errors: + bin/package results test + (8) The generated binaries are position independent, i.e., they do not + contain hard-coded paths. However, commands with related files, like + file(1) and nmake(1), require the path of the bin directory to be + exported in PATH. + (9) You can run the binaries directly from the package root, or you can + install them in a public root after you are satisfied with the make and + test actions (requires the AT&T nmake(1) command): + bin/package flat install DIRECTORY PACKAGE + This will install in DIRECTORY/bin and DIRECTORY/lib. If you want to + preserve the arch/HOSTTYPE hierarchy under DIRECTORY then omit the + flat argument. If you don't have nmake(1) then the following will do a + flat install: + cd $INSTALLROOT + cp -p -r bin lib include DIRECTORY + (10) To summarize, after the first time the download, build, and test cycle + for the latest source release is: + bin/package setup source + bin/package make + bin/package test + +Source Package Installation Instructions -- Plan B: + + (3) Create the subdirectory lib/package/tgz and download all package archives + into that directory. + (4) If the bin/package script does not exist then manually read the INIT + source package: + gunzip < lib/package/tgz/INIT.YYYY-MM-DD.tgz | tar xvf - + Note that some browsers automatically unzip downloaded without warning. + If the gunzip fails try: + tar xvf - lib/package/tgz/INIT.YYYY-MM-DD.tgz + If your system does not have tar(1) or gunzip(1) then download the ratz + source package, compile it, and manually read the INIT + source package: + mkdir bin + cp lib/package/tgz/ratz.YYYY-MM-DD.c lib/package/tgz/ratz.c + cc -o bin/ratz lib/package/tgz/ratz.c + bin/ratz -lm < lib/package/tgz/INIT.YYYY-MM-DD.tgz + (5) Read all unread package archive(s): + bin/package read + Both source and binary packages will be read by this step. + +All recorded changes follow. + +:::::::: INIT :::::::: + +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 package.sh: don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH +12-02-29 package.sh: fix ksh vs -lcmd compatibility checks +12-02-23 iffe.sh: checkcc() before checkread() for sensible diagnostics +12-02-14 package.mk: { --clobber --compare --link=lib*.a* } for --mam=static +12-02-14 package.mk: export LICENSEFILEDEFAULT instead of LICENSEFILE +12-02-14 package.sh: handle @(cc|ld).${HOSTTYPE}* intercepts +12-02-07 package.sh: add { clean clobber } actions +12-02-02 regress.sh: fix ulimit -c defaults for --nokeep +12-01-18 regress.sh: add INPUT|OUTPUT|ERROR -e 'filter' to filter before comparison +12-01-21 package.sh: 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 package.sh: add admin make share closure to handle alternate HOSTTYPEs +11-12-13 iffe.sh: add /*<NOSTDIO>*/ test code comment to disable default #include <stdio.h> +11-11-11 C+probe: test for .so before .sl +11-10-26 package.sh: don't forget about *.pkg for admin update +11-10-18 cc.*-icc: update and add more +11-10-11 package.sh: handle package make|view when no source installed +11-09-11 package.sh: count admin '*** termination code' errors +11-08-31 mamake.c: add -e, ignore use recursive prereq timestamps +11-08-29 iffe.sh: add ``set stdio try1.h - try2.h ...'' +11-08-29 iffe.sh: trap EXIT => trap 0 for ancient sh +11-08-11 iffe.sh: handle ancient sort that doesn't have -k +11-06-01 make.probe: add more /lib64 logic +11-05-01 package.sh: fix admin ditto to sync LICENSES too +11-03-25 package.sh: initialize { $SED $TR } before first use! +11-03-21 package.sh: fix vpath probes +11-03-17 iffe.sh: fix cleanup to rm $tmp* instead of $tmp*.* +11-02-24 package.sh: change curl usage to "curl -L ..." +11-02-11 package.sh,C+probe,make.probe,mamprobe.sh: 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 package.sh: 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 iffe.sh: check debug==3 for is_hdr() failure +10-11-22 ditto.sh: fix timing problem between |& and exec &p +10-11-10 package.sh: fix cc cross compile check to use checkcc absolute path +10-10-10 package.sh: 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 package.sh: fix ratz from source logic +10-08-25 package.mk: 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 package.sh: unset makerules *DIR variables in env +10-08-15 package.sh: "make" action now lists some env values +10-08-11 mktest.sh: add "DO command ..." +10-07-27 rt.sh: handle "rt X=Y ..." +10-06-29 ratz.c: non-option sear args passed to sear_exec() +10-06-25 iffe.sh: "api" op chanegd to not do "map-libc" type mappings +10-06-25 package.sh: "force admin ditto" => no ditto --update option +10-06-22 C+probe: handle cc that require .[ci] input for version info +10-06-21 ditto.sh: change default remote access to ssh (about time) +10-06-12 regress.sh: DISGNOSTICS [ 1 | 0 | pattern ] and fix EXIT for all +10-06-09 package.sh: add AT&T to usable nmake check +10-06-06 iffe.sh,iffe.tst: add { api ver } ops +10-04-22 package.sh: update "html binary|source" NAME/PASSWORD info +10-04-15 iffe.sh: don't forget candidate headers for hdr|sys! +10-04-11 WWW.mk: disable man page metarule -- now done by admin-man(1) +10-02-14 package.sh: $CC verification needs $INSTALLROOT/bin in PATH +10-02-11 package.sh: fix package admin make report error count +10-02-02 package.sh: fix write binary bug that did scp on local fs +10-02-02 package.mk: up to date binary targets must still be in PACKAGE.*.lst +10-01-01 package.sh: fix premature $INSTALLROOT/bin during cross compile check +10-01-01 make.probe: handle ['"] in CC.VERSION.STRING +09-12-04 iffe.sh: add "opt name" to check for name in $PACKAGE_OPTIONS +09-11-30 mktest.sh: 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 package.sh: re-order and combine cc checks +09-10-27 C+probe,make.probe,probe.win32: add CC.SUFFIX.DEBUG +09-10-21 iffe.sh,Makefile: test -e is not in ksh88! +09-10-06 iffe.sh: handle cc -E #error with 0 exit status (sgi) +09-10-06 package.sh: stub in ar intercept checks -- not used yet +09-10-06 ar.ibm.risc: add ar intercept because some aix require -Xfoo first!! +09-09-24 regress.sh: 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 package.sh: fix isascii() bug that failed on od(1) trailing space +09-08-20 make.probe: add CC.SHARED.NAME +09-08-20 regress.sh: add { JOB CONTINUE EXITED KILL FIFO } +09-08-11 package.sh: filter lines containing : for package results +09-07-31 make.probe: add CC.AR.ARFLAGS (for aix ar -xany) +09-07-31 package.sh,cc.*: fix -dumpmachine to handle 32/64/* bit options +09-06-24 package.sh: fix admin.db output formatting +09-05-05 package.sh: export dll hackery environment vars +09-05-05 package.sh: 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 iffe.sh: fix output initialization *again* +09-04-28 package.sh: handle admin.db contact field $9 +09-04-15 iffe.sh: add implicit "ini" op to initialize io for subsequent ops +09-03-31 regress.sh: EXPORT before test => global ENVIRON[] +09-03-26 package.sh: test fail pattern is 'fail[es]' +09-03-26 UNIT - ... appends (options) to command line +09-03-19 TEST.mk: x.tst => x only if x is command target +09-03-15 regress.sh: add ${MAIN} for base name of main unit +09-03-10 TEST.mk: add .SOURCE:tests if tests is a dir +09-03-03 regress.sh: allow command line unit to override UNIT +09-03-03 mktest.sh: handle IO == $'\n' +09-02-02 package.sh: delay $INSTALLROOT/bin/.paths generation until mamprobe runs +09-01-30 cc.mvs.390: c89 balks at [ ()] in -Dname="..."! +09-01-27 package.sh: add isascii() to use ratz instead of tar +09-01-20 hurl.sh: add --size=bytes option +09-01-08 TEST.mk: add test.* prereqs, multiple arg lists with :T=*: binding +09-01-03 regress.sh: fix UNIT to allow command line override +09-01-03 mktest.sh: handle TWD +08-12-24 package.sh: fix cross-compile HOSTTYPE logic +08-12-15 package.sh,hurl.sh: handle http codes { 301 302 303 } +08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!! +08-09-30 rt.sh: fix ksh93 regression test signal count +08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input +08-09-24 package.sh: 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 regress.sh: 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 mktest.sh: add --width=width +08-08-05 dbm.req: favor sleepycat ndbm compatibility +08-08-04 C+probe: fix stdlib initialization logic +08-06-24 package.sh: fix $INSTALLROOT/bin/cc intercept time stamp file typo +08-06-20 TEST.mk: make the localyunit before *.rt => *.tst -- doh +08-06-20 mktest.sh: prepend $PWD onto PATH for local units -- doh^2 +08-06-11 regress.sh: fix bug that skipped the last test +08-05-20 regress.sh: add --local to put *.tmp dir in local fs +08-05-05 regress.sh: add IF command ... ELIF command ... ELSE ... FI +08-05-01 package.sh: package test => ulimit -c 0 +08-04-28 regress.sh: fix EXPORT quoting +08-04-28 regress.sh: fix UNIT set check args too +08-04-24 rt.sh: exit code > 256 => signal termination +08-04-10 C+probe: change probe_so order to check .so last (macos ld workaround) +08-04-01 package.sh: handle multiple admin HOSTTYPEs per HOST +08-03-28 C+probe: add C++ #include <iostream> (no extension) dir probes +08-03-17 regress.sh: 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 package.sh: check lib64 for LD_LIBRARY_PATH +08-01-31 iffe.sh: 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 package.sh: fix checksum doc typo +08-01-09 C+probe: add __FUNCTION__ to the undef (don't check) list +07-12-14 iffe.sh: add set nooptimize +07-12-03 package.sh: add LC_ALL=C +07-11-27 package.sh: fix overaggressive *.md5 cleanup +07-11-20 iffe.sh: treat exit status >= 250 as normal error with no signal +07-11-05 package.sh: fix write op error count pattern +07-11-05 package.mk: fix $(~req) .ver binding +07-08-11 probe.win32: add cl.exe setuid workaround, CC.VERSION[.STRING] +07-08-01 package.sh: handle 'package read lcl|tgz' +07-05-08 regress.sh: 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 mktest.sh: defer to systems without 'grep -q' -- sigh +07-04-11 mamprobe.sh: handle $(CC.*) => ${mam_cc_*}, $(...) => ${...} +07-04-11 make.probe: fix CC.PICBIG probe, default { CC.PIC CC.DLL } to BIG +07-04-04 iffe.sh: prepend ${tst}${ext} to each .c probe +07-03-28 package.sh: fix binary tgz architecture type duplication +07-03-28 package.mk: add binary write PACKAGE.$HOSTTYPE.lst +07-03-28 iffe.sh: add -F header to mac test +07-03-23 make.probe: handle file(1) that returns 'archive' for .so +07-03-22 mamprobe.sh: fix STDED probe for implementations that ignore EOF +07-03-11 package.sh: add nocopyright and tst => nocopyright +07-03-11 package.mk: 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 package.sh: fix "admin write binary" logic +07-01-01 iffe.sh: add "cmd" --verbose trace +07-01-01 iffe.sh: 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 package.sh: *.md5 are not tarballs -- doh +06-11-23 iffe.sh: 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 iffe.sh: add status{...} code block +06-10-11 regress.sh: fix DO to handle {...} (time for regress.tst?) +06-10-11 package.sh: handle already gunzip'd *.tgz +06-10-06 iffe.sh: add reference for header content tests +06-09-27 regress.sh: fix UMASK to do DO too (duh) +06-09-22 iffe.sh: 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 package.sh: { cc ld ldd } intercepts check ${HOSTTYPE%.*} too +06-09-08 regress.sh: 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 regress.sh,mktest.sh: add UMASK +06-08-25 regress.sh: add -b,--ignore-space,IGNORESPACE +06-08-25 mktest.sh: add IGNORESPACE +06-08-24 mktest.sh: handle \000 in data +06-08-24 regress.sh: handle -f* for INPUT|OUTPUT|ERROR +06-08-16 package.sh: fix 'install flat' logic +06-08-11 rt.sh: handle style=shell %K date format +06-07-17 ratz.c: fix __MVS__ FAR definition +06-07-17 iffe.sh: "header x.h" -- deprecate "include x.h" for .SCAN.iffe +06-07-17 package.sh: differentiate urls vs. assignments +06-06-27 rt.sh: add --failed, --heading +06-06-27 C+probe,TEST.mk,make.probe,mktest.sh,regress.sh: 'ulimit -c 0' +06-06-26 cc.darwin.ppc: handle -lcc_dynamic disappearance +06-06-25 mktest.sh: implement PROG +06-06-11 Makefile: add -ldbm :MAPLIB:, provide public MAPLIB.mk +06-05-06 package.sh: add PACKAGE_admin_tail_timeout +06-05-22 ratz.c: upgrade to zlib-1.2.3 +06-05-09 package.sh: fix admin.db docs +06-03-11 package.sh: fix `package use - command ...' +06-03-05 make.probe: work around pedantic bash 3.1 mismatched " in `.` +06-02-14 package.sh: "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 package.sh: freebsd stuck with os version for all arch +06-02-01 package.mk: fix locale logic (tw -d requires dir arg) +06-01-31 package.sh: require $CC only for make|test +06-01-30 package.sh,hurl.sh: use the backwards-compatible --http-passwd + package.sh: add more pdksh => /bin/sh checks +06-01-26 package.sh: wget --http-pass => --http-password + package.sh: fix wget error logic + hurl.sh: wget --http-pass => --http-password +06-01-11 package.mk: pass package.license.class to make --mam too + package.mk: variants=pattern => --variants=pattern + package.sh: darwin rel<=7 => darwin7.ppc + package.sh: freebsd rel<=4 => freebsd4 + package.sh: freebsd rel<=5 => freebsd5 +05-12-07 iffe.sh: 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 mktest.sh: add EXEC [ ++NOOUTPUT ++NOERROR ++NOEXIT ] +05-09-21 mktest.sh: fix --style=shell compare to ignore \r +05-09-12 TEST.mk: all --force to force %.rt regeneration +05-09-05 TEST.mk: regenerate from %.rt only if newer, :SAVE: %.tst +05-08-25 mktest.sh: add + TEST.mk: add %.rt=>%.tst for mktest +05-08-18 package.sh: 'package host cpu' now checks $NPROC first +05-07-17 iffe.sh: add { define extern include print } ops + iffe.sh: accept output{...}end output on success only -- doh +05-07-01 package.sh: add TARPROBE for tar B flag probe +05-06-24 package.sh: fix binary read chmod via *.sum +05-06-06 package.sh: 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 + package.sh: 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 iffe.sh: really fix grouping logic -- with tests this time + package.sh: pipe/socket configuration mismatches => use /bin/sh +05-04-28 TEST.mk: add $(TESTS) +05-04-19 package.sh: package results test uses rt if possible + iffe.sh: fix 'op var - ... - ...' grouping logic +05-04-15 rt.sh: handle autom4ate style +05-04-11 regress.sh: fix unit name when command line unit also specified + rt.sh: handle all ast package test output formats + package.sh: fix make docs for options passed to underlying make +05-04-08 package.sh: cp -p makerules.mo to $OK to preserve mtime + regress.sh: add "TITLE name" to change TEST output title +05-04-01 rt.sh: add pretty make test + regress.sh wrapper +05-03-29 package.sh: 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 regress.sh: unset LC_ALL when LC_* EXPORT'd + package.sh: old make.out saved in circular make.out.[1-9] + mamake.c: sync with nmake :W=O: +05-03-01 package.sh: fix flat hierarchy initialization + package.sh: admin action now properly resets sibling remote logs + package.mk: relax unknown/unwritten package messages to warnings + package.sh: handle space in command line name=value + make.probe: add mvs -Wc,dll,exportall,longname,rent to CC.DLL probe +05-02-24 package.sh: 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 package.sh,package.mk: add write tst for tgz in tst subdir +05-02-18 package.sh: accept cc -dumpmachine with 0 or 1 - +05-02-14 package.sh: handle mutiple architectures per host in admin.db + Makefile,package.sh: honor $INSTALLROOT/bin/.paths overrides + package.sh: normalize trailing [-_]bits in host type + iffe.sh: some ksh-compatible shells don't do *(pattern) +05-02-11 iffe.sh: back out 05-01-11 child process stdin hijack + cc.lynxos.i386: -dynamic instead of -static default +05-02-10 package.sh: cyg usr/doc => usr/share/doc +05-02-08 package.sh: drop -m with pax -- delta bug fixed 2005-02-08 + iffe.sh: work around old bash 0<... redirection bug +05-02-06 package.mk: 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 package.sh: update setup docs to include authorize+password + package.mk: fix .source.cyg final directory edit + package.mk: notice=1 for conspicuous empty NOTICE file + WWW.mk: fix *-index.html installation + filter.sh: retain input file suffix in tmp copy + mamexec.c: fix non-contiguous "exec" bug that skipped lines + iffe.sh: fix candidate lib test to try grouping subsequent libs + iffe.sh: fix child process stdin hijack that skipped input lines + iffe.sh: --shell=osh to force read -r compatibility command + iffe.sh: chop iffe input leading space before # for KnR compatibility +05-01-05 package.sh: add ${TAR} ${TARFLAGS} and tar B flag for pipes + mamake.c: fix makefile scan to ignore lib*.[hH] + iffe.sh: immunize function/symbol tests from aggressive -O +04-12-28 WWW.mk: add :WWWPAGE: faq.*.mm index generator +04-12-21 ratz.c: make sure tmp dir is writable -- doh +04-12-08 iffe.sh: fix dat test for aggressive -O +04-12-01 iffe.sh: add `include file' to pull in #define's for `exp' +04-11-11 package.sh: default MAKESKIP is "*[-.]*" +04-10-22 ratz.c: change docs to note zlib license + mamake.c: handle --debug-symbols and --strip-symbols + package.sh: make (debug|strip)=1 => --(debug|strip)-symbols + package.mk: add :LICENSE: => package.license.class + mamake.c: fix recursive order logic +04-10-18 package.mk: add :LICENSE:, :OMIT: to omit package subdirs +04-10-11 package.sh: add 'authorize name' and 'password password' +04-10-01 iffe.sh: double check $static link with ! $static + Makefile: add BUILTIN_LIB to $INSTALLROOT/bin/.paths + make.probe: add CC.DIALECT EXPORT={ALL,REF,EXT,DLL} + package.sh: add BUILTIN_LIB to $INSTALLROOT/bin/.paths +04-09-21 package.mk: $(init)$(name) is now an implicit prereq +04-09-09 package.sh: copy makerules.mo to $INSTALLROOT/bin/ok +04-09-01 package.mk,package.sh: rename *.txt => *.README + package.mk: add the runtime package type (no *.[ah]) + iffe.sh: fix key test reports +04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] } +04-08-11 package.mk: handle HOSTTYPE for solaris > 9 + package.sh: add `checkaout proto' for { make view } + package.sh: check for { md5sum md5 } + iffe.sh: add {if|elif|else|endif} test ... + iffe.sh: add 'exp - expression' and '( expression )' + iffe.sh: add 'name = test ...' user defined macros + iffe.sh: add '! test ...' negation + TEST.mk: add implied { .c .sh } generated prereq + cc.darwin.ppc: handle 10.3 -dylib mess +04-08-01 package.mk: let include handle nested requirements -- duh +04-07-31 package.sh: attempt a second ping before admin assumes host down +04-07-26 package.sh: fix hp.ia64 HOSTTYPE +04-07-23 probe.win32: generalize #include dir order search +04-07-17 regress.sh: add INPUT -x for chmod +x +04-07-01 regress.sh: TMP => TWD +04-06-29 regress.sh: put COMMAND in $TWD too +04-06-21 regress.sh: mkdir -p INPUT and OUTPUT intermediate dirs + TEST.mk: add :TEST: -- to disable .c .sh search +04-06-18 TEST.mk: add .SCAN.tst +04-06-17 regress.sh: TEST returns true if active, false otherwise + regress.sh: add CD to change test pwd from $TWD +04-06-16 regress.sh: add TWD for ./unit.tmp override + regress.sh: DO now flushes previous test + regress.sh: INPUT and OUTPUT handle -f for printf instead of print +04-06-11 package.sh: make sure $INSTALLROOT/bin is in front of $PATH + package.sh: skip nmake if older than 2000-10-31 +04-05-20 package.sh: fix arg vs. package parse with - or '' to disambuguate +04-05-11 package.sh: package verbose update lists closure for package setup + package.sh: add src/lib/libardir to nmake proto bootstrap + regress.sh: probe for rm -u vs. chmod -R u+rwx +04-05-01 package.sh: $CC must be C, not C++; allow release command on $PATH +04-04-15 make.probe: check probe_libdir false positives + package.sh: add lib/package/*.lic src package subdirs + package.mk: add mamfile=0 to inhibit Mamfile generation + iffe.sh: config name_DECLARED => HAVE_name_DECL + iffe.sh: fix mac to handle default value +04-04-11 iffe.sh: normalize sed [\\\\/] quoting +04-04-04 package.mk: only checksum generated tarballs + mamprobe.sh: add STDCHMOD +04-04-01 C+probe: set export LANG=C for uniform error messages + make.probe: another CC.STDLIB tweak + package.sh: 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 iffe.sh: drop unused exec $stdin<&0 dup +04-03-25 Makefile: add iconv :MAPLIB: + package.sh: use ${PING:-ping -c 1 -w 4}, allowing admin.db override +04-03-24 package.mk: add *.md5 checksum for each *.(c|exe|tgz) + package.sh: update base change on md5 sum instead of size + iffe.sh: adjust case label \ and keyword quoting for ancient /bin/sh +04-03-22 probe.win32: ncc => nld +04-03-19 CONVERT.mk: change the instructions and old source dir default + package.mk: fix recurse=list check + package.mk: add *.md5 checksum for each *.(c|exe|tgz) + package.sh: fix update base/delta/sync existence check +04-03-18 iffe.sh: -d2 does not remove core dumps on exit +04-03-17 package.sh: fix make recurse arg/action order +04-02-29 package.sh: add regress action to compare current and previous tests + package.sh: fix sgi.mips[23] HOSTTYPE test for old irix cc + package.sh: add `export variable ...' + package.sh: admin action now handles host name with non-id chars + package.sh: non-numeric M T W in admin.db disables that action + package.sh: fix admin write binary local vs. shared clash + cc.hp.pa: add _AST_CC_hp_pa_DEFAULT=+DAportable + cc.hp.pa64: sync with cc.hp.pa + cc.ibm.risc: -bnolibpath => -blibpath:/usr/lib:/lib + probe.win32: sync with make.probe + make.probe: fix last chance dynamic test + make.probe: add hp.pa 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 + package.mk: capture subcomponent mamfile recursion +04-02-24 make.probe: strip "..." from cc/ld traces + iffe.sh: 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 iffe.sh: 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 package.sh: fix cross compilation bug that mixed binary formats +04-02-02 package.sh: package admin now ditto's bin/package too +04-01-30 cc.sgi.mips3: drop warning 3421 +04-01-11 regress.sh: output label#count for tests in loops +04-01-05 regress.sh: fix bug that ignored the first SAME +04-01-04 crossexec.sh: fix typo that did not recognize rcp +03-12-19 mamake.c: add `foolib:foo:libfoo' to recurse() +03-10-11 regress.sh: add EXPORT, export COLUMNS=80 for message consistency +03-09-23 ratz.c: fix tar header number parse bug that skipped to next number + regress.sh: rm cleanup now handles files matching -* +03-09-11 iffe.sh: add unnamed { ... } blocks + regress.sh: add COPY from to, like MOVE but comprison still done + regress.sh: rm -rfu to handle test dirs w/o u+rwx +03-08-14 Makfile: add hello.c to the manifest +03-08-11 package.sh: fix `html binary' generation +03-06-21 package.sh: fix INITROOT initialization bug + package.sh: 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 + package.sh: fix onpath function global var conflict + make.probe: add CC.DIALECT { GNU -dD } + package.mk: add Mamfile to lcl manifest +03-06-10 package.sh: fix setup action typo that only checked the INIT package + package.sh: *.s390x => *.s390-64 +03-06-09 package.mk: add cyg :POSTINSTALL: +03-06-08 make.probe: fix CC.STDLIB logic + hurl.sh: add User-Agent identification + package.sh: tweak source and binary installation instructions + cc.hp.pa,ld.hp.pa: +-Wl,+cdp,${INSTALLROOT}/lib/: drops abs lib paths + ldd.hp.pa: add +03-06-06 package.sh: fix $INSTALLROOT/bin/ldd check + make.probe: add CC.STDLIB verification +03-06-04 make.probe: add +forceread +noforceread +03-05-11 hurl.sh: handle http://host:port/path +03-05-06 package.sh: fix setup action PACKAGEROOT and INIT logic +03-05-05 package.mk: fix cygwin tarball names +03-04-30 package.sh: 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) + make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD } + probe.win32: sync with latest CC.* +03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh +03-04-23 package.mk: fix dup "covered by" licenses +03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's + package.sh: fix admin write binary tarball snarf +03-04-21 package.mk: package covered *.@(pkg|lic) too +03-04-15 package.mk: don't generate incremental archives for lcl + package.mk: add incremental=[source:1 binary:0] archive control + package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc + package.sh: admin must ditto lib/package/*.@(pkg|lic) too + mamake.c: ignore time of ignore prereqs + mamake.c: -D2 lists propagated times +03-04-11 package.mk: tidy up cyg tarballs + package.sh: fix old shell clash between get() and $get +03-04-05 package.mk: restore *.inx generation somehow lost during cyg additions + package.sh: add pthread_num_processors_np() last resort for cpu count + package.sh: use `make believe' to accept mamake generated files + package.sh: handle `make [make-flags] [target ...]' + mamake.c: ignore -e +03-03-21 package.mk: fix cyg old make typo + package.sh: switch to `package setup' instructions +03-03-19 package.sh: add registry checks for `host cpu' + package.sh: `results failed' now lists core dump messages +03-03-17 package.sh: on cygwin verify 'ntsec binmode' in $CYGWIN or die + Makefile: install gcc wrapper if no cc + package.mk: add :DETAILS: { :README: :EXPORT: :INSTALL: :TEST: } ops +03-03-12 package.mk: add :DETAILS: for style-specific details +03-03-11 package.sh: add beta setup/update support + TEST.mk: add (TESTCC) prereq for .sh tests +03-03-07 hurl.sh: add +03-03-06 iffe.sh: fix lib win32 test cygwin vs native incompatibility + iffe.sh: change internal stdio.h guard to handle C++ inline vs. macro +03-03-03 package.sh: check for curl or wget for update + package.sh: add setup action == update read make + package.sh: 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 package.sh: add the "cyg" (cygwin) package type + package.mk: add "cyg" stubs, :CATEGORY: for category name(s) +03-02-25 mamake.c: add -D4 system(3) debug trace +03-02-24 package.mk: 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 package.mk: fix .lic search +03-01-30 package.sh: handle { INIT ksh nmake } already installed elsewhere + package.sh: admin handles command outside of $PACKAGEROOT/bin + Makefile: install $(INSTALLROOT)/lib/make/package.mk +03-01-28 package.sh: admin remote commands on one line to please syslog +03-01-23 probe.win32: borland and mingw32 tweaks +03-01-22 package.sh: fix $CC test to ignore set -x trace -- duh +03-01-16 ditto.sh: tw --chop on by default +03-01-14 package.sh: use /bin/cp to copy previous binaries to bin/ok/ + package.sh: admin now initiates remote exec and copy from local host +03-01-12 package.sh: handle admin "xxx:" default root +03-01-03 probe.win32: add /usr/include/borland path truncation workaround +02-12-10 iffe.sh: 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.sh: package release now checks for second level files +02-11-22 package.sh: 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 packahe.mk: 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 + package.sh: fix package_use vs. PACKAGE_USE check +02-10-24 WWW.mk: 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 package.sh: fix lib/probe/C/make/probe update test +02-10-18 probe.win32: update for mingw + make.probe: add bash workaround to SHELLMAGIC test + package.sh: work around yet another cygwin hassle +02-10-17 iffe.sh: short circuit id check for *[-+/\\]* +02-10-08 regress.sh: unset FIGNORE to avoid rm . errors + package.sh: unset FIGNORE to avoid rm . errors + package.sh: $CC must at least compile and executable hello world +02-10-04 package.sh: $INSTALLROOT/lib/package/tgz=>$PACKAGEROOT/lib/package/tgz + package.mk: $(ED) => $(STDED), $(EDFLAGS) => $(STDEDFLAGS) + iffe.sh: add identifier checks for tests that (implicitly) require them + iffe.sh: disambiguate a few --config macros +02-10-02 iffe.sh: fix shell=bsh `hdr a/b' +02-09-30 package.sh: handle chmod of -* files + package.sh: verify that $SHELL is Bourne compatible + package.sh: tighten PACKAGE_USE logic PATH,LIBPATH,etc. validation + iffe.sh: fix bug that didn't define mac variable on success +02-09-22 package.sh: handle admin_action=ditto + iffe.sh: --config sizeof(foo) macro is SIZEOF_foo + iffe.sh: fix long.long test so it doesn't defeat uwin "typ long.long" + mamprobe.sh: convert $("foo") nmake string constants +02-09-21 mamprobe.sh: "-" info-path writes probe info to stdout +02-09-11 make.probe: move from nmake src to be part of mamprobe.sh + mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end + mamake.c: pass cc absolute path to mamprobe + package.sh: generate mamprobe -- yuk (at least its confined to INIT) + iffe.sh: lcl,nxt: drop default sys/ check + ditto.sh: tw --logical by default; add --physical +02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey +02-09-09 ditto.sh: test that remote .profile exists before sourcing +02-09-06 package.sh: don't ditto nfs junk + ditto.sh: --show now lists directory ops instead of enumerating all +02-09-05 ditto.sh: add --remote={rsh|ssh} + package.sh: add admin [[{rsh|ssh|-}]:]directory +02-09-02 iffe.sh: change 'print -r --' to 'print -r -' for ksh86 compatibility +02-09-01 cc.unix.mc68k: add for ancient 3b1 +02-08-22 package.sh: fix component() to test for components -- duh + Makefile: add LICENSE:.DONTCARE to workaround mam +02-08-11 iffe.sh: provide defaults for LD_* additions +02-08-07 ratz.c: change -m to use * instead of non-portable inverse video +02-07-17 mamprobe.sh: close tmp file in trap before rm for cygwin + package.sh: fix "type" to handle i1586 (P4) + package.sh: add the view action +02-06-28 package.sh: handle multiple packages for release action +02-06-27 package.sh: catch sol*.sparc=>sol*.sun4 when CC=gcc +02-06-14 package.sh: fix admin_action to not include qualifiers + package.sh: fix help/html doc typo +02-06-11 package.sh: fix ditto update doc to `PACKAGEROOT field matching *:*' +02-06-07 WWW.mk: change substitute $("\n") to \n +02-06-06 package.sh: 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 package.sh: fix update to differentiate *.sun4 and sun4 +02-03-27 package.sh: yacc/bison warning only if both missing +02-03-24 mamake.c: all shell actions wrapped with -c to avoid #! problems +02-03-23 package.sh: recover $PACKAGEROOT/bin/package if not in INIT package + package.sh: precheck $CC, not `cc' + package.sh: fix install to use pax -ps to preserve set-uid/gid + package.sh: fix install to use list.installed for existing files only +02-03-17 package.sh: fix PAX initialization that was sometimes omitted for read + package.sh: fix update delta sync fetch +02-02-14 iffe.sh: fix macro{ }end docs to include " + iffe.sh: add dfn to extract #define from headers + iffe.sh: handle nxt #include ok but no line sync + iffe.sh: drop local header clash logic + iffe.sh: add -X, --exclude=dir to exclude -I dirs + iffe.sh: lcl,nxt now generate <...> headers instead of "..." + package.sh: admin.db root dir matching -* disables host + package.mk: fix package.src.pat typo -- too many ) + package.mk: add { :COVERS: :DESCRIPTION: :REQUIRES: } + package.sh: handle { :COVERS: :DESCRIPTION: :REQUIRES: } + Makefile: move proto.c generation to the proto component dir +02-02-02 execrate.sh: add for .exe challenged win32 systems/commands + mamprobe.sh: add STD* commands/flags + mamake.c: update mamprobe info when older than mamprobe executable + package.sh: move ed/ex workaround to mamprobe.sh + package.sh: fix `host type' bug that incorrectly assumed sun4 for sol + package.sh: add execrate(1) hooks for challenged systems + package.sh: add check for { cc ar nm yacc/bison } before make + ratz.c: fix "rb" vs. "r" macro tests + iffe.sh: add nxt, similar to lcl but defines _nxt_foo for #include + iffe.sh,package.sh: remove vaibale from sccs,cvs ident strings -- duh +02-01-24 C+probe: check CC.DYNAMIC to handle cc that accept but ignore -B* + iffe.sh: handle 'mem struct.a.b' +02-01-22 iffe.sh: cache (internal) `foo vs. struct foo' test results + package.sh: uts.370 => uts.390 +02-01-18 package.sh: fix uts hosttype +02-01-17 package.sh: add 'results failed ...' to list failures only + package.sh: change ARCH internal var to all_types to avoid env conflict + iffe.sh: fix hdr/lib precheck that missed some -- ouch + iffe.sh: fix noexecute test that forgot to check compile first! +02-01-15 ratz.c: fix path[] type typo +02-01-01 package.mk: tighten license search +02-01-08 package.sh: `pwd` => ${PWD:-`pwd`} + package.mk: expand license file pattern match +02-01-04 iffe.sh: fix `exp name "value"' bug that duped "value" + iffe.sh: fix initial <sys/types.h> check to honor --config +01-12-25 iffe.sh: fix bug where -o file restored old file +01-12-23 package.mk: 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 ditto.sh: drop n+=v for ksh compatibility +01-11-21 ditto.sh: add rsync script replacement [hey, it works!] + package.sh: add [ditto]:directory notation to admin.db +01-10-31 package.sh: handle *.sum paths with embedded space + package.sh: change executable() to onpath() + package.sh: executable([!] foo) replaces test [!] -x foo (.exe hack) + package.sh: add os2 fix to `host type' + mamake.c: add .exe hack + iffe.sh: fix intrinsic function lib test + mamprobe.sh: update pic probe to match make.probe for linux.ia64 +01-10-30 package.sh: make action skeleton view now checks subdirs +01-10-20 package.sh: don't recurse into leaf dirs matching $MAKESKIP + package.mk: tarball package.notice replaces `license accepted' prompt + package.sh: eliminate `license accepted' prompt + package.sh: add update to download latest from a url + package.sh: use builtin arithmetic when we know its ksh + iffe.sh: unkown -> unknown +01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN + package.mk: 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 mamprobe.sh: add mam_cc_SHELLMAGIC + package.sh: 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 + mamprobe.sh: allow cc path with optional arguments +01-09-24 Makefile,package.sh: add $INSTALLROOT/bin/.paths initialization +01-09-19 package.mk: add recurse to list.package.* + package.sh: 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 package.mk: fix output capture to not generate files names with spaces +01-09-07 package.mk: fix delta release number search +01-08-11 package.mk: handle single gz executable packages (e.g., for ksh) + package.sh: fix package install to require nmake only if no *.sum + iffe.sh: 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 crossexec.sh: add + iffe.sh: add -x crosstype to run crossexec + iffe.sh: exp test now handles pass{}end fail{}end yes{}end no{}end + package.sh: add package host canon external-host-type-name + package.sh: fix `use USER' lookup for shells that support ~USER + cc.*: add -dumpmachine to dump target HOSTTYPE +01-05-18 iffe.sh: drop $HOME/tmp/t.sh 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 + iffe.sh: fix run *.sh for shells that don't $* across . command + cc.mvs.390: recode for /bin/sh +01-04-25 package.mk: include non cc-g variants by default + package.sh: *[._]* => *?[_.]* for mvs.390 /bin/sh +01-04-24 TEST.mk: no tests for VARIANT=="DLL" +01-04-22 package.mk,package.sh: tarball text members are ascii encoded +01-04-18 package.mk: 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 iffe.sh: fix bug that omitted runtime #define for `mac' op +01-02-22 cc.ibm.risc: 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 + package.sh: nmake check error output to /dev/null + package.sh: fix INIT a.out updates for knr cc + package.sh: package list now handles large tgz dirs + package.sh: *-ok executables moved to ok/* for *.dll systems + iffe.sh: change "exec >&-" to "exec >/dev/null" else linux mkdir fails! + mamake: handle `bind -lx [dontcare]' +01-02-12 ratz.c: fix _PACKAGE_ast includes + package.sh: $HOSTTYPE env overrides if $PACKAGEROOT/arch/$HOSTTYPE/ + package.sh: $CC ^HOSTTYPE=[A-Za-z_0-9.]*$ overrides HOSTTYPE + iffe.sh: fix dat code that used previous $tmp.exe + iffe.sh: fix dat code for _DLL imports +01-02-09 iffe.sh: 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 package.sh: fix package use for $INSTALLROOT != */$HOSTTYPE + package.sh: create intermediate recursion makefiles when needed + package.sh: add $SECONDS to the DEBUG trace prompt +01-01-01 ratz.c: #ifdef for uwin ncc + iffe.sh,package.sh: check PACKAGE_PATH for local installations + package.sh: add psrinfo for osf.alpha host cpu + package.sh: change pax --meter probe; some hang on /dev/tty + package.sh: fix `install flat ARCH' + mamake: eliminate loops from scan order + C+probe: add probe_verbose -V for aix cc=xlc + cc.ibm.risc,ldd.ibm.risc: add + package.mk: list refs to top-level licenses only + package.mk: add local link table to change log html +00-12-25 package.sh: `no package archives' is a hard error, duh + package.sh: reorder host type logic for lame shells + mamake.c: getcwd => getwd for NeXT -- how about posix==default guys + iffe.sh: really gross workaround for NeXT -lposix stdout null's + iffe.sh: handle cc -E that insists on compiling +00-12-15 iffe.sh: ancient sh function call blows $*; call only when $# == 0 + *.sh: `getopts 2>/dev/null` => `(getopts)2>/dev/null` for ancient sh + package.sh: fix LD_LIBRARY*_PATH initialization + cc.next.m68k: add for _POSIX_SOURCE and linker multiply defined syms +00-12-12 ratz: add --meter + package.sh: a few VPATH fixes + Makefile: don't override *.mips* cc if -version not accepted +00-12-11 package.mk: *.inx now contains name=value +00-12-07 package.sh: handle PC netscape . => _ pathname mangle + WWW.mk: .tar.gz => .tgz +00-11-27 package.sh: add checklicense() to do license checks at read time + package.mk: change component list from preformat to table +00-10-31 package.mk: *.pkg must assert closure + package.mk: add cc- variants to list.package.binary + package.sh: omit dups from package list + package.sh: invalid arg gives one line Usage + package.sh: relax checkaout checks for non-owners + package.sh: package use sets NPROC if not already set or [01] + proto.c: add $(INSTALLROOT)/include/ast hack +00-10-26 WWW.mk: add .SOURCE rhs to :WWWPAGE: +00-10-25 package: fix install + package.mk: add list.install +00-10-22 regress: fix VIEW to skip empty dirs +00-10-19 package.mk: $(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 + package.mk: 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 + package.mk: 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 + package.mk: "ratz" package adjustments + Makefile: use :PACKAGE_INIT: to support binary INIT packages + WWW.mk: 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 + package.mk: 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) + WWW.mk: fix mm2html option quoting + WWW.mk: add .SCAN.mm + WWW.mk: don't force static=1; grab dll's instead + *.sh: fix getopts test to handle botched implementations like osf.alpha + iffe.sh: 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 WWW.mk: WWWDIR and MM2HTMLINFO are now lists searched in $(HOME) +99-08-11 hostinfo: fix type sgi.mips4 +99-06-24 WWW.mk: add +99-06-08 hostinfo.sh: ${TMPDIR:-/tmp} +99-06-07 TEST.mk: 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 + add cc.hp.pa +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 long.xxx 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 long.xxx +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 --- diff --git a/lib/package/INIT.html b/lib/package/INIT.html new file mode 100644 index 0000000..42cb7cc --- /dev/null +++ b/lib/package/INIT.html @@ -0,0 +1,991 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> +<META name="generator" content="mm2html (AT&T Research) 2012-01-11"> +<META name="description" content="INIT package"> +<META name="keywords" content="software, package"> +<TITLE> INIT package </TITLE> +<META name="author" content="gsf+dgk+kpv"> +<STYLE type="text/css"> +div.FI { padding-left:2em; text-indent:0em; } +div.HI { padding-left:4em; text-indent:-2em; } +dt { float:left; clear:both; } +dd { margin-left:3em; } +</STYLE> +</HEAD> +<BODY bgcolor=white link=slateblue vlink=teal > +<TABLE border=0 align=center width=96%> +<TBODY><TR><TD valign=top align=left> +<!--INDEX--><!--/INDEX--> +<P> +<P><CENTER><FONT color=red><FONT face=courier><H3><A name="INIT package">INIT package</A></H3></FONT></FONT></CENTER> +The INIT package is required by all but the standalone +and self extracting archive packages. It contains +the package command, support scripts, and utilities. +The package command installs binary packages, makes +source packages, and generates new package tarballs. +Components in this package: +<P> +<P></P><TABLE border=0 frame=void rules=none width=100%><TBODY><TR><TD> +<TABLE align=center bgcolor=papayawhip border=0 bordercolor=white cellpadding=2 cellspacing=2 width=99% > +<TBODY> +<TR><TD align=left> +INIT</TD></TR> +</TBODY></TABLE></TD></TR></TBODY></TABLE> +<P> +The software is covered by this license: +<UL type=square> +<LI> +<A href="http://www.eclipse.org/org/documents/epl-v10.html">http://www.eclipse.org/org/documents/epl-v10.html</A> +</UL> +Individual components may be covered by separate licenses; +refer to the component source and/or binaries for more information. +<P> +A recent +<A href="#release change log">release change log</A> +is also included. +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="release change log">release change log</A></H3></FONT></FONT></CENTER> +<PRE> + +All recorded changes follow. + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="INIT changes">INIT changes</A></H3></FONT></FONT></CENTER> +<PRE> + +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 package.sh: don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH +12-02-29 package.sh: fix ksh vs -lcmd compatibility checks +12-02-23 iffe.sh: checkcc() before checkread() for sensible diagnostics +12-02-14 package.mk: { --clobber --compare --link=lib*.a* } for --mam=static +12-02-14 package.mk: export LICENSEFILEDEFAULT instead of LICENSEFILE +12-02-14 package.sh: handle @(cc|ld).${HOSTTYPE}* intercepts +12-02-07 package.sh: add { clean clobber } actions +12-02-02 regress.sh: fix ulimit -c defaults for --nokeep +12-01-18 regress.sh: add INPUT|OUTPUT|ERROR -e 'filter' to filter before comparison +12-01-21 package.sh: 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 package.sh: add admin make share closure to handle alternate HOSTTYPEs +11-12-13 iffe.sh: add /*<NOSTDIO>*/ test code comment to disable default #include <stdio.h> +11-11-11 C+probe: test for .so before .sl +11-10-26 package.sh: don't forget about *.pkg for admin update +11-10-18 cc.*-icc: update and add more +11-10-11 package.sh: handle package make|view when no source installed +11-09-11 package.sh: count admin '*** termination code' errors +11-08-31 mamake.c: add -e, ignore use recursive prereq timestamps +11-08-29 iffe.sh: add ``set stdio try1.h - try2.h ...'' +11-08-29 iffe.sh: trap EXIT => trap 0 for ancient sh +11-08-11 iffe.sh: handle ancient sort that doesn't have -k +11-06-01 make.probe: add more /lib64 logic +11-05-01 package.sh: fix admin ditto to sync LICENSES too +11-03-25 package.sh: initialize { $SED $TR } before first use! +11-03-21 package.sh: fix vpath probes +11-03-17 iffe.sh: fix cleanup to rm $tmp* instead of $tmp*.* +11-02-24 package.sh: change curl usage to "curl -L ..." +11-02-11 package.sh,C+probe,make.probe,mamprobe.sh: 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 package.sh: 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 iffe.sh: check debug==3 for is_hdr() failure +10-11-22 ditto.sh: fix timing problem between |& and exec &p +10-11-10 package.sh: fix cc cross compile check to use checkcc absolute path +10-10-10 package.sh: 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 package.sh: fix ratz from source logic +10-08-25 package.mk: 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 package.sh: unset makerules *DIR variables in env +10-08-15 package.sh: "make" action now lists some env values +10-08-11 mktest.sh: add "DO command ..." +10-07-27 rt.sh: handle "rt X=Y ..." +10-06-29 ratz.c: non-option sear args passed to sear_exec() +10-06-25 iffe.sh: "api" op chanegd to not do "map-libc" type mappings +10-06-25 package.sh: "force admin ditto" => no ditto --update option +10-06-22 C+probe: handle cc that require .[ci] input for version info +10-06-21 ditto.sh: change default remote access to ssh (about time) +10-06-12 regress.sh: DISGNOSTICS [ 1 | 0 | pattern ] and fix EXIT for all +10-06-09 package.sh: add AT&T to usable nmake check +10-06-06 iffe.sh,iffe.tst: add { api ver } ops +10-04-22 package.sh: update "html binary|source" NAME/PASSWORD info +10-04-15 iffe.sh: don't forget candidate headers for hdr|sys! +10-04-11 WWW.mk: disable man page metarule -- now done by admin-man(1) +10-02-14 package.sh: $CC verification needs $INSTALLROOT/bin in PATH +10-02-11 package.sh: fix package admin make report error count +10-02-02 package.sh: fix write binary bug that did scp on local fs +10-02-02 package.mk: up to date binary targets must still be in PACKAGE.*.lst +10-01-01 package.sh: fix premature $INSTALLROOT/bin during cross compile check +10-01-01 make.probe: handle ['"] in CC.VERSION.STRING +09-12-04 iffe.sh: add "opt name" to check for name in $PACKAGE_OPTIONS +09-11-30 mktest.sh: 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 package.sh: re-order and combine cc checks +09-10-27 C+probe,make.probe,probe.win32: add CC.SUFFIX.DEBUG +09-10-21 iffe.sh,Makefile: test -e is not in ksh88! +09-10-06 iffe.sh: handle cc -E #error with 0 exit status (sgi) +09-10-06 package.sh: stub in ar intercept checks -- not used yet +09-10-06 ar.ibm.risc: add ar intercept because some aix require -Xfoo first!! +09-09-24 regress.sh: 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 package.sh: fix isascii() bug that failed on od(1) trailing space +09-08-20 make.probe: add CC.SHARED.NAME +09-08-20 regress.sh: add { JOB CONTINUE EXITED KILL FIFO } +09-08-11 package.sh: filter lines containing : for package results +09-07-31 make.probe: add CC.AR.ARFLAGS (for aix ar -xany) +09-07-31 package.sh,cc.*: fix -dumpmachine to handle 32/64/* bit options +09-06-24 package.sh: fix admin.db output formatting +09-05-05 package.sh: export dll hackery environment vars +09-05-05 package.sh: 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 iffe.sh: fix output initialization *again* +09-04-28 package.sh: handle admin.db contact field $9 +09-04-15 iffe.sh: add implicit "ini" op to initialize io for subsequent ops +09-03-31 regress.sh: EXPORT before test => global ENVIRON[] +09-03-26 package.sh: test fail pattern is 'fail[es]' +09-03-26 UNIT - ... appends (options) to command line +09-03-19 TEST.mk: x.tst => x only if x is command target +09-03-15 regress.sh: add ${MAIN} for base name of main unit +09-03-10 TEST.mk: add .SOURCE:tests if tests is a dir +09-03-03 regress.sh: allow command line unit to override UNIT +09-03-03 mktest.sh: handle IO == $' +09-02-02 package.sh: delay $INSTALLROOT/bin/.paths generation until mamprobe runs +09-01-30 cc.mvs.390: c89 balks at [ ()] in -Dname="..."! +09-01-27 package.sh: add isascii() to use ratz instead of tar +09-01-20 hurl.sh: add --size=bytes option +09-01-08 TEST.mk: add test.* prereqs, multiple arg lists with :T=*: binding +09-01-03 regress.sh: fix UNIT to allow command line override +09-01-03 mktest.sh: handle TWD +08-12-24 package.sh: fix cross-compile HOSTTYPE logic +08-12-15 package.sh,hurl.sh: handle http codes { 301 302 303 } +08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!! +08-09-30 rt.sh: fix ksh93 regression test signal count +08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input +08-09-24 package.sh: 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 regress.sh: 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 mktest.sh: add --width=width +08-08-05 dbm.req: favor sleepycat ndbm compatibility +08-08-04 C+probe: fix stdlib initialization logic +08-06-24 package.sh: fix $INSTALLROOT/bin/cc intercept time stamp file typo +08-06-20 TEST.mk: make the localyunit before *.rt => *.tst -- doh +08-06-20 mktest.sh: prepend $PWD onto PATH for local units -- doh^2 +08-06-11 regress.sh: fix bug that skipped the last test +08-05-20 regress.sh: add --local to put *.tmp dir in local fs +08-05-05 regress.sh: add IF command ... ELIF command ... ELSE ... FI +08-05-01 package.sh: package test => ulimit -c 0 +08-04-28 regress.sh: fix EXPORT quoting +08-04-28 regress.sh: fix UNIT set check args too +08-04-24 rt.sh: exit code > 256 => signal termination +08-04-10 C+probe: change probe_so order to check .so last (macos ld workaround) +08-04-01 package.sh: handle multiple admin HOSTTYPEs per HOST +08-03-28 C+probe: add C++ #include <iostream> (no extension) dir probes +08-03-17 regress.sh: 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 package.sh: check lib64 for LD_LIBRARY_PATH +08-01-31 iffe.sh: 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 package.sh: fix checksum doc typo +08-01-09 C+probe: add __FUNCTION__ to the undef (don't check) list +07-12-14 iffe.sh: add set nooptimize +07-12-03 package.sh: add LC_ALL=C +07-11-27 package.sh: fix overaggressive *.md5 cleanup +07-11-20 iffe.sh: treat exit status >= 250 as normal error with no signal +07-11-05 package.sh: fix write op error count pattern +07-11-05 package.mk: fix $(~req) .ver binding +07-08-11 probe.win32: add cl.exe setuid workaround, CC.VERSION[.STRING] +07-08-01 package.sh: handle 'package read lcl|tgz' +07-05-08 regress.sh: 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 mktest.sh: defer to systems without 'grep -q' -- sigh +07-04-11 mamprobe.sh: handle $(CC.*) => ${mam_cc_*}, $(...) => ${...} +07-04-11 make.probe: fix CC.PICBIG probe, default { CC.PIC CC.DLL } to BIG +07-04-04 iffe.sh: prepend ${tst}${ext} to each .c probe +07-03-28 package.sh: fix binary tgz architecture type duplication +07-03-28 package.mk: add binary write PACKAGE.$HOSTTYPE.lst +07-03-28 iffe.sh: add -F header to mac test +07-03-23 make.probe: handle file(1) that returns 'archive' for .so +07-03-22 mamprobe.sh: fix STDED probe for implementations that ignore EOF +07-03-11 package.sh: add nocopyright and tst => nocopyright +07-03-11 package.mk: 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 package.sh: fix "admin write binary" logic +07-01-01 iffe.sh: add "cmd" --verbose trace +07-01-01 iffe.sh: 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 package.sh: *.md5 are not tarballs -- doh +06-11-23 iffe.sh: 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 iffe.sh: add status{...} code block +06-10-11 regress.sh: fix DO to handle {...} (time for regress.tst?) +06-10-11 package.sh: handle already gunzip'd *.tgz +06-10-06 iffe.sh: add reference for header content tests +06-09-27 regress.sh: fix UMASK to do DO too (duh) +06-09-22 iffe.sh: 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 package.sh: { cc ld ldd } intercepts check ${HOSTTYPE%.*} too +06-09-08 regress.sh: 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 regress.sh,mktest.sh: add UMASK +06-08-25 regress.sh: add -b,--ignore-space,IGNORESPACE +06-08-25 mktest.sh: add IGNORESPACE +06-08-24 mktest.sh: handle 00 in data +06-08-24 regress.sh: handle -f* for INPUT|OUTPUT|ERROR +06-08-16 package.sh: fix 'install flat' logic +06-08-11 rt.sh: handle style=shell %K date format +06-07-17 ratz.c: fix __MVS__ FAR definition +06-07-17 iffe.sh: "header x.h" -- deprecate "include x.h" for .SCAN.iffe +06-07-17 package.sh: differentiate urls vs. assignments +06-06-27 rt.sh: add --failed, --heading +06-06-27 C+probe,TEST.mk,make.probe,mktest.sh,regress.sh: 'ulimit -c 0' +06-06-26 cc.darwin.ppc: handle -lcc_dynamic disappearance +06-06-25 mktest.sh: implement PROG +06-06-11 Makefile: add -ldbm :MAPLIB:, provide public MAPLIB.mk +06-05-06 package.sh: add PACKAGE_admin_tail_timeout +06-05-22 ratz.c: upgrade to zlib-1.2.3 +06-05-09 package.sh: fix admin.db docs +06-03-11 package.sh: fix `package use - command ...' +06-03-05 make.probe: work around pedantic bash 3.1 mismatched " in `.` +06-02-14 package.sh: "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 package.sh: freebsd stuck with os version for all arch +06-02-01 package.mk: fix locale logic (tw -d requires dir arg) +06-01-31 package.sh: require $CC only for make|test +06-01-30 package.sh,hurl.sh: use the backwards-compatible --http-passwd + package.sh: add more pdksh => /bin/sh checks +06-01-26 package.sh: wget --http-pass => --http-password + package.sh: fix wget error logic + hurl.sh: wget --http-pass => --http-password +06-01-11 package.mk: pass package.license.class to make --mam too + package.mk: variants=pattern => --variants=pattern + package.sh: darwin rel<=7 => darwin7.ppc + package.sh: freebsd rel<=4 => freebsd4 + package.sh: freebsd rel<=5 => freebsd5 +05-12-07 iffe.sh: 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 mktest.sh: add EXEC [ ++NOOUTPUT ++NOERROR ++NOEXIT ] +05-09-21 mktest.sh: fix --style=shell compare to ignore \r +05-09-12 TEST.mk: all --force to force %.rt regeneration +05-09-05 TEST.mk: regenerate from %.rt only if newer, :SAVE: %.tst +05-08-25 mktest.sh: add + TEST.mk: add %.rt=>%.tst for mktest +05-08-18 package.sh: 'package host cpu' now checks $NPROC first +05-07-17 iffe.sh: add { define extern include print } ops + iffe.sh: accept output{...}end output on success only -- doh +05-07-01 package.sh: add TARPROBE for tar B flag probe +05-06-24 package.sh: fix binary read chmod via *.sum +05-06-06 package.sh: 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 + package.sh: 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 iffe.sh: really fix grouping logic -- with tests this time + package.sh: pipe/socket configuration mismatches => use /bin/sh +05-04-28 TEST.mk: add $(TESTS) +05-04-19 package.sh: package results test uses rt if possible + iffe.sh: fix 'op var - ... - ...' grouping logic +05-04-15 rt.sh: handle autom4ate style +05-04-11 regress.sh: fix unit name when command line unit also specified + rt.sh: handle all ast package test output formats + package.sh: fix make docs for options passed to underlying make +05-04-08 package.sh: cp -p makerules.mo to $OK to preserve mtime + regress.sh: add "TITLE name" to change TEST output title +05-04-01 rt.sh: add pretty make test + regress.sh wrapper +05-03-29 package.sh: 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 regress.sh: unset LC_ALL when LC_* EXPORT'd + package.sh: old make.out saved in circular make.out.[1-9] + mamake.c: sync with nmake :W=O: +05-03-01 package.sh: fix flat hierarchy initialization + package.sh: admin action now properly resets sibling remote logs + package.mk: relax unknown/unwritten package messages to warnings + package.sh: handle space in command line name=value + make.probe: add mvs -Wc,dll,exportall,longname,rent to CC.DLL probe +05-02-24 package.sh: 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 package.sh,package.mk: add write tst for tgz in tst subdir +05-02-18 package.sh: accept cc -dumpmachine with 0 or 1 - +05-02-14 package.sh: handle mutiple architectures per host in admin.db + Makefile,package.sh: honor $INSTALLROOT/bin/.paths overrides + package.sh: normalize trailing [-_]bits in host type + iffe.sh: some ksh-compatible shells don't do *(pattern) +05-02-11 iffe.sh: back out 05-01-11 child process stdin hijack + cc.lynxos.i386: -dynamic instead of -static default +05-02-10 package.sh: cyg usr/doc => usr/share/doc +05-02-08 package.sh: drop -m with pax -- delta bug fixed 2005-02-08 + iffe.sh: work around old bash 0<... redirection bug +05-02-06 package.mk: 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 package.sh: update setup docs to include authorize+password + package.mk: fix .source.cyg final directory edit + package.mk: notice=1 for conspicuous empty NOTICE file + WWW.mk: fix *-index.html installation + filter.sh: retain input file suffix in tmp copy + mamexec.c: fix non-contiguous "exec" bug that skipped lines + iffe.sh: fix candidate lib test to try grouping subsequent libs + iffe.sh: fix child process stdin hijack that skipped input lines + iffe.sh: --shell=osh to force read -r compatibility command + iffe.sh: chop iffe input leading space before # for KnR compatibility +05-01-05 package.sh: add ${TAR} ${TARFLAGS} and tar B flag for pipes + mamake.c: fix makefile scan to ignore lib*.[hH] + iffe.sh: immunize function/symbol tests from aggressive -O +04-12-28 WWW.mk: add :WWWPAGE: faq.*.mm index generator +04-12-21 ratz.c: make sure tmp dir is writable -- doh +04-12-08 iffe.sh: fix dat test for aggressive -O +04-12-01 iffe.sh: add `include file' to pull in #define's for `exp' +04-11-11 package.sh: default MAKESKIP is "*[-.]*" +04-10-22 ratz.c: change docs to note zlib license + mamake.c: handle --debug-symbols and --strip-symbols + package.sh: make (debug|strip)=1 => --(debug|strip)-symbols + package.mk: add :LICENSE: => package.license.class + mamake.c: fix recursive order logic +04-10-18 package.mk: add :LICENSE:, :OMIT: to omit package subdirs +04-10-11 package.sh: add 'authorize name' and 'password password' +04-10-01 iffe.sh: double check $static link with ! $static + Makefile: add BUILTIN_LIB to $INSTALLROOT/bin/.paths + make.probe: add CC.DIALECT EXPORT={ALL,REF,EXT,DLL} + package.sh: add BUILTIN_LIB to $INSTALLROOT/bin/.paths +04-09-21 package.mk: $(init)$(name) is now an implicit prereq +04-09-09 package.sh: copy makerules.mo to $INSTALLROOT/bin/ok +04-09-01 package.mk,package.sh: rename *.txt => *.README + package.mk: add the runtime package type (no *.[ah]) + iffe.sh: fix key test reports +04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] } +04-08-11 package.mk: handle HOSTTYPE for solaris > 9 + package.sh: add `checkaout proto' for { make view } + package.sh: check for { md5sum md5 } + iffe.sh: add {if|elif|else|endif} test ... + iffe.sh: add 'exp - expression' and '( expression )' + iffe.sh: add 'name = test ...' user defined macros + iffe.sh: add '! test ...' negation + TEST.mk: add implied { .c .sh } generated prereq + cc.darwin.ppc: handle 10.3 -dylib mess +04-08-01 package.mk: let include handle nested requirements -- duh +04-07-31 package.sh: attempt a second ping before admin assumes host down +04-07-26 package.sh: fix hp.ia64 HOSTTYPE +04-07-23 probe.win32: generalize #include dir order search +04-07-17 regress.sh: add INPUT -x for chmod +x +04-07-01 regress.sh: TMP => TWD +04-06-29 regress.sh: put COMMAND in $TWD too +04-06-21 regress.sh: mkdir -p INPUT and OUTPUT intermediate dirs + TEST.mk: add :TEST: -- to disable .c .sh search +04-06-18 TEST.mk: add .SCAN.tst +04-06-17 regress.sh: TEST returns true if active, false otherwise + regress.sh: add CD to change test pwd from $TWD +04-06-16 regress.sh: add TWD for ./unit.tmp override + regress.sh: DO now flushes previous test + regress.sh: INPUT and OUTPUT handle -f for printf instead of print +04-06-11 package.sh: make sure $INSTALLROOT/bin is in front of $PATH + package.sh: skip nmake if older than 2000-10-31 +04-05-20 package.sh: fix arg vs. package parse with - or '' to disambuguate +04-05-11 package.sh: package verbose update lists closure for package setup + package.sh: add src/lib/libardir to nmake proto bootstrap + regress.sh: probe for rm -u vs. chmod -R u+rwx +04-05-01 package.sh: $CC must be C, not C++; allow release command on $PATH +04-04-15 make.probe: check probe_libdir false positives + package.sh: add lib/package/*.lic src package subdirs + package.mk: add mamfile=0 to inhibit Mamfile generation + iffe.sh: config name_DECLARED => HAVE_name_DECL + iffe.sh: fix mac to handle default value +04-04-11 iffe.sh: normalize sed [\\\\/] quoting +04-04-04 package.mk: only checksum generated tarballs + mamprobe.sh: add STDCHMOD +04-04-01 C+probe: set export LANG=C for uniform error messages + make.probe: another CC.STDLIB tweak + package.sh: 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 iffe.sh: drop unused exec $stdin<&0 dup +04-03-25 Makefile: add iconv :MAPLIB: + package.sh: use ${PING:-ping -c 1 -w 4}, allowing admin.db override +04-03-24 package.mk: add *.md5 checksum for each *.(c|exe|tgz) + package.sh: update base change on md5 sum instead of size + iffe.sh: adjust case label and keyword quoting for ancient /bin/sh +04-03-22 probe.win32: ncc => nld +04-03-19 CONVERT.mk: change the instructions and old source dir default + package.mk: fix recurse=list check + package.mk: add *.md5 checksum for each *.(c|exe|tgz) + package.sh: fix update base/delta/sync existence check +04-03-18 iffe.sh: -d2 does not remove core dumps on exit +04-03-17 package.sh: fix make recurse arg/action order +04-02-29 package.sh: add regress action to compare current and previous tests + package.sh: fix sgi.mips[23] HOSTTYPE test for old irix cc + package.sh: add `export variable ...' + package.sh: admin action now handles host name with non-id chars + package.sh: non-numeric M T W in admin.db disables that action + package.sh: fix admin write binary local vs. shared clash + cc.hp.pa: add _AST_CC_hp_pa_DEFAULT=+DAportable + cc.hp.pa64: sync with cc.hp.pa + cc.ibm.risc: -bnolibpath => -blibpath:/usr/lib:/lib + probe.win32: sync with make.probe + make.probe: fix last chance dynamic test + make.probe: add hp.pa 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 + package.mk: capture subcomponent mamfile recursion +04-02-24 make.probe: strip "..." from cc/ld traces + iffe.sh: 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 iffe.sh: 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 package.sh: fix cross compilation bug that mixed binary formats +04-02-02 package.sh: package admin now ditto's bin/package too +04-01-30 cc.sgi.mips3: drop warning 3421 +04-01-11 regress.sh: output label#count for tests in loops +04-01-05 regress.sh: fix bug that ignored the first SAME +04-01-04 crossexec.sh: fix typo that did not recognize rcp +03-12-19 mamake.c: add `foolib:foo:libfoo' to recurse() +03-10-11 regress.sh: add EXPORT, export COLUMNS=80 for message consistency +03-09-23 ratz.c: fix tar header number parse bug that skipped to next number + regress.sh: rm cleanup now handles files matching -* +03-09-11 iffe.sh: add unnamed { ... } blocks + regress.sh: add COPY from to, like MOVE but comprison still done + regress.sh: rm -rfu to handle test dirs w/o u+rwx +03-08-14 Makfile: add hello.c to the manifest +03-08-11 package.sh: fix `html binary' generation +03-06-21 package.sh: fix INITROOT initialization bug + package.sh: 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 + package.sh: fix onpath function global var conflict + make.probe: add CC.DIALECT { GNU -dD } + package.mk: add Mamfile to lcl manifest +03-06-10 package.sh: fix setup action typo that only checked the INIT package + package.sh: *.s390x => *.s390-64 +03-06-09 package.mk: add cyg :POSTINSTALL: +03-06-08 make.probe: fix CC.STDLIB logic + hurl.sh: add User-Agent identification + package.sh: tweak source and binary installation instructions + cc.hp.pa,ld.hp.pa: +-Wl,+cdp,${INSTALLROOT}/lib/: drops abs lib paths + ldd.hp.pa: add +03-06-06 package.sh: fix $INSTALLROOT/bin/ldd check + make.probe: add CC.STDLIB verification +03-06-04 make.probe: add +forceread +noforceread +03-05-11 hurl.sh: handle http://host:port/path +03-05-06 package.sh: fix setup action PACKAGEROOT and INIT logic +03-05-05 package.mk: fix cygwin tarball names +03-04-30 package.sh: 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) + make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD } + probe.win32: sync with latest CC.* +03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh +03-04-23 package.mk: fix dup "covered by" licenses +03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's + package.sh: fix admin write binary tarball snarf +03-04-21 package.mk: package covered *.@(pkg|lic) too +03-04-15 package.mk: don't generate incremental archives for lcl + package.mk: add incremental=[source:1 binary:0] archive control + package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc + package.sh: admin must ditto lib/package/*.@(pkg|lic) too + mamake.c: ignore time of ignore prereqs + mamake.c: -D2 lists propagated times +03-04-11 package.mk: tidy up cyg tarballs + package.sh: fix old shell clash between get() and $get +03-04-05 package.mk: restore *.inx generation somehow lost during cyg additions + package.sh: add pthread_num_processors_np() last resort for cpu count + package.sh: use `make believe' to accept mamake generated files + package.sh: handle `make [make-flags] [target ...]' + mamake.c: ignore -e +03-03-21 package.mk: fix cyg old make typo + package.sh: switch to `package setup' instructions +03-03-19 package.sh: add registry checks for `host cpu' + package.sh: `results failed' now lists core dump messages +03-03-17 package.sh: on cygwin verify 'ntsec binmode' in $CYGWIN or die + Makefile: install gcc wrapper if no cc + package.mk: add :DETAILS: { :README: :EXPORT: :INSTALL: :TEST: } ops +03-03-12 package.mk: add :DETAILS: for style-specific details +03-03-11 package.sh: add beta setup/update support + TEST.mk: add (TESTCC) prereq for .sh tests +03-03-07 hurl.sh: add +03-03-06 iffe.sh: fix lib win32 test cygwin vs native incompatibility + iffe.sh: change internal stdio.h guard to handle C++ inline vs. macro +03-03-03 package.sh: check for curl or wget for update + package.sh: add setup action == update read make + package.sh: 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 package.sh: add the "cyg" (cygwin) package type + package.mk: add "cyg" stubs, :CATEGORY: for category name(s) +03-02-25 mamake.c: add -D4 system(3) debug trace +03-02-24 package.mk: 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 package.mk: fix .lic search +03-01-30 package.sh: handle { INIT ksh nmake } already installed elsewhere + package.sh: admin handles command outside of $PACKAGEROOT/bin + Makefile: install $(INSTALLROOT)/lib/make/package.mk +03-01-28 package.sh: admin remote commands on one line to please syslog +03-01-23 probe.win32: borland and mingw32 tweaks +03-01-22 package.sh: fix $CC test to ignore set -x trace -- duh +03-01-16 ditto.sh: tw --chop on by default +03-01-14 package.sh: use /bin/cp to copy previous binaries to bin/ok/ + package.sh: admin now initiates remote exec and copy from local host +03-01-12 package.sh: handle admin "xxx:" default root +03-01-03 probe.win32: add /usr/include/borland path truncation workaround +02-12-10 iffe.sh: 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.sh: package release now checks for second level files +02-11-22 package.sh: 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 packahe.mk: 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 + package.sh: fix package_use vs. PACKAGE_USE check +02-10-24 WWW.mk: 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 package.sh: fix lib/probe/C/make/probe update test +02-10-18 probe.win32: update for mingw + make.probe: add bash workaround to SHELLMAGIC test + package.sh: work around yet another cygwin hassle +02-10-17 iffe.sh: short circuit id check for *[-+/\\]* +02-10-08 regress.sh: unset FIGNORE to avoid rm . errors + package.sh: unset FIGNORE to avoid rm . errors + package.sh: $CC must at least compile and executable hello world +02-10-04 package.sh: $INSTALLROOT/lib/package/tgz=>$PACKAGEROOT/lib/package/tgz + package.mk: $(ED) => $(STDED), $(EDFLAGS) => $(STDEDFLAGS) + iffe.sh: add identifier checks for tests that (implicitly) require them + iffe.sh: disambiguate a few --config macros +02-10-02 iffe.sh: fix shell=bsh `hdr a/b' +02-09-30 package.sh: handle chmod of -* files + package.sh: verify that $SHELL is Bourne compatible + package.sh: tighten PACKAGE_USE logic PATH,LIBPATH,etc. validation + iffe.sh: fix bug that didn't define mac variable on success +02-09-22 package.sh: handle admin_action=ditto + iffe.sh: --config sizeof(foo) macro is SIZEOF_foo + iffe.sh: fix long.long test so it doesn't defeat uwin "typ long.long" + mamprobe.sh: convert $("foo") nmake string constants +02-09-21 mamprobe.sh: "-" info-path writes probe info to stdout +02-09-11 make.probe: move from nmake src to be part of mamprobe.sh + mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end + mamake.c: pass cc absolute path to mamprobe + package.sh: generate mamprobe -- yuk (at least its confined to INIT) + iffe.sh: lcl,nxt: drop default sys/ check + ditto.sh: tw --logical by default; add --physical +02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey +02-09-09 ditto.sh: test that remote .profile exists before sourcing +02-09-06 package.sh: don't ditto nfs junk + ditto.sh: --show now lists directory ops instead of enumerating all +02-09-05 ditto.sh: add --remote={rsh|ssh} + package.sh: add admin [[{rsh|ssh|-}]:]directory +02-09-02 iffe.sh: change 'print -r --' to 'print -r -' for ksh86 compatibility +02-09-01 cc.unix.mc68k: add for ancient 3b1 +02-08-22 package.sh: fix component() to test for components -- duh + Makefile: add LICENSE:.DONTCARE to workaround mam +02-08-11 iffe.sh: provide defaults for LD_* additions +02-08-07 ratz.c: change -m to use * instead of non-portable inverse video +02-07-17 mamprobe.sh: close tmp file in trap before rm for cygwin + package.sh: fix "type" to handle i1586 (P4) + package.sh: add the view action +02-06-28 package.sh: handle multiple packages for release action +02-06-27 package.sh: catch sol*.sparc=>sol*.sun4 when CC=gcc +02-06-14 package.sh: fix admin_action to not include qualifiers + package.sh: fix help/html doc typo +02-06-11 package.sh: fix ditto update doc to `PACKAGEROOT field matching *:*' +02-06-07 WWW.mk: change substitute $(") to +02-06-06 package.sh: 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 package.sh: fix update to differentiate *.sun4 and sun4 +02-03-27 package.sh: yacc/bison warning only if both missing +02-03-24 mamake.c: all shell actions wrapped with -c to avoid #! problems +02-03-23 package.sh: recover $PACKAGEROOT/bin/package if not in INIT package + package.sh: precheck $CC, not `cc' + package.sh: fix install to use pax -ps to preserve set-uid/gid + package.sh: fix install to use list.installed for existing files only +02-03-17 package.sh: fix PAX initialization that was sometimes omitted for read + package.sh: fix update delta sync fetch +02-02-14 iffe.sh: fix macro{ }end docs to include " + iffe.sh: add dfn to extract #define from headers + iffe.sh: handle nxt #include ok but no line sync + iffe.sh: drop local header clash logic + iffe.sh: add -X, --exclude=dir to exclude -I dirs + iffe.sh: lcl,nxt now generate <...> headers instead of "..." + package.sh: admin.db root dir matching -* disables host + package.mk: fix package.src.pat typo -- too many ) + package.mk: add { :COVERS: :DESCRIPTION: :REQUIRES: } + package.sh: handle { :COVERS: :DESCRIPTION: :REQUIRES: } + Makefile: move proto.c generation to the proto component dir +02-02-02 execrate.sh: add for .exe challenged win32 systems/commands + mamprobe.sh: add STD* commands/flags + mamake.c: update mamprobe info when older than mamprobe executable + package.sh: move ed/ex workaround to mamprobe.sh + package.sh: fix `host type' bug that incorrectly assumed sun4 for sol + package.sh: add execrate(1) hooks for challenged systems + package.sh: add check for { cc ar nm yacc/bison } before make + ratz.c: fix "rb" vs. "r" macro tests + iffe.sh: add nxt, similar to lcl but defines _nxt_foo for #include + iffe.sh,package.sh: remove vaibale from sccs,cvs ident strings -- duh +02-01-24 C+probe: check CC.DYNAMIC to handle cc that accept but ignore -B* + iffe.sh: handle 'mem struct.a.b' +02-01-22 iffe.sh: cache (internal) `foo vs. struct foo' test results + package.sh: uts.370 => uts.390 +02-01-18 package.sh: fix uts hosttype +02-01-17 package.sh: add 'results failed ...' to list failures only + package.sh: change ARCH internal var to all_types to avoid env conflict + iffe.sh: fix hdr/lib precheck that missed some -- ouch + iffe.sh: fix noexecute test that forgot to check compile first! +02-01-15 ratz.c: fix path[] type typo +02-01-01 package.mk: tighten license search +02-01-08 package.sh: `pwd` => ${PWD:-`pwd`} + package.mk: expand license file pattern match +02-01-04 iffe.sh: fix `exp name "value"' bug that duped "value" + iffe.sh: fix initial <sys/types.h> check to honor --config +01-12-25 iffe.sh: fix bug where -o file restored old file +01-12-23 package.mk: 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 ditto.sh: drop n+=v for ksh compatibility +01-11-21 ditto.sh: add rsync script replacement [hey, it works!] + package.sh: add [ditto]:directory notation to admin.db +01-10-31 package.sh: handle *.sum paths with embedded space + package.sh: change executable() to onpath() + package.sh: executable([!] foo) replaces test [!] -x foo (.exe hack) + package.sh: add os2 fix to `host type' + mamake.c: add .exe hack + iffe.sh: fix intrinsic function lib test + mamprobe.sh: update pic probe to match make.probe for linux.ia64 +01-10-30 package.sh: make action skeleton view now checks subdirs +01-10-20 package.sh: don't recurse into leaf dirs matching $MAKESKIP + package.mk: tarball package.notice replaces `license accepted' prompt + package.sh: eliminate `license accepted' prompt + package.sh: add update to download latest from a url + package.sh: use builtin arithmetic when we know its ksh + iffe.sh: unkown -> unknown +01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN + package.mk: convert to YYYY-MM-DD delta releases instead of NNNN + ratz.c: fix -m for paths containing <\>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 mamprobe.sh: add mam_cc_SHELLMAGIC + package.sh: 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 + mamprobe.sh: allow cc path with optional arguments +01-09-24 Makefile,package.sh: add $INSTALLROOT/bin/.paths initialization +01-09-19 package.mk: add recurse to list.package.* + package.sh: 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 package.mk: fix output capture to not generate files names with spaces +01-09-07 package.mk: fix delta release number search +01-08-11 package.mk: handle single gz executable packages (e.g., for ksh) + package.sh: fix package install to require nmake only if no *.sum + iffe.sh: 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 crossexec.sh: add + iffe.sh: add -x crosstype to run crossexec + iffe.sh: exp test now handles pass{}end fail{}end yes{}end no{}end + package.sh: add package host canon external-host-type-name + package.sh: fix `use USER' lookup for shells that support ~USER + cc.*: add -dumpmachine to dump target HOSTTYPE +01-05-18 iffe.sh: drop $HOME/tmp/t.sh 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 + iffe.sh: fix run *.sh for shells that don't $* across . command + cc.mvs.390: recode for /bin/sh +01-04-25 package.mk: include non cc-g variants by default + package.sh: *[._]* => *?[_.]* for mvs.390 /bin/sh +01-04-24 TEST.mk: no tests for VARIANT=="DLL" +01-04-22 package.mk,package.sh: tarball text members are ascii encoded +01-04-18 package.mk: 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 iffe.sh: fix bug that omitted runtime #define for `mac' op +01-02-22 cc.ibm.risc: 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 + package.sh: nmake check error output to /dev/null + package.sh: fix INIT a.out updates for knr cc + package.sh: package list now handles large tgz dirs + package.sh: *-ok executables moved to ok/* for *.dll systems + iffe.sh: change "exec >&-" to "exec >/dev/null" else linux mkdir fails! + mamake: handle `bind -lx [dontcare]' +01-02-12 ratz.c: fix _PACKAGE_ast includes + package.sh: $HOSTTYPE env overrides if $PACKAGEROOT/arch/$HOSTTYPE/ + package.sh: $CC ^HOSTTYPE=[A-Za-z_0-9.]*$ overrides HOSTTYPE + iffe.sh: fix dat code that used previous $tmp.exe + iffe.sh: fix dat code for _DLL imports +01-02-09 iffe.sh: 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 package.sh: fix package use for $INSTALLROOT != */$HOSTTYPE + package.sh: create intermediate recursion makefiles when needed + package.sh: add $SECONDS to the DEBUG trace prompt +01-01-01 ratz.c: #ifdef for uwin ncc + iffe.sh,package.sh: check PACKAGE_PATH for local installations + package.sh: add psrinfo for osf.alpha host cpu + package.sh: change pax --meter probe; some hang on /dev/tty + package.sh: fix `install flat ARCH' + mamake: eliminate loops from scan order + C+probe: add probe_verbose -V for aix cc=xlc + cc.ibm.risc,ldd.ibm.risc: add + package.mk: list refs to top-level licenses only + package.mk: add local link table to change log html +00-12-25 package.sh: `no package archives' is a hard error, duh + package.sh: reorder host type logic for lame shells + mamake.c: getcwd => getwd for NeXT -- how about posix==default guys + iffe.sh: really gross workaround for NeXT -lposix stdout null's + iffe.sh: handle cc -E that insists on compiling +00-12-15 iffe.sh: ancient sh function call blows $*; call only when $# == 0 + *.sh: `getopts 2>/dev/null` => `(getopts)2>/dev/null` for ancient sh + package.sh: fix LD_LIBRARY*_PATH initialization + cc.next.m68k: add for _POSIX_SOURCE and linker multiply defined syms +00-12-12 ratz: add --meter + package.sh: a few VPATH fixes + Makefile: don't override *.mips* cc if -version not accepted +00-12-11 package.mk: *.inx now contains name=value +00-12-07 package.sh: handle PC netscape . => _ pathname mangle + WWW.mk: .tar.gz => .tgz +00-11-27 package.sh: add checklicense() to do license checks at read time + package.mk: change component list from preformat to table +00-10-31 package.mk: *.pkg must assert closure + package.mk: add cc- variants to list.package.binary + package.sh: omit dups from package list + package.sh: invalid arg gives one line Usage + package.sh: relax checkaout checks for non-owners + package.sh: package use sets NPROC if not already set or [01] + proto.c: add $(INSTALLROOT)/include/ast hack +00-10-26 WWW.mk: add .SOURCE rhs to :WWWPAGE: +00-10-25 package: fix install + package.mk: add list.install +00-10-22 regress: fix VIEW to skip empty dirs +00-10-19 package.mk: $(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 + package.mk: 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 + package.mk: 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 + package.mk: "ratz" package adjustments + Makefile: use :PACKAGE_INIT: to support binary INIT packages + WWW.mk: 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 + package.mk: 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) + WWW.mk: fix mm2html option quoting + WWW.mk: add .SCAN.mm + WWW.mk: don't force static=1; grab dll's instead + *.sh: fix getopts test to handle botched implementations like osf.alpha + iffe.sh: 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 WWW.mk: WWWDIR and MM2HTMLINFO are now lists searched in $(HOME) +99-08-11 hostinfo: fix type sgi.mips4 +99-06-24 WWW.mk: add +99-06-08 hostinfo.sh: ${TMPDIR:-/tmp} +99-06-07 TEST.mk: 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 + add cc.hp.pa +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 long.xxx 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 long.xxx +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 --- +</PRE> +<P> +<HR> +<TABLE border=0 align=center width=96%> +<TR> +<TD align=left></TD> +<TD align=center></TD> +<TD align=right>March 13, 2012</TD> +</TR> +</TABLE> +<P> + +</TD></TR></TBODY></TABLE> + +</BODY> +</HTML> diff --git a/lib/package/INIT.pkg b/lib/package/INIT.pkg new file mode 100644 index 0000000..32f1456 --- /dev/null +++ b/lib/package/INIT.pkg @@ -0,0 +1,12 @@ +INIT :PACKAGE: + +:CATEGORY: admin utils + +:INDEX: the package command with support scripts and utilities + +:DESCRIPTION: + The INIT package is required by all but the standalone + and self extracting archive packages. It contains + the package command, support scripts, and utilities. + The package command installs binary packages, makes + source packages, and generates new package tarballs. diff --git a/lib/package/INIT.req b/lib/package/INIT.req new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/package/INIT.req diff --git a/lib/package/INIT.ver b/lib/package/INIT.ver new file mode 100644 index 0000000..f681461 --- /dev/null +++ b/lib/package/INIT.ver @@ -0,0 +1 @@ +INIT 2012-02-29 2012-02-29 1 diff --git a/lib/package/LICENSES/epl b/lib/package/LICENSES/epl new file mode 100644 index 0000000..b1dfb87 --- /dev/null +++ b/lib/package/LICENSES/epl @@ -0,0 +1,221 @@ ++------------------------------------------------------------------------------+ +| This license covers all software that refers to the URL | +| http://www.eclipse.org/org/documents/epl-v10.html | ++------------------------------------------------------------------------------+ + +Eclipse Public License - v 1.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC + LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM + CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' from + a Contributor if it was added to the Program by such Contributor itself or + anyone acting on such Contributor's behalf. Contributions do not include + additions to the Program which: (i) are separate modules of software + distributed in conjunction with the Program under their own license + agreement, and (ii) are not derivative works of the Program. + + "Contributor" means any person or entity that distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which are + necessarily infringed by the use or sale of its Contribution alone or when + combined with the Program. + + "Program" means the Contributions distributed in accordance with this + Agreement. + + "Recipient" means anyone who receives the Program under this Agreement, + including all Contributors. + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly perform, + distribute and sublicense the Contribution of such Contributor, if any, and + such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of the + Contribution and the Program if, at the time the Contribution is added by + the Contributor, such addition of the Contribution causes such combination + to be covered by the Licensed Patents. The patent license shall not apply to + any other combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor disclaims + any liability to Recipient for claims brought by any other entity based on + infringement of intellectual property rights or otherwise. As a condition to + exercising the rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual property rights + needed, if any. For example, if a third party patent license is required to + allow Recipient to distribute the Program, it is Recipient's responsibility + to acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright license + set forth in this Agreement. + + 3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form under + its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and + conditions, express and implied, including warranties or conditions of title + and non-infringement, and implied warranties or conditions of + merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and consequential + damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are offered + by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable manner + on or through a medium customarily used for software exchange. + + When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + + Contributors may not remove or alter any copyright notices contained within + the Program. + + Each Contributor must identify itself as the originator of its Contribution, + if any, in a manner that reasonably allows subsequent Recipients to identify + the originator of the Contribution. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities with + respect to end users, business partners and the like. While this license is + intended to facilitate the commercial use of the Program, the Contributor + who includes the Program in a commercial product offering should do so in a + manner which does not create potential liability for other Contributors. + Therefore, if a Contributor includes the Program in a commercial product + offering, such Contributor ("Commercial Contributor") hereby agrees to + defend and indemnify every other Contributor ("Indemnified Contributor") + against any losses, damages and costs (collectively "Losses") arising from + claims, lawsuits and other legal actions brought by a third party against + the Indemnified Contributor to the extent caused by the acts or omissions of + such Commercial Contributor in connection with its distribution of the + Program in a commercial product offering. The obligations in this section do + not apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in writing + of such claim, and b) allow the Commercial Contributor to control, and + cooperate with the Commercial Contributor in, the defense and any related + settlement negotiations. The Indemnified Contributor may participate in any + such claim at its own expense. + + For example, a Contributor might include the Program in a commercial product + offering, Product X. That Contributor is then a Commercial Contributor. If + that Commercial Contributor then makes performance claims, or offers + warranties related to Product X, those performance claims and warranties are + such Commercial Contributor's responsibility alone. Under this section, the + Commercial Contributor would have to defend claims against the other + Contributors related to those performance claims and warranties, and if a + court requires any other Contributor to pay any damages as a result, the + Commercial Contributor must pay those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON + AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER + EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR + CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A + PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all risks + associated with its exercise of rights under this Agreement , including but + not limited to the risks and costs of program errors, compliance with + applicable laws, damage to or loss of data, programs or equipment, and + unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY + CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION + LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY + OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of the + remainder of the terms of this Agreement, and without further action by the + parties hereto, such provision shall be reformed to the minimum extent + necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Program itself + (excluding combinations of the Program with other software or hardware) + infringes such Recipient's patent(s), then such Recipient's rights granted + under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to + comply with any of the material terms or conditions of this Agreement and + does not cure such failure in a reasonable period of time after becoming + aware of such noncompliance. If all Recipient's rights under this Agreement + terminate, Recipient agrees to cease use and distribution of the Program as + soon as reasonably practicable. However, Recipient's obligations under this + Agreement and any licenses granted by Recipient relating to the Program + shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, but + in order to avoid inconsistency the Agreement is copyrighted and may only be + modified in the following manner. The Agreement Steward reserves the right + to publish new versions (including revisions) of this Agreement from time to + time. No one other than the Agreement Steward has the right to modify this + Agreement. The Eclipse Foundation is the initial Agreement Steward. The + Eclipse Foundation may assign the responsibility to serve as the Agreement + Steward to a suitable separate entity. Each new version of the Agreement + will be given a distinguishing version number. The Program (including + Contributions) may always be distributed subject to the version of the + Agreement under which it was received. In addition, after a new version of + the Agreement is published, Contributor may elect to distribute the Program + (including its Contributions) under the new version. Except as expressly + stated in Sections 2(a) and 2(b) above, Recipient receives no rights or + licenses to the intellectual property of any Contributor under this + Agreement, whether expressly, by implication, estoppel or otherwise. All + rights in the Program not expressly granted under this Agreement are + reserved. + + This Agreement is governed by the laws of the State of New York and the + intellectual property laws of the United States of America. No party to this + Agreement will bring a legal action under this Agreement more than one year + after the cause of action arose. Each party waives its rights to a jury + trial in any resulting litigation. diff --git a/lib/package/ast-ksh.README b/lib/package/ast-ksh.README new file mode 100644 index 0000000..7d67d3f --- /dev/null +++ b/lib/package/ast-ksh.README @@ -0,0 +1,5212 @@ +The AT&T Software Technology ast-ksh package from AT&T Research +contains ksh and support libraries. This is the minimal set of +components needed to build ksh. This package is a superset of the +following package: ksh; you won't need this if you download ast-ksh. + +Source Package Installation Instructions: + + (1) Do not install packages as root/super-user. Although some components may + have setuid executables, few must be owned by root. These are best + changed manually when the security implications are understood. + (2) Choose a package root directory and cd to it. This will be a local work + area for all packages. + (3) These instructions bypass the click to download package links on the + download site. If you already clicked, or if your system does not have + curl(1), hurl(1), lynx(1) or wget(1) then use the alternate instructions + for (3),(4),(5) in plan B below. Plan B installs the hurl(1) + script which works with ksh and modern bash. The top level URL is: + URL=http://www.research.att.com/sw/download + (4) If the bin/package script does not exist then run: + test -d bin || mkdir bin + url=$URL/package + (wget -O bin/package $url||curl -L $url||hurl $url) > bin/package + chmod +x bin/package + (5) Determine the list of package names you want from the download site, then + use the package(1) command to do the actual download: + bin/package authorize "NAME" password "PASSWORD" \ + setup source $URL PACKAGE ... + (Refer to the AUTHORIZATION paragraph on the main download page for + NAME/PASSWORD details.) This downloads the closure of the latest + source package(s); covered and up-to-date packages are not downloaded again unless + package force ... is specified. Package content is verified using md5sum. + If the package root will contain only one architecture then you can install in bin and + lib instead of arch/HOSTTYPE/bin and arch/HOSTTYPE/lib by running this + instead: + bin/package authorize "NAME" password "PASSWORD" \ + flat setup source $URL PACKAGE ... + To update the same packages from the same URL run: + bin/package setup source + (6) Build and install; all generated files are placed under arch/HOSTTYPE + ($INSTALLROOT), where HOSTTYPE is the output of bin/package (with no + arguments.) name=value arguments are supported; CC and debug=1 (compile + with -g instead of -O) are likely candidates. The output is written to + the terminal and captured in $INSTALLROOT/lib/package/gen/make.out: + bin/package make + (7) List make results and interesting errors: + bin/package results + Run the regression tests: + bin/package test + List test results and errors: + bin/package results test + (8) The generated binaries are position independent, i.e., they do not + contain hard-coded paths. However, commands with related files, like + file(1) and nmake(1), require the path of the bin directory to be + exported in PATH. + (9) You can run the binaries directly from the package root, or you can + install them in a public root after you are satisfied with the make and + test actions (requires the AT&T nmake(1) command): + bin/package flat install DIRECTORY PACKAGE + This will install in DIRECTORY/bin and DIRECTORY/lib. If you want to + preserve the arch/HOSTTYPE hierarchy under DIRECTORY then omit the + flat argument. If you don't have nmake(1) then the following will do a + flat install: + cd $INSTALLROOT + cp -p -r bin lib include DIRECTORY + (10) To summarize, after the first time the download, build, and test cycle + for the latest source release is: + bin/package setup source + bin/package make + bin/package test + +Source Package Installation Instructions -- Plan B: + + (3) Create the subdirectory lib/package/tgz and download all package archives + into that directory. + (4) If the bin/package script does not exist then manually read the INIT + source package: + gunzip < lib/package/tgz/INIT.YYYY-MM-DD.tgz | tar xvf - + Note that some browsers automatically unzip downloaded without warning. + If the gunzip fails try: + tar xvf - lib/package/tgz/INIT.YYYY-MM-DD.tgz + If your system does not have tar(1) or gunzip(1) then download the ratz + source package, compile it, and manually read the INIT + source package: + mkdir bin + cp lib/package/tgz/ratz.YYYY-MM-DD.c lib/package/tgz/ratz.c + cc -o bin/ratz lib/package/tgz/ratz.c + bin/ratz -lm < lib/package/tgz/INIT.YYYY-MM-DD.tgz + (5) Read all unread package archive(s): + bin/package read + Both source and binary packages will be read by this step. + +All recorded changes follow. + +:::::::: ksh93 :::::::: + +12-02-29 --- Release ksh93u+ --- +12-02-29 A bug which could lead to a core dump when more that four shared + libraries were added with the builtin command has been fixed. +12-02-29 Fixed a few bugs which caused SIGCHLD to be blocked preventing + background jobs from being reaped until a foreground job was run. +12-02-27 A bug in which sh -c for a simple command caused a fork() has been + fixed. +12-02-27 A timing bug on systems such as AIX that doesn't support vfork() + that could cause the exist status to get lost has been fixed. +12-02-22 A private file descriptor that was not close-on-exec for a command + substitution and has been fixed. +12-02-14 A bug in which ^Z did not stop a pipeline when the last component + was a shell built-in has been fixed. +12-02-14 getconf("PATH") used to initialize ed(1) path. +12-02-13 +In earlier version read from standard input would fail when called + from the KEYBD trap. Now read options -N, -n, and -t should work + when called from a KEYBD trap. +12-02-13 If FCEDIT is not set and fc is invoked without the -e option, + ed will be invoked if found instead of /bin/ed. +12-02-10 Another bug in the saving and restoring of IFS in a subshell + that caused a core dump has been fixed. +12-02-08 A bug in which .sh.fun disciplines could be cleared after a + function completes has been fixed. +12-02-08 A bug in job control in which the foregroup process group was not + set correctly after restarting a stopped pipeline has been fixed. +12-02-07 A bug in which numbers with leading zeros could be treated as + octal constants outside of ((...)) has been fixed. +12-02-06 A bug in arithmetic with compound variables containing multiple + array elements has been fixed. +12-02-02 A bug in the ulimit option table was fixed. +12-01-26 A bug in which a set command that did not change monitor could + effect the behavior of the monitor when monitor mode is on is fixed. +12-01-21 +You can now test whether the shell implements a math function using + typeset -f .sh.math.name, where name is the name of the function. +12-01-21 A bug in which typeset -L and typeset -R did not handle multibyte + characters correctly has been fixed. +12-01-20 A bug that could cause the shell to hang waiting for an incorrect + job pid has been fixed. +12-01-19 A memory leak which occured for a nested command subtiution has been + fixed. +12-01-17 A bug in which typeset -u PS1 could enable the uppercase attribute + for some other variables, for exampe, HISTFILE has been fixed. +12-01-16 A bug in which .sh.match was not correct after a substring match when + the replacement string contained a substring match has been fixed. +12-01-12 +Files that are sourced from profile files are now read and executed + one command at a time so that alias definitions take effect as they + do for profile files. +12-01-12 A bug in which whence -p would find a function if one existed and + there was no command of that name on PATH. +12-01-11 Change b_* prototype (int, char**, void*) => (int, char**, Shbltin_t*). +12-01-05 A bug in which read was not terminating for a signal that had a trap + set has been fixed. +12-01-01 A timing problem with >; has been fixed. +12-01-01 A macro expansion memory leak has been fixed. +11-12-26 A bug in array assignments of the form arr=( $arr[i] ...) in which + arr was not unset before the assignment has been fixed. +11-12-20 A number of code changes were made based on the results of errors + indicated by static code analysis. +11-12-13 In vi edit mode a lteral <TAB> can now be entered by preceding it + with a backshash. +11-12-13 When tab is entered for completion after a ' or ", the ' and " + characters are no longer deleted. +11-12-07 A bug in which a program in the current direcotry with a . in the + name could fail to execute when both PATH and FPATH end with :. has + been fixed. +11-12-07 I fixed a bug in which a variable expansion in a large here-document + could be expanded to a null string. +11-12-06 An optimization to read was added in the case the the read command + was redirected from a file. +11-12-06 Changes were made to make the line limit for read unlimited by + default. +11-12-05 A bug in which unsetting an array variable did not completely clear + the variable in some cases has been fixed. +11-12-02 +The printf alternative character # when applied to the %q format will + quote argument in a form suitable for a field in a .csv format file. +11-12-02 +A -S option was added to read to be able to read .csv format files. +11-11-28 A bug in which redirection of standard error in a function called from + command substitution caused standard error to be lost has ben fixed. +11-11-21 [[ (-n foo) ]] no longer requires a space before (. +11-11-11 The readonly attribute for a variable now applies to compound + assignments to that variable. +11-11-07 Changes were made to reduce the stack size to allow deeper function + recursion. +11-10-10 +Added alternate flag to printf %H for encoding of URI's. +11-10-10 A bug which could lead to a core dump when the shell was invoked + with more than twenty five open files has been fixed. +11-10-06 A bug in the scoping of name references in functions called by other + functions has been fixed. +11-10-05 A bug in which wait on a pid may return the exit status of an + earlier background job with that pid instead has been fixed. +11-09-22 A bug in which a read timed out with TMOUT did not always restore + the terminal state has been fixed. +11-09-21 An optimization that allowed the last command in a script to use + the same process id as the script has been eliminated. +11-09-21 Added letoctal option that enables the let command to recognize + octal constants starting with 0. +11-09-20 A bug in which ${var.} could cause a core dump has been fixed. +11-09-20 A bug with SHOPT_EDPREDICT when neither vi or emacs was enabled for + lines beginning with # when in a multibyte locale has been fixed. +11-09-20 A bug in emacs edit mode with SHOPT_EDPREDICT that would cause + history searches matching comments lines to generate predictions + has been fixed. Only user typed comment lines generate predictions. +11-09-20 A bug in emacs edit mode with a search that matches a comment line + that could cause a core dump has been fixed. +11-09-16 A bug in which a command name ending in .. could cause the shell to + abort has been fixed. +11-09-16 The characters ! + - % and @ in file names are no longer escaped with + file name completion. +11-09-13 The let command no longer treats numbers starting with 0 as octal + constants. +11-09-08 A bug in which printf "%R" could cause a core dump for invalid shell + patterns has been fixed. +11-08-09 With set -u, ${var#pattern} reported that var was unset for special + variables. +11-08-03 A bug in which the shell did not preserve the exit status for a + coprocess has been fixed. +11-08-02 A bug in the saving and restoring of IFS in command substitution that + caused a core dump has been fixed. +11-07-21 Modified the 10-08-27 bug fix so that background jobs started in for + and while loops created interactively generate completion messages. +11-07-20 I fixed a bug in here documents in which multi-byte characters that + crossed buffer boundaries were not processed correctly. +11-06-22 The shell compiler now supports process substitution. +11-06-22 +Added code to support process substitution on systems that do + not supply the /dev/fd directory. +11-06-21 Fixed extraneous jobs Done messages when builtin is at the end of a + pipeline. +11-06-20 Fixed two regression tests. +11-06-20 Fixed a bug introduced on last update. +11-06-14 A bug with pipefail in which the shell would wait for background + jobs to complete has been fixed. +11-06-09 A bug which caused the options.sh regression test to fail on OS390 + Linux has been fixed. The bug could also have affected other systems. +11-06-07 +A number of changes to support the still undocuments namespace option + have been added. +11-06-06 A bug in which command substitution of eval would hang when it had + standard error redirected to standard output has been fixed. +11-06-01 A bug in case statement fall through (;&) ignoring set -e was fixed. +11-06-01 A bug in which creating a left or right justified upper or lowercase + variable with an empty string has been fixed. +11-06-01 A bug in which the .paths directory wasn't read when a subshell was + executed before any other command has been fixed. +11-05-31 The shell now gives an error when a type variable is assigned to + an array instance when the array has been declared a compound variable + array. +11-05-31 A bug in which typeset -m of an array instance did not remove the + original instance has been fixed. +11-05-28 A bug in which typeset -m dest=src fails when src and are passed as + name references was fixed. +11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound + variable core dumps has been fixed. +11-05-28 Two bugs in the display of arrays of compound variables with print -v + have been fixed. +11-05-27 A bug with command substitution with the shift jis locale has been + fixed. +11-05-25 A bug in which unset -f foo, called within function foo could cause + the shell to core dump has been fixed. +11-05-24 A bug in unsetting arrays of compound variables that could lead to + a core dump has been fixed. +11-05-24 A scoping bug in with typeset -m for variables passed as references + has been fixed. +11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an + exception has been fixed. +11-05-03 Two more scoping bugs with name references and read -C were fixed. +11-05-03 A potential race condition which occurs when here-documents are + processed in asynchronous blocks has been eliminated. +11-05-02 Another scoping bug with name references defined in a function has + been fixed. +11-05-02 A bug in which the shell discards saved exit status of a job if it is + followed by a subshell execution has been fixed. +11-04-28 The shell now checks for numerical overflows with process ids. +11-04-28 Another scoping bug with compound variables defined by name references + inside a function has been fixed. +11-04-28 A bug which caused a core dump on 32 bit systems with the basic.sh + regression test has been fixed. +11-04-27 A scope binding error for name references has been fixed. +11-04-27 Assignment of compound variable to compound array element by name + is now working. +11-04-26 I fixed a bug with SHOPT_FIXEDARRAY compilation that could cause + an a core dump for not fixed arrays. +11-04-25 A bug in the references to two dimensional compound arrays has + been fixed. +11-04-20 A bug in which a name reference to a multidimentional index array + index, nameref x=foo[3][4], did not work correctly has been fixed. +11-04-18 Changes were added to allow fixed size arrays of variable sized + objects when the SHOPT_FIXEDARRAY compile option defined on 10-09-28. +11-04-18 A bug in which name references to array elements could fail has + been fixed. +11-04-15 +A compile option, SHOPT_2DMATCH, has been added which causes + .sh.match to be a two dimensional array after ${var//pat/str} + where the first dimension is the pattern number and the second is + the match instance. +11-04-11 A bug in which readonly var, where var is exported could cause var + to be unset has been fixed. +11-04-06 A tokenizer bug in which ${x/{3}(\d)/ } would cause in infinite + loop has been fixed. +11-04-05 A bug in which ${!x.} could cause a core dump has been fixed. +11-04-04 A bug in which cleaning out the history file could terminate before + keeping all the recent history events has been fixed. +11-03-29 A bug in which ${#array[@]} was 1 rather than 0 after issuing + typeset array[7] has been fixed. +11-03-29 The subscript out or range message for fixed arrays has been fixed. +11-03-29 A bug in which suspend could cause a core dump has been fixed. +11-03-24 For the showme option added 09-09-09, commands beginning with a ; + inside an arithmetic for loop, no longer produce syntax errors. +11-03-18 A bug in _WINIX ~domain/user expansion has been fixed. +11-03-16 A bug in the pipefail option which could cause a script to hang + has been fixed. +11-03-12 The shell no longer treats ${##pattern} as a syntax error. +11-03-11 A bug in typeset -u on systems that don't supply the towctrans() + function has been fixed. +11-03-11 A bug in which a compound assignment of the form var[sub]=(...) + would evaluate sub for each assignment has been fixed. +11-03-07 A bug in which reassigning a compound variable to an associative + array index could incorrectly increase the count of the number + of elements has been fixed. +11-03-04 +The tilde expansion on windows has been modified to handle user + names of the form domain/user so that ~domain/user now expands + to the home directory of that domain user. +11-03-03 A bug in which the width of the prompt was calculated incorectly + which cause the wrong line length for edit commands has been fixed. +11-03-02 A bug in which a global variables set from within a function inside + a subshell can leave side effects in parent shell has been fixed. +11-03-01 A bug in which whence -a could dump core when the first match + was due to : in PATH and the program was in the current directory. +11-02-28 A bug in emacs mode with SHOPT_EDPREDICT (added on 10-05-20) which + disabled prediction on a line starting with # when the cursor was not + at the end of line has been fixed. +11-02-28 The output format for compound variables with set has been fixed. +11-02-25 A bug which could lead to a core dump occurred when a shell script + without #! is invoked by name from a parent shell that has name + references defined and the script creates name references of the + same name. +11-02-21 The shell now fails with a syntax error when a here-document in a + command substition is not completed before the closing ), for + example, $( foobar <<! ) + here_doc + !. +11-02-18 A bug in which the value of $0 in a function defined by name() + was changed to name has been fixed. +11-02-17 A bug in which the declaration typeset var[100] did not work + correctly has been fixed. +11-02-15 A bug in which [[ -v sh.match ]] did not work correctly has been + fixed. + +11-02-08 --- Release ksh93u --- +11-02-08 A bug in which opening standard output after it has been closed with + exec 1>&- doesn't work has been fixed. +11-02-07 A bug on some systems for which a command subtitution could hang + has been fixed. +11-01-28 A bug in file name completion for files containing both multibyte + characters shell special characters has been fixed. +11-01-18 The .sh.match variable now shows elements that do not match as + as not set rather than an empty string. +11-01-18 A bug with typeset -m of an array into an element of an indexed + array has been fixed. +11-01-13 A bug in handling of arrays of compound variables inside ((...)) which + reported a syntax error been fixed. +11-01-10 A bug in arithmetic assignment operators of the form op= for array + variables when the same array was referenced on the left and the + right hand side with different indices has been fixed. +11-01-10 A bug in which the output of time was lost when { time...;} 2>&1 + occurred inside command substition has been fixed. +11-01-07 [[ -v sh.match[i] ]] was returning false when sh.match[i] was set. +11-01-05 Added and modified warning messages with sh -n. +11-01-02 Fixed bugs with typeset -l/-u/-M and arrays. +10-12-28 Fixed a bug with typeset -l/-u/-M values in arithmetic expressions. +10-12-26 Fixed a time parsing bug in sleep and localeconv() initialization. +10-12-23 Prevented the shell from generating a core dump when it sends itself + a termination signal because the last command terminated with that + signal. This prevents a core dump to be overwritten by the shell. +10-12-22 A bug in the expansion of ${A[@]} ${B[@]}, introduced in 10-12-01 + when A="" B=B has been fixed. +10-12-21 +Use MS_3D in b_vpath() for setting win32 WoW mount defaults. +10-12-17 A bug in the expansion of ${var:i:j} which caused a core dump when + i > ${#var} has been fixed. +10-12-16 +sleep now treats . as decimal point even in locales that use comma. +10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer + mapping as provided with wctrans(). +10-12-10 A bug in which typeset -l displayed namespaces as well as lower case + variables has been fixed. +10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline + whose right hand side is a builtin, and whose left hand side ends in + a simple command that has standard output redirected has been fixed. +10-12-06 A bug in hexfloat assignments when the right hand side is a string + variable starting with 0x has been fixed. +10-12-01 A bug in the expansion of ${$1+"$@"} which causes the last positional + parameter to disappear when it is empty has been fixed. +10-12-01 A number of changes were made to reduce the startup time. +10-11-29 When wait is interrupted by a signal that is caught, it now exits + with a non-zero exit status. +10-11-29 When a variable is used directly in an arithmetic expression, + leading zeros no longer cause the value to be treated as an + octal constant. This was true in previous versions for justified + variables. +10-11-29 An incorrect warning message was eliminated with the -n option for + arithmetic expressions with associative arrays. +10-11-29 Some changes were made to slightly reduces startup time. +10-11-24 A bug in which a name reference is make to arr[0] when arr is not + an array has been fixed. +10-11-23 If a type definition is made without a compound variable assignment it + produces an error message and no longer shows up as a defined type. +10-11-22 The handling of \ inside [...] for for shell and ~(E) patterns has + been fixed. +10-11-22 A patch was made to pfsh to handle an error case. +10-11-22 +Modified types defined in namespace so that they do not clash with + types in other namespaces. Types can be referenced using + .namespace.typename. +10-11-22 A bug which caused functions addressed as .namespace.funct to not + work has been fixed. +10-11-22 A bug in which if nr was a name reference to an unset associative + array subscript, then ${!nr} did not output the subscript correctly + has been fixed. +10-11-18 A bug in which shcomp -n was not processing double quotes correctly + has been fixed. +10-11-18 Fixed a bug in which typeset -T foo; typeset -T could cause a + core dump. +10-11-17 Fixed a bug in which the error message for set -u could come out + garbelled. +10-11-17 Modified the parser so that typeset -a var=(...) no longer checks + the first index for aliases and reserved words. +10-11-17 A bug in which a subshell command consisted of only a for or until + command has been fixed. +10-11-16 Fixed a bug in which typeset -u would display namespace variables + as well as upper case variables. +10-11-16 A bug which could cause a core dump when unsetting a type variable + when there are references to type elements has been fixed. +10-11-15 A bug which could cause a core dump when unsetting a compound + array variable when there are references to array subscripts has + been fixed. +10-11-15 A bug in which using typeset -m to move an indexed array instance + to another array could cause the array to display incorrectly has + been fixed. +10-11-12 A bug in which the unset discipline function for a type is called + when the type is initialized has been fixed. +10-11-12 The sequences \< and \> are now preserved after patterns containing + ~(E) in ${var/pattern/string} expansions. +10-11-11 A bug in typeset -m when the variables were compound arrary instances + has been fixed. +10-11-10 A bug in output of a compound variable with types containing types + has been fixed. +10-11-10 Fixed ``name=value export [-p]'' to list environment. +10-11-09 shtests resets SIGPIPE to SIG_DFL for all tests. +10-11-09 Fixed a bug in expansion of $"..." when used in assignments. +10-11-09 Fixed a getaddrinfo() memory leak that didn't call freeaddrinfo() + after an interrupt. +10-11-08 Modified the behavior of set -u so that the shell terminates with + error message when when var is unset with ${!var} and ${#var}. +10-11-02 Fix a bug in which a signal received while in a subshell could be + ignored. +10-10-26 Fix a bug where terminal interrupt was ignored while in vi/emacs + edit search mode. +10-10-26 Fix $'a\0b'c to expand to 'ac'. +10-10-26 Provide user defined round() if not in <math.h>. +10-10-26 Fix bug where $((undefined_function(1))) dumped core. +10-10-22 Provide user defined iszero() if not in <math.h>. +10-10-22 Fixed a bug with BGX compile option that could cause the shell to + hang. +10-10-22 Fixed a bug with user define math function on systems for which + char is unsigned. +10-10-21 A bug in which function autoloaded in a function leaves a file open + has been fixed. +10-10-20 Modified the behavior of set -u so that the shell terminates when + when var is unset with ${var op string} when op is #, % or /. +10-10-20 Fixed a bug with the AUDIT option in which the audit file was not + not close-on-exec. +10-10-20 +Made a number of changes and fixes for the NAMESPACE compile option + which as added on 10-06-09 but some problems still remain. +10-10-15 Fixed a bug in which arithmetic functions (added on 10-03-24) did + not work when the function definition was in the same compound + command in which the function was referenced. +10-10-13 A bug in which creating an associative array of compound variables + with no members as an element of a compound variable did not work + has been fixed. +10-10-08 A bug in which killing the last command in a function defined + with function name, terminated the calling script has been fixed. +10-10-08 A bug which could cause a core dump if IFS is unset inside a function + has been fixed. +10-10-07 +To reduce unwanted side effects, invoking typeset without the export + option and without an assignment now causes the variables to be unset + if the variable is inherited from the environment. +10-10-06 The closing brace for ${ command } is now a token no matter what + character follows it. +10-10-04 The change for $'...' expansion on 10-08-09 did not expand parameters + contained in the error message and this has been fixed. +10-10-04 A bug in which a declaration of indexed array (-a_ in a type + definition would be displayed as a compound indexed array (-C -a) + has been fixed. +10-09-30 The C99 math function ldexp has been added. +10-09-30 A bug with two dimensional arrays with expansion of the form + ${ref[0..5]} where ref is a nameref to array[i] has been fixed. +10-09-29 A bug in which an eval with redirections invoked from a dot script + would not restore the file has been fixed. +10-09-29 A bug in which loading a function from FPATH could leave a file + descriptor open has been fixed. +10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being + evaluation. It allows fixed sized indexed arrays be to defined + using "typeset array[dim1][dim2]...[dimn]". Fixed sized arrays + are used the same way indexed arrays are. Currently, only fixed + arrays of fixed objects (float, int, and justifies objects) are + supported. +10-09-22 A bug which could cause an exception when a function with static + variables was redefined has been fixed. +10-09-21 A bug in the processing of (command&) which created a job in the + parent process has been fixed. +10-09-21 A for loop optimization bug with arithmetic expression evaluation + has been fixed. +10-09-21 A bug in which a recursive function containing a pipeline could + lead to an exception fixed after 8 levels of recursion has been + fixed. +10-09-18 A bug in which the count of elements in an array was wrong leading + to an exception has been fixed. +10-09-13 A bug which occurred when both xtrace and showme options where + specified in which the xtrace option disabled showme has been fixed. +10-09-13 A bug in which creating a reference to an array variable with any + elements could cause subsequent array elements to be treated as + compound variables has been fixed. +10-09-09 A bug which caused ((c.ar[x][y])) to be treated as a syntax error + has been fixed. +10-09-08 A bug in the processing of references to multidimensional arrays + in arithmetic expressions has been fixed. +10-09-08 A bug in the handling of multi-dimensional arrays which caused + the number of elements in each dimension to be incorrect has + been fixed. +10-09-07 The change for messages on 10-08-09 did not handle message in + assignments and this has been fixed. +10-09-07 A bug in the indentation of compound variables in arrays when + output with print -v has been fixed. +10-09-07 A rare bug with indexed arrays when assigned a null string that could + cause a core dump has been fixed. +10-09-03 A number of changes were made for jobs pools. +10-08-31 typeset -p was modified to output name references after other + variables so that the output could be used as input. +10-08-31 A bug with typeset -p in which variables with attributes but + without attributes were not displayed correctly has been fixed. +10-08-27 +When running a subshell, the current pool is unset. +10-08-27 A bug in which jobs started from within for or while lists in + interactive shells could generate completion messages has been fixed. +10-08-25 Fixed a couple of bugs related to job pools. +10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of + those names are handled by the shell. +10-08-24 A bug in the running of a compiled dot script in which only the + first command was executed has been fixed. +10-08-23 A bug which sometimes caused a core dump with a configure script + has been fixed. +10-08-20 A bug in command substitution which caused a configure script to + hang has been fixed. +10-08-19 Eliminated unnecessary ; from output of compound variable with + typeset -p. +10-08-17 Fixed a bug in command substitution in which under certain + circumstances a file whose size is a power of 2 plus one, and the last + character was not a new-line, could cause memory corruption. +10-08-13 +Added static discipline functions to type similar to C++ static + class functions. +10-08-11 A bug in time when applied to a pipeline in which the shell did + not wait for all elements of the pipeline to complete has been fixed. +10-08-11 Restored sh_fmtq() quoting to not quote NAME= in NAME=VALUE. +10-08-09 +Modified the expansion of message strings, $"...", so that they + are expanded each time they are referenced rather than expanding + them when the script is compiled or read in. +10-08-06 +The process id for jobs in job pools is now of the form poolname.n + where n is the jobid in that pool. Commands that accept job names + or numbers now understand names in this format. +10-08-05 A bug in which an assignment from within an arithmetic expression + inside a function would create a local variable has been fixed. +10-08-04 A bug in the expanding of variables whose names contain multibyte + characters has been fixed. +10-08-04 A bug which caused an exception when processing scripts compiled + with shcomp -n has been fixed. +10-08-02 Tests using very small buffer sizes uncovered a number of bug most + connected with here documents which have been fixed. +10-07-27 The format modifier , used for digit grouping with d and f formats + has been documented. +10-07-26 cd '' now produces and error rather than changing to the current + directory. +10-07-26 A bug in multi-byte locales which the last character of a + multi-byte character is a \ or pattern character which could occur + when the character was the last character of a command substitution + has been fixed. +10-07-23 Another bug in the processing of ${var:offset;len} in multi-byte + locales when len is larger than the number of characters has been + fixed. +10-07-23 Many coding changes have been made to eliminate most of the uses + of global variables in the shell code. +10-07-22 Fixed a bug in which discipline functions were not being invoked + when it was invoked as ref.discipline where ref was a name reference + to an array instance. +10-07-22 Fixed a bug in which discipline functions were not being invoked it + was invoked on a two dimensional array, i.e., arr[5][9].discipline. +10-07-19 Fixed a buffering problem which occurred when running a script with + ssh and the parent ssh process is killed. +10-07-14 Modified the parser to treat ((...)) inside [[...]] as ( (...) ) to + that it is a nested (...). +10-07-09 A bug in the handling of process substitution inside command + substitution as part of a pipeline has been fixed. +10-07-07 A bug in the output for compound variables containing + multi-dimensional arrays has been fixed. +10-07-06 ksh now recovers from changes made by bash to the history file without + loosing history commands. +10-06-25 A bug in which a large here document containing command substitutions + of a dynamically loaded function that contained a here document + could get truncated has been fixed. +10-06-24 If after executing a script found in FPATH, if a function, builtin, + or type name corresponding to that script is not defined, the shell + now outputs an error message and returns value 126. +10-06-23 Floating point functions that happened to return integer values + were being treated as if the function returned integers so that + integer division could be used instead of floating point division. +10-06-22 Fixed a bug in earlier ksh93u in which an arithmetic assignment to a + variable in the global scope would instead create a local variable if + the variable had an attribute but did not have a value. +10-06-18 Modified trap handling so that if the same signal is received when + executing the handler, it is deferred until the handler completes. +10-06-16 Fixed a bug in which ulimit -v was setting the the cpu limit + on Linux. +10-06-14 +The command 'typeset -T' now generates the list of type definitions + in a format that can be used as input to the shell. +10-06-09 Put in patch from Solaris for output quoting with %q. +10-06-09 +Made changes to the NAMESPACE compile option so that it now seems + to work. With this option, namespace <name> { command;} will + run command in the namespace .name so that all variables and + functions created by command are accessible outside the name + space via .name.var and .name.fun. Variables and functions that + are not in the namespace are not modified when running command. +10-06-07 Change most internal interfaces to take Sh_t* argument. +10-06-03 +Types can be loaded on first reference by putting definitions in + PFPATH. +10-06-03 +The shell is now able to parse commands which use type statements + before the typeset -T command to define the type executes. +10-06-03 A bug in the quoting for name reference declarations which did + not properly handle [ and ] in subscripts for associative arrays. +10-06-02 A bug in which a discipline function defined by a type instance to + override the default was not being registered has been fixed. +10-06-02 A bug in which read -C of an associative array of compound variables + was not working has been fixed. +10-06-02 A bug in which the error message for an unset parameter with set -u + did not contain the name of the variable has been fixed. +10-06-01 A bug in typeset -m for moving an indexed array instance to a variable + has been fixed. +10-06-01 A bug in which caused memory to be freed twice when unset was called + for an indexed array that had get or set disciplines has been fixed. +10-06-01 A bug in which the %b format of printf was not preserving NUL bytes + with \0 has been fixed. +10-06-01 A bug in the handling of name references to array variables in + arithmetic expressions has been fixed. +10-05-28 Fixed bugs in changing attributes for two dimensional arrays. +10-05-28 Eliminated a few unreferenced variables and a reference to + uninitialized memory. +10-05-27 Rewrote the subshell code to avoid using pipes an many cases. +10-05-24 Fixed a bug which cause an exception when both -l and -s were + specified with typeset -i. +10-05-21 Inputting of three dimensional indexed arrays with ( ( (...)...)...) + was not working and has been fixed. +10-05-21 A bug in which adding the attributes -Ai to a variable via a name + reference could cause the value to display incorrectly has been fixed. +10-05-21 A bug in which using $var inside ((...)) did not work when var was + a hex float variable. +10-05-20 +The compile option SHOPT_EDPREDICT has been added. When this option + is on, as you type a line beginning with a # the following characters + are treated as a shell pattern and cause matching lines from the + history file to be displayed as a numbered list as you type. + You can scroll up and down this list or you can use <ESC>nTAB + to make this the current line (n defaults to 1 of omitted) or + <ESC>n<cr> to execute. +10-05-20 A bug which caused an exception when multiple levels of composite + functions in arithemtic expressions has been fixed. +10-05-19 <<< with an empty string no longer gives an error. +10-05-19 A bug in arithmetic evaluation when a name reference to an array + instance was used has been fixed. +10-05-14 A bug in which the shell treats a valid index array assignment, + typeset -a x=(foo (x=3;y=4) bar) as a syntax error has been fixed. +10-05-13 A bug in creating name references to associative array variable + after a lookup of one of its elements has been fixed. +10-05-12 Two bugs in the handling of function static type variables in + subshells have been fixed. One could cause an exception and the + other would leave side effects in the parent shell. +10-05-10 A bug in which static variables in functions were not being saved and + restored properly when running subshells has been fixed. +10-05-05 A bug in which print -v did not work correctly when an operand was an + indexed array element referring to a compound variable has been fixed. +10-05-05 A change to improve performance by special casing empty string + assignments to avoid repeated malloc() and free(). +10-05-05 A bug in which creating a name reference to a non-existent associative + array element would create the array element has been fixed. +10-05-04 A bug in which name references to static variables in the static + scope were not found has been fixed. +10-04-30 Do not use socketpair() on systems that implement ioctl(I_PEEK) + on pipes. +10-04-29 +When the current job pool is set, coprocess are run in a job pool. +10-04-28 A type defined with a member foo that is an associative array without + elements followed by an expansion ${bar.foo[a]} and an assignment + bar.foo[a]=b, no longer indicates that ${#bar.foo[@]} has 0 members. +10-04-27 Another bug in which a nested command substitution could hang if it + generated too much data has been fixed. +10-04-26 A type defined with a member that is an indexed array without elements + would behave as if the 0th element of each instance was defined after + a non-zero element was specified and this has been fixed. +10-04-26 A bug in which types defined in a subshell were not undefined when + the subshell completed has been fixed. +10-04-23 For file completion in commmand line editing, file names starting + with # are now escaped so that they are not treated as comments. +10-04-23 A bug in which ${t.var:=value}, where t is an instance of a type + variable, could assign value to the type variable rather than to + the type instance has been fixed. +10-04-23 +Added &| which can be used in place of | to have portions of a + pipeline executed in the pool. +10-04-22 +The .sh.pool variable was added for use with job pools. +10-04-22 A bug in which a nested command substitution could hang if it + generated too much data has been fixed. +10-04-20 A bug which corrupted one byte of memory when read was called with + reads that did not use a delimiter has been fixed. +10-04-19 The display of a compound variable with an embedded array with + attributes was sometimes not working correctly and has been fixed. +10-04-16 A bug in which attributes were not be propagated to elements in + an associative array has been fixed. +10-04-15 A bug which caused scripts containing user defined math functions to + fail to compile with shcomp has been fixed. +10-04-15 +Job pools have been added with the SHOPT_COSHELL compilation option. + A job pool allows a collection of background jobs to run either locally + or remotely and to be managed as a unit. The command '& name ...' + creates or uses a named job pool for subsequent background jobs. + kill, wait, and jobs allow the pool name as operands. +10-04-14 A bug in which a coprocess connection could terminate prematurely + when running a nested subshell has been fixed. +10-04-12 +Enumeration constants can be used in arithmetic expressions with the + ==, != and = operators when the left hand side is an enum variable + and the right hand side is an enumeration constant. +10-04-07 A bug in which setting the trap on CHLD to ignore could cause + an incorrect exit status has been fixed. +10-04-06 A bug in which LINENO was not incremented for a here-document when + the here-document word was followed by a comment has been fixed. +10-04-06 The optimization that execs the last process of a script rather + than creating a new process has been removed when a trap on + interrupt has been set. +10-04-06 Unsetting the 'C', 'A' or 'a' typeset attribute now produces an + error message rather than generating an exception. +10-04-06 A bug in which .sh.name contained the subscript and .sh.subscript + was empty in some cases with discipline functions on array instances + has been fixed. +10-04-05 A bug in the edit modes where preceding the interrupt character with + the literal next character did not work has been fixed. +10-04-05 A bug in the creation of type instances of arrays which could cause + an exception has been fixed. +10-03-30 A bug in the display of a compound variable containing an indexed + array of compound variables has been fixed. +10-03-24 +Arithmetic functions can be defined using the shell function syntax, + 'function .sh.math.name x y z{...}' , where name is the function name + invoked within ((...)) and x y z are long double arguments passed + as name references. y and z are used for functions with two and + three arguments respectively. The value of the function is the value + of the long double .sh.value variable when the function returns. +10-03-24 A bug in which integer division was mistakenly used when the + numerator was a binary operator with the first operand floating + point and the second integer, e.g. (.1**3)/3, has been fixed. +10-03-24 The >; file operator was modified so that the temporary file is + created in the same physical directory as file. +10-03-23 A warning message was added to sh -n when $var was used inside + ((...)) instead of var. +10-03-19 fmin was added to the list of math function on the man page. +10-03-19 Fixed the return value for unalias when the alias did not + exist. +10-03-19 A bug in which the SHLVL variable exported the value it had on + input rather than the incremented value has been fixed. +10-03-19 A bug which causes whence -q to go into an infinite loop has been + fixed. +10-03-19 Removed space between Stopped message and (SIGTTIN) and (SIGTTOUT). +10-03-17 Modified profile shell execution so that when builtins that + correspond to executable have extended attributes, they are + executed by pfksh instead of being treated as built-ins. +10-03-16 A bug in whence -a which produced duplicate lines of output has + been fixed. +10-03-16 A bug in the handling of process groups in monitor mode for + command substitutions has been fixed. +10-03-15 Fixed a bug in which read -u[fd] could cause the shell to core + dump when fd was greater than open_max. +10-03-15 +Modified the shell I/O so that the shell will not fail if the + ulimit for open_max is increased as part of the script. +10-03-12 A bug in which a here-document containing command substitutions + that contained here-documents did not process correctly has been + fixed. +10-03-12 A bug in which the terminal is not restored to canonical mode + after read times out when in a multibyte locale with no edit mode + enabled has been fixed. + +10-03-05 --- Release ksh93t+ --- +10-03-05 A variable unset memory leak has been fixed and tests/leaks.sh + has been added to verify the fix. +10-03-04 Documentation, comment, and diagnostic spelling typos corrected. +10-02-14 Fix sh_getenv() initialization to cooperate with the 3d fs. +10-02-12 A bug in which the get discipline function was not invoked for + associative array subscripts for unset array elements has been fixed. +10-02-12 A bug which could occur if the last line of a script was an eval + that executed multiple commands has been fixed. +10-02-02 A buffer overflow in read and another in binary type base64 + encoding were fixed. +10-01-20 A bug in the evaluation of arithmetic expression in which the + subscript was evaluated twice for $((foo[x++]++)) has been fixed. +10-01-19 A workaround for a double-free of a trap in both a subshell and its + parent has been added. +10-01-18 A bug in type handling of typeset -H has been fixed. +10-01-15 The "adding empty subscript" warning now only emitted with -x set. +10-01-01 A bug in the parser in which '$((case i in i):;esac);:))' was not + parsed correctly was fixed. +10-01-01 A bug in the parser in which '$(( 2 , 3.6 ))' dumped core for locales + with radix char , and thousands separator . has been fixed. +09-12-28 A bug in the handling of SIGCLD on systems that generated SIGCLD + while blocked waiting for process to complete has been fixed. +09-12-24 ast setlocale() reworked to differentiate env var changes from user + override. +09-12-18 A bug with the SHOPT_BGX option set which disabled traps for signals + < SIGCHLD when a trap for a signal > SIGCHLD was set has been fixed. +09-12-18 A bug where [[ -v var ]] was incorrect for some variables (including + LC_* vars) has been fixed. +09-12-15 A bug that produced a syntax error when a multibyte character + straddled a buffer boundary has been fixed. +09-12-11 A bug where the subscript of an unset variable was not evaluated has + been fixed. +09-12-09 A bug where shcomp dumped core on certain syntax errors has been fixed. +09-12-07 A bug where a parent shell environment var reset in a subshell removed + the value in subsequent children of the parent shell has been fixed. +09-12-04 A bug in which in some cases a trap in a function executed in + a subshell could trigger twice has been fixed. +09-12-03 A bug in which SHLVL exported with some attributes could cause + the shell to abort at startup has been fixed. +09-12-02 A bug with pipefail in which the shell could hang waiting for the + writer to complete before the last reader command has been fixed. +09-11-30 A bug in which a trap could be inherited by the first element of + a pipeline when the command had more than 63 arguments that did + not contain any macro expansions has been fixed. +09-11-19 When read from a terminal was called from with a while or for loop, + and an edit mode was on, a backspace or erase no longer will + overwrite the prompt. +09-11-17 +Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2. +09-11-17 Inside a function, typeset foo.bar will bind foo to global variable + foo if local variable foo does not exist, instead of creating a + local variable. +09-11-17 "read -n1" from the terminal has been fixed to read exactly one character. +09-11-11 Job control now works for subshell commands, (...). +09-11-11 If set -e is on for an interactive shell errors in special builtins + now cause the shell to exit. +09-11-11 A bug in which an interrupt handler processed during the read builtin + when IFS did not contain a new line has been fixed. +09-11-09 A bug in which a variable that has been unset in a subshell and then + exported from that subshell does not show up in the environment + has been fixed. +09-11-02 ``,2'' is now a valid numeric constant for locales with + decimal_point=','. +09-11-02 A bug where "return" in .profile did not restore the shell state + has been fixed. +09-10-31 A bug that corrupted saved exit status when pids wrapped around has + been fixed. +09-10-26 A bug in { LANG LC_ALL LC_category } ordering has been fixed in -last. +09-10-16 A bug where notification to libast that the environment has changed + has been fixed. +09-10-12 A bug in which a function loaded in a subshell could leave side + effects in the parent shell has been fixed. +09-10-12 A bug in converting a printf %d operand to a number when the operand + contains multiple subscripts for the same variable has been fixed. +09-10-09 A bug in the handling of the escape character \ in directory prefixes + in command completion has been fixed. +09-10-09 $PATH processing has been changed to delay dir stat() and .paths + lookup until the directory is needed in the path search. +09-09-28 Call the ast setlocale() intercept on unset too. +09-09-24 A bug in which LANG=foo; LC_ALL=foo; unset LC_ALL; did not revert + LC_CTYPE etc. to the LANG value has been fixed. +09-09-17 A bug in which unsetting SVLVL could cause a script invoked by + name without #! to core dump has been fixed. +09-09-16 A bug in which a pipeline in a here-document could hang when the + pipefail option was on has been fixed. +09-09-09 A bug in the processing of line joining in here documents which + occurred when a buffer began with <escape><new-line> has been fixed. +09-09-09 +A leading ; with commands in a brace group or parenthesis group + no longer causes an error. It now is used for the "showme" option. +09-09-09 A bug in which a subshell containing a background process could + block until the background process completed has been fixed. +09-09-04 A bug in handing ${var[sub]}, where var is a nameref has been fixed. +09-09-03 A bug which caused an index array to have the wrong number of elements + when it was converted from a compound variable by adding an another + element has been fixed. +09-09-03 Specifying export for a compound variable now generates an error. +09-09-02 $"..." localizations strings are no longer recognized inside `...`. +09-09-01 A bug in the for loop optimizer in the handling of type static + variables has been fixed. +09-09-01 An error message is not displayed when * and @ are used as subscripts. +09-09-01 Several bugs in the processing for types that included an associative + array of another type has been fixed. +09-09-01 A bug in the tracing of [[ a < b ]] and [[ a > b ]] has been fixed. +09-08-26 The .sh.file variable was not being set for a script that was run + by name and didn't start with #! and this has been fixed. +09-08-25 A bug in which a function called to deeply from command substitution + did not display an error message has been fixed. +09-08-24 +When processing profiles, ksh93 now violates the POSIX standard and + treats &> as a redirection operator similar to bash. +09-08-23 A bug in the handling of the trap on SIGPIPE that could lead to a + memory fault has been fixed. +09-08-21 A bug in the handling of the comma operator in arithmetic expressions + that could cause a core dump on some systems has been fixed. +09-08-20 A bug in which a compound variable containing an array of a type + that doesn't have any elements now expands correctly. +09-08-19 A bug which disabled function tracing inside a function after + a call to another function has been fixed. +09-08-19 A bug in which initializing a compound variable instance to another + compound variable by name has been fixed. +09-08-18 A bug in which compound variable instances could be lost after + an instance that invoked a type method discipline has been fixed. +09-08-18 A bug in which a discipline function for a type applied to an + array instance when invoked in a function ignored the subscript + has been fixed. +09-08-18 A scoping error with variables in arithmetic expression with + type variables when reference with a name reference has been fixed. +09-08-10 Several memory leaks were fixed primarily related to subshells. +09-08-06 A bug in which setting the trap on CHLD to ignore could cause + a script to hang has been fixed. +09-07-08 A bug in the processing of name reference assignments when it + contained pattern expansions with quoting has been fixed. +09-06-22 +The default width for typeset -X has been changed so that there + should be no loss of precision when converting to a string. +09-06-19 A bug in the printing of array elements for binary variables with + printf %B has been fixed. +09-06-19 A bug which caused a core dump with trap DEBUG set with an array + assignment with no elements has been fixed. +09-06-19 A bug with read with typeset -b -Z<num> has been fixed. +09-06-19 Two bugs related to read -b for array variables has been fixed. +09-06-19 A bug with typeset for compound variables containing arrays of + compound variables has been fixed. +09-06-18 A bug in appending a compound variable to a an indexed array of + compound variables has been fixed. +09-06-18 A bug which occurs when appending a compound variable to an indexed + array element has been fixed. +09-06-18 Setting VISUAL to a value other than one ending in vi or emacs will + no longer unset the edit mode. +09-06-17 A bug in typeset -m when moving a local compound variable to a + global compound variable via a name reference has been fixed. +09-06-17 A bug in appending to nodes of an array of compound variables when + addressing them via nameref has been fixed. +09-06-17 A bug in typeset -p var, when var is an array of compound variables + in which the output only contained on array element has been fixed. +09-06-17 The prefix expansion ${!y.@} now works when y is a name + reference to an element of an array. +09-06-16 Traps on signals that are ignored when the shell is invoked + no longer display. Previously they were ignored as required but + would be listed with trap -p. +09-06-12 A bug in vi edit mode in which hitting the up arrow key at the + end of a line longer than 40 characters which caused a core dump + has been fixed. +09-06-11 A bug in which "eval non-builtin &" would create two processes, + one for the & and another for non-builtin has been fixed. +09-06-08 When var is an identifier and is unset, ${var} no longer tries to + run command substitution on the command var. +09-06-08 +Process substitution arguments of the form <(command) can now be + used following the < redirection operator to redirect from command. +09-05-13 A bug in which redirections of the form 2>&1 1>&5 inside command + substitution could cause the command substitution to hang has been + fixed. +09-05-12 To conform with POSIX, the -u option only checks for unset variables + and subscript elements rather than checking for all parameters. +09-05-12 A bug which could cause a core dump when a variable whose name + begins with a . was referenced as part of a name reference inside + a function has been fixed. +09-05-01 A bug that caused a core dump when SIGWINCH was received and + both vi and emacs mode were off has been fixed. +09-04-22 +Default alias compound='typeset -C' added. +09-04-15 A bug that caused ${...;} to hang for large files has been fixed. +09-04-08 A change was made in the -n option which printed out an incorrect + warning with <>. +09-04-07 The emacs edit command M-_ and M_. and the vi command _ was fixed + to handle the case there there is no history file. +09-04-05 A bug in handling new-lines with read -n has been fixed. +09-04-05 The ENV variable defaults the the file named by $HOME/.kshrc rather + then to the string $HOME/.kshrc. +09-03-31 A bug in which a nested command substitution with redirections could + leave a file descriptor open has been fixed. +09-03-24 +ksh now only uses the value of the _ variable on startup if it can + verify that it was set by the invoking process rather than being + inherited by some other ancestor. +09-03-24 +When ksh is invoked without -p and ruid!=euid, and the shell is + compiled without SHOPT_P_UID or ruid<SHOPT_P_UID, the shell now + enables the -p option. The previous version instead set the + euid to the ruid as it does for set +p. +09-03-24 +When SHOPT_P_UID is defined at compile time and the shell is started + without -p and ruid!=euid and ruid>=SHOPT_P_UID then euid is set + to ruid. A bug that did the wrong test (ruid<SHOPT_P_UID) was fixed. +09-03-17 +The sleep(1) builtin now accept and ISO 8601 PnYnMnDTnHnMnS + duration or date(1) compatible date/time operand. +09-03-10 If a variable that was left or right justified or zero-filled was + changed with a typeset statement that was left or right justified + or zero-filled, then the original justification no longer affects + the result. +09-03-10 A bug in the handling of traps when the last command in a script + is a subshell grouping command has been fixed. +09-03-03 A bug in which an expansion of the form ${!prefix@} could generate + an exception after the return from a function has been fixed. +09-02-02 A bug in restricted mode in which the value of ENV could be + changed from within a function has been fixed. +09-02-02 A bug in which an erroneous message indicating that a process + terminated with a coredump has been fixed. +09-02-02 The exit status when exit was called without an argument from + a signal handler was incorrect and has been fixed. +09-02-02 A bug in which a function autoloaded in a subshell could cause + a core dump when the subshell completed has been fixed. +09-02-02 A bug in which 2>&1 inside a command substitution wasn't working + correctly has been fixed. +09-02-02 A bug in the call stack of arithmetic function with 2 args + returning int has been fixed. +09-01-30 A bug in which 'eval print \$0' inside a function was giving the + wrong value for $0 has been fixed. +09-01-28 A bug in which a command substitution could return an exit status + of 127 when the pipefail option is enabled has been fixed. +09-01-26 ksh93 now generates an error message if you attempt to create + a global name reference to a local variable. +09-01-26 +The [[ -v var ]] operator was modified to test for array elements. +09-01-23 +The redirection operator <>; was added. It is similar to <> + except that if the command it is applied to succeeds, the file + is truncated to the offset at the command completion. +09-01-23 The default file descriptor for <> was changed to 1. +09-01-20 A bug in which the exit status specified in an exit trap was + not used when a process terminated with a signal has been fixed. +09-01-19 A bug in which a signal whose default action is to terminate + a process could be ignored when the process is running a sub-shell + has been fixed. +09-01-19 A bug in which sending SIGWINCH to a process that reads from a pipe + could cause a memory fault has been fixed. +09-01-16 +The -R unary operator was added to [[...]] and test to check whether + a variable is a name reference. +09-01-16 +The -v unary operator was added to [[...]] and test to check whether + a variable is set. +09-01-14 The unset built-in was modified to return 0 exit status when + unsetting a variable that was unset to conform with the POSIX + standard. +09-01-14 The unset built-in was modified to continue to unset variables + after encountering a variable that it could not unset to + conform to the POSIX standard. +09-01-14 The parameter expansion ${x+value} no longer expands the value of + the variable x when determining whether x is set or not. +09-01-13 A bug in which background jobs and pipelines that were not waited + for could, in rare instances, cause the shell to go into an infinite + loop or fail has been fixed. +09-01-06 A bug in indexed arrays of compound variables in which referencing + non-existent sub-variable in an arithmetic expression could cause + the sub-variable to be created has been fixed. +09-01-05 A bug in which the \ character did not escape extended regular + expression pattern characters has been fixed. +08-12-24 A bug in which killing the last element of a pipe did not cause + a write to the pipe to generate a SIGPIPE has been fixed. +08-12-19 A bug which could cause command substitution to hang when the + last element of a pipeline in a command substitution was a built-in + and the output was more that PIPE_BUFF. +08-12-18 A bug which occurs when a here documented marker embedded in a + command substitution occurs on a buffer boundary has been fixed. +08-12-17 A bug in the output of typeset -p for variables that had attributes + but did not have a value has been fixed. +08-12-16 A bug in which a name reference to a name reference variable that + references an array element has been fixed. +08-12-16 A bug in which a variable given both the -A and -C attribute along + with an initial assignment didn't work correctly has been fixed. +08-12-10 The [[ -t fd ]] test was fixed to handle fd>9. +08-12-10 A bug where function stack misalignment could cause a bus error + has been fixed. +08-12-09 Command completion was changed to use \ to quote special characters + instead of quoting the argument in single quotes. +08-12-07 A bug in typeset -m which occurred when the target node was an + associative array element has been fixed. +08-12-07 A timing bug on some systems (for example darwin), that could + cause the last process of a pipeline entered interactively to fail + with an "Exec format error" has been fixed. +08-12-04 +SHOPT_BGX enables background job extensions. Noted by "J" in + the version string when enabled. (1) JOBMAX=n limits the number + of concurrent & jobs to n; the n+1 & job will block until a + running background job completes. (2) SIGCHLD traps are queued + so that each completing background job gets its own trap; $! is + set to the job pid and $? is set to the job exit status at the + beginning of the trap. (3) sleep -s added to sleep until the time + expires or until a signal is delivered. +08-12-04 The sign of floating point zero is preserved across arithmetic + function calls. +08-12-04 A bug that caused print(1) to produce garbled stdout/stderr + output has been fixed. +08-12-04 A bug in which printf "%d\n" "'<euro>'" did not output the + numerical value of the EURO symbol, 8354, has been fixed. +08-11-24 + /dev/fd* and /dev/std* redirections are first attempted with + open() to preserve seek semantics; failing that the corresponding + file descriptors are dup()'d. +08-11-20 A bug which could cause a core dump if a function compiled with + shcomp was found has been fixed. +08-11-20 A bug in which jobs were not cleared from the jobs table for + interactive shells when the pipefail option is on has been fixed. +08-11-11 A bug in which a field that was unset in a type definition and later + set for an instance could appear twice when displaying the variable + has been fixed. +08-11-11 A bug in which running a simple command & inside a function would + not return the correct process id has been fixed. +08-11-10 A bug in which the exit status of a command could be lost if the pid + was that of the most recent command substitution that had completed + has been fixed. +08-11-10 The maximum depth for subshells has been increased from 256 to 65536. +08-11-06 A bug which could cause a core dump when the _ reference variable was + used as an embedded type with a compound assignment has been fixed. + +08-10-31 --- Release ksh93t --- +08-10-31 Variable scoping/initialization bugs that could dump core were fixed. +08-10-24 The lexer now accepts all RE characters for patterns prefixed + with a ksh ~(...) option expression. +08-10-24 +For ${var/pat/sub} \0 in sub expands to the text matched by pat. +08-10-18 A bug in array scoping that could dump core has been fixed. +08-10-10 read -n and -N fixed to count characters in multibyte locales. +08-10-10 A bug that mishandled _.array[] type references has been fixed. +08-10-09 +${.sh.version} now contains a concatenation of the following (after + 'Version') denoting compile time features: + A SHOPT_AUDIT + B SHOPT_BASH + L SHOPT_ACCT + M SHOPT_MULTIBYTE +08-10-09 A bug that caused subshell command substitution with redirection + to hang has been fixed. +08-10-08 Output errors, other than to stderr, now result in a diagnostic. +08-10-08 ksh93 now supports types that contain arrays of other types as + members. Earlier versions core dumped in this case. +08-10-05 A bug which caused the shell to emit a syntax error for an arithmetic + statement of the form (( var.name[sub] = value)) has been fixed. +08-10-01 A bug that caused subshell command substitution to hang has + been fixed. +08-09-29 When the -p export option of typeset is used with other options, + only those variables matching the specified options are displayed. +08-09-29 When the shell reads the environment and finds variables that are + not valid shell assignments, it now passes these on to subsequent + commands rather than deleting them. +08-09-29 A bug in the display of compound variables containing an indexed + array of compound variables has been fixed. +08-09-29 A bug in the display of compound variables containing an associative + array with a subscript containing a . in the name has been fixed. +08-09-26 A core dump in the subshell environment restore has been fixed. +08-09-24 $(...) has been fixed to properly set the exit status in $?. +08-09-23 $(<...) with IFS=$'\n\n' has been fixed to retain all but the last + of multiple trailing newlines. +08-09-23 The -p option to typeset when used with other attributes, restricts + the output to variables with the specified attributes. +08-09-22 A bug that sometimes lost the exit status of a job has been fixed. +08-09-21 A bug that retained trailing command substitution newlines in + cases where the command caused the shell to fork has been fixed. +08-09-19 type, whence -v, and command -v were fixed to comply with POSIX + by writing 'not found' diagnostics to the standard error. +08-09-18 test and [...] were fixed to comply with POSIX in the case + of test '(' binop ')' where binop is a valid binary test operator. +08-09-16 +If a method discipline named create is specified when defining a + type, this function will be called when an instance is created. +08-09-15 +The variable _ is now set as a reference to the compound variable + when defining a compound variable or a type. +08-09-10 The shell now prints an error message when the type name specified + for an indexed array subscript is not an enumeration type. +08-09-10 A bug in which a subshell that spawned a background process could + loose output that was produced after the foreground completed + has been fixed. +08-09-10 A timing bug on some systems that could cause coprocesses started by a + subshell to not clean up and prevent other coprocesses has been fixed. +08-09-09 The typeset -m option is now able to rename array elements from + the same array. +08-09-09 The exit status of 2 from the DEBUG trap causes the next command + to be skipped. An exit value of 255 from a DEBUG trap called from + a function causes the function to return. +08-09-08 A bug in which a coprocess created in a subshell that did not + complete when the subshell terminated could prevent a coprocess + from being created in the parent shell has been fixed. +08-09-05 An assignment of the form name1=name2 where name1 and name2 + are both compound variables causes name1 to get a copy of name2. + name1+=name2 causes name2 sub-variables to be appended to name1. +08-09-05 A bug in which unsetting a compound variable did not unset all + the sub-variables has been fixed. +08-09-01 A bug in the subshell cleanup code that could cause SIGSEGV has + been fixed. +06-08-26 +The SHLVL variable which is an environment variable used by bash + and zsh that gets incremented when the shell starts. +08-08-25 +For an indexed array, a negative subscript now refers to offsets + from the end so that -1 refers to the last element. +08-08-24 An alignment error for shorts on 64 bit architectures has been fixed. +08-08-22 If oldvar is a compound variable, typeset -C newvar=oldvar creates + newvar as a copy of oldvar. +08-08-19 +The ALRM signal no longer cause the sleep builtin to terminate. +08-08-13 When used in an arithmetic expression, the .sh.version variable + now produces a number that will be increasing for each release. +08-08-11 A bug in which type instantiation with a compound assignment in + a dot script in which the type is defined has been fixed. +08-08-07 +The -m option has been added to typeset to move or rename a + variable. Not documented yet. +08-08-06 A bug in read when used in a loop when a prompt was specified + when reading from a terminal has been fixed. +08-08-01 A bug with the pipefail option in which a nested pipeline could + cause an asynchronous command to block has been fixed. +08-08-01 A for loop optimizer bug that treats .sh.lineno as an invariant + has been fixed. +08-07-30 A bug in which expanding compound variable that had a get discipline + from with a here document could cause a syntax error has been fixed. +08-07-18 A bug in which a nameref caused a local variable to be created + rather than binding to an existing variable in the global scope + has been fixed. +08-07-17 A bug which occurred when a nameref was created from within a + function that was part of a pipeline has been fixed. +08-07-14 +The compile option SHOPT_STATS was added. With this option the + compound variable .sh.stats keeps usage statistics that could help + with performance tuning. +08-07-10 +The output of set now always uses a single line for each variable. + For array variables, the complete set of values is now displayed. +08-07-09 +The typeset -C option can be used with arrays to indicate that + each element should default to a compound variable. +08-07-08 +The %B format now outputs compound variables and arrays. The + alternate flag # can be used to cause output into a single line. +08-07-03 When the window change signal, WINCH, is received, the current + edit line is redrawn in place. +08-07-01 A bug in the handling of shared variables when inside an embedded + type has been fixed. +08-06-29 A bug in multiline edit mode which occurred when the prompt length + was three characters or less has been fixed. +08-06-23 A bug in which the SIGCLD was not be triggered when background + jobs completed has been fixed. +08-06-23 _KSH_VERSION added as a name reference to .sh.version. +08-06-20 type now outputs 'special builtin' for special builtins. +08-06-19 A couple of bugs in multi-dimensional arrays have been fixed. +08-06-19 A bug in which a syntax error in a dot script could generated + a syntax error in the next subsequent command has been fixed. +08-06-17 Reduced the maximum function call depth to 2048 to avoid exceptions + on some architectures. +08-06-16 A bug in which printf "%B" could generate an exception when the + specified variable was not set has been fixed. +08-06-16 +When typeset -p is followed by variable names, it now displays + the attributes names and values for the specific names. +08-06-14 A bug that could effect the drawing of the screen from multiline + emacs or gmacs mode when walking up the history file has been fixed. +08-06-13 A bug in which a compound variable defined in a subshell could + have side effects into the parent shell has been fixed. +08-06-13 A number of bugs related to using .sh.level to set the stack from + for DEBUG traps have been fixed. +08-06-13 +The .sh.lineno variable has been added. When .sh.level is changed + inside a DEBUG trap, the .sh.lineno contains the calling line number + for the specified stack frame. +08-06-13 The .sh.level variable has been documented and now works. +08-06-11 +The -C option has been added to read for reading compound command + definitions from a file. +08-06-11 +The . command is now permitted inside a compound command definition. + The dot script can contain declaration commands and dot commands. +08-06-09 +Add -C option to typeset so that typeset -C foo, is equivalent + to foo=(). +08-06-09 Added -n warning message for typeset option orderings that are valid + with ksh88 but not valid with ksh93, for example Lx5. +08-06-09 A bug in which the return value for an assignment command containing + a command substitution with that failed was zero when the assignment + contained redirections has been fixed. +08-06-09 A bug in the quoting of $ inside a ERE pattern ~(E)(pattern) + has been fixed. +08-06-06 A bug when processing `` command substitution with the character + sequence \$' has been fixed. +08-06-02 +When defining a type, the typeset -r attribute causes this field + to be required to be specified for each instance of the type and + does not allow a default value. +08-06-02 Several bugs in which compound variables were modified by + subshells have been fixed. +08-05-22 +The ceil function has been added to the math functions. +08-05-21 A bug in which a name reference defined in a function and passed + as an argument to another function could cause an incorrect binding. +08-05-21 A bug in freeing compound variables that are local to functions + has been fixed. +08-05-19 +The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} + to expand to the value (or subscripts) for array between sub1 and + sub2 inclusive. For associative arrays, the range is based on + location in the POSIX locale. The .. must be explicit and cannot + result from an expansion. +08-05-15 The trap on SIGCLD is no longer triggered by the completion of + the foreground job as with ksh88. +08-05-14 A bug in the implementation of the editing feature added on + 07-09-19 in emacs mode has been fixed. +08-05-12 A bug in processing the test built-in with parenthesis has been + fixed. +08-05-12 The unset built-in now returns non-zero when deleting an array + subscript that is not set. +08-05-08 +Changing the value of HISTFILE or HISTSIZE will cause the old + history file to be close and reopened with the new name or size. +08-05-08 When FPATH is changed functions that were found via a path search + will be searched for again. +08-05-08 A parser bug in which reserved words and labels were recognized + inside compound indexed array assignment after a new-line has + been fixed. +08-05-07 A bug in getopts when handling numerical option arguments has + been fixed. +08-05-07 +The typeset -S option was added for variables outside type + definitions to provide a storage class similar to C static + inside a function defined with function name. When outside + type definitions and outside a function, the -S option cause + the specified variable so be unset before the assignment and + before the remaining attributes are supplied. +08-05-07 A bug that affected the cursor movement in multiline mode when + a character was deleted from near the beginning of the any + line other than the first. +08-05-01 In multiline edit mode, the refresh operation will now clear + the remaining portion of the last line. +08-05-01 A bug in computing prompt widths for the edit modes for prompts + with multibyte characters has been fixed. +08-05-01 A bug in the multiline edit mode which could cause the current + line to be displayed incorrectly when moving backwards from third + or higher line to the previous line has been fixed. +08-05-01 A bug in which options set in functions declared with the function + name syntax were carried across into functions invoked by these + functions has been fixed. +08-04-30 A bug which could cause a coprocess to hang when the read end + is a builtin command has been fixed. +08-04-30 +The emacs and vi editors have been modified to handle window + change commands as soon as they happen rather than waiting for + the next command. +08-04-28 A bug in which ${!x} did not expand to x when x was unset has been + fixed. +08-04-27 A bug in which the assignment x=(typeset -a foo=([0]=abc)) created + x.foo as an associative array has been fixed. +08-04-25 A bug in which $# did not report correctly when there were more + than 32K positional parameters has been fixed. +08-04-04 Choose the name _ as the sub-variable that holds type or instance + specific data used by discipline functions. +08-03-27 A bug in which the terminal group was not given back to the parent + shell when the last part of a pipeline was handled by the parent shell + and the other parts of the pipeline complete has been fixed. + The symptom was that the pipeline became uninterruptable. +08-03-25 A bug in restricted mode introduced in ksh93s that caused scripts + that did not use #! to executed in restricted mode has been fixed. +08-03-25 A bug in which the pipefail option did not work for a pipeline + within a pipeline has been fixed. +08-03-24 A bug in which OPTIND was not set correctly in subshells has + been fixed. +08-03-24 A bug which could cause a memory exception when a compound variable + containing an indexed array with only element 0 defined was expanded. +08-03-20 A bug in which ${!var[sub].*} was treated as an error has been fixed. +08-03-20 Associative array assignments of the form ([name]=value ...) + now allow ; as well as space tab and new line to separate elements. +08-03-18 A buffering problem in which standard error was sometimes + not flushed before sleep has been fixed. +08-03-17 A bug in which a signal sent to $$ while in a subshell would be + sent to the subshell rather than the parent has been fixed. +08-03-17 + A --default option added to set(1) to handle set +o POSIX semantics. + set --state added as a long name alias for set +o. +08-03-14 A bug in which using monitor mode from within a script could + cause the terminal group to change has been fixed. +08-03-10 The new ${...} command substitution will treat the trailing } + as a reserved word even if it is not at the beginning of a command, + for example, ${ date }. +08-03-10 If the name of the ENV begins with /./ or ././ then the + /etc/ksh.kshrc file will not be executed on systems that support + this interactive initialization file. +08-03-07 A bug in which ksh -i did not run the ENV file has been fixed. +08-03-07 A bug in which ulimit did not always produce the same output as + ulimit -fS has been fixed. +08-03-04 A bug in multiline mode in emacs and vi mode which could cause the + cursor to be on the wrong line when interrupt was hit has been fixed. +08-03-03 The change made in ksh93s+ on 07-06-18 in which braces became + optional for ${a[i]} inside [[...]] was restored in the case + where the argument can be a pattern. +08-03-03 A bug in which creating a name reference to an associative array + instance would fail when the subscript contained characters [ or + ] has been fixed. +08-02-29 +The redirection operator >; has been added which for non-special + files, generates the output in a temporary file and writes the + specified file only of the command has completed successfully. +08-02-15 A bug in ${var/pattern/string} for patterns of the form ?(*) and +(*) + has bee fixed. +08-02-07 A bug in which test \( ! -e \) produced an error has been fixed. +08-02-14 +The typeset -a option can now optionally be followed by the name + of an enumeration type which allows subscripts to be enumerations. +08-02-14 +The enum builtin which creates enumeration types has been added. +08-02-12 The backoff logic when there are no more processes has been fixed. +08-02-07 The -X option has been added to typeset. The -X option creates + a double precision number that gets displayed using the C99 %a + format. It can be used along with -l for long double. +08-01-31 The -T option to typeset has been added for creating typed + variables. Also the -h and -S options have been added to + typeset that are only applicable when defining a type. +08-01-31 The prefix expansion operator @ has been added. ${@name} + expands to the type of name or yields the attributes. +07-11-15 A bug in the macro expander for multibyte characters in which + part of the character contains a file pattern byte has been fixed. +07-10-03 A bug in which : was not allowed as part of an alias name has been + fixed. +07-09-26 A bug in which appending a compound variable to a compound variable + or to an index array didn't work has been fixed. +07-09-19 In both emacs and vi edit mode, the escape sequence \E[A (usually + cursor up, when the cursor is at the end of the line will fetch + the most recent line starting with the current line. +07-09-18 The value of ${!var} was correct when var was a reference to an + array instance. +07-09-18 The value of ${!var[sub]} was not expanding to var[sub] and this + was fixed. It also fixed ${name} where name is a name reference + to var[sub]. +07-09-18 +It is now legal to create a name reference without an initialization. + It will be bound to a variable on the first assignment. +07-08-30 +A discipline function can be invoked as ${x.foo} and is equivalent + to ${ x.foo;} and can be invoked as x.foo inside ((...)). +07-07-09 A bug in which typeset -a did not list indexed arrays has been + fixed. +07-07-03 +The command substitution ${ command;} has been added. It behaves + like $(command) except that command is executed in the current + shell environment. The ${ must be followed by a blank or an + operator. + +08-04-17 --- Release ksh93s+ --- +08-04-17 A bug in which umask was not being restored correctly after a + subshell has been fixed. +08-04-15 A bug in which sending a STOP signal to a job control shell started + from within a shell function caused cause the invoking shell to + terminate has been fixed. +08-04-11 A bug which caused $(exec > /dev/null) to go into an infinite loop + has been fixed. +08-03-27 A bug in which typeset -LZ was being treated as -RZ has been fixed. +08-03-06 A bug with ksh -P on systems that support the the profile shell, + in which it would exit after running a non-builtin has been fixed. +08-01-31 A bug in which command substitution inside ((...)) could cause + syntax errors or lead to core dumps has been fixed. +08-01-17 A bug in which discipline functions could be deleted when invoked + from a subshell has been fixed. +08-01-17 A bug in which a command substitution consisting only of + assignments was treated as a noop has been fixed. +08-01-17 A bug in which discipline functions invoked from withing a + compound assignment could fail has been fixed. +08-01-16 Incomplete arithmetic assignments, for example ((x += )), now + generate an error message. +08-01-16 A bug in which a set discipline defined for a variable before + an array assignment could cause a core dump has been fixed. +08-01-03 A bug in on some systems in which exit status 0 is incorrectly + returned by a process that catches the SIGCONT signal is stopped + and then continued. +07-12-13 A race condition in which a program that has been stopped and then + continued could loose the exit status has been fixed. +07-12-12 Code to check for file system out of space write errors for all + writes has been added. +07-12-11 A bug in the macro expander for multibyte characters in which + part of the character contains a file pattern byte has been fixed. +07-12-06 A bug in the emacs edit mode when multiline was set that output + a backspace before the newline to the screen has been fixed. +07-12-04 A bug in which using <n>TAB after a variable name listing expansion + in the edit modes would cause the $ to disappear has been fixed. +07-11-28 A bug in which setting IFS to readonly could cause a subsequent + command substitution to fail has been fixed. +07-11-27 A work around for a gcc 4.* C99 "feature" that could cause a job + control shell to go into an infinite loop by adding the volatile + attribute to some auto vars in functions that call setjmp(). +07-11-27 A bug in which the shell could read ahead on a pipe causing the + standard input to be incorrectly positioned has been fixed. +07-11-27 A bug in which compound variable UTF-8 multibyte values were not + expanded or traced properly has been fixed. +07-11-21 A bug where an unbalanced '[' in a command argument was not treated + properly has been fixed. +07-11-15 A bug in which compatibility mode (no long option names) getopts(1) + incorrectly set the value of OPTARG for flag options has been fixed. +07-11-15 A bug in which "hash -- name" treated "--" as an invalid name operand + has been fixed. +07-11-15 typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility. +07-11-15 A bug in which the umask builtin mis-handled symbolic mode operands + has been fixed. +07-11-15 Bugs in which shell arithmetic and the printf builtin mis-handled the + signs of { -NaN -Inf -0.0 } have been fixed. +07-11-15 +The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range + of signals, determined at runtime, are now supported. +07-11-15 A bug in which creating an index array with only subscript 0 created + only a simple variable has been fixed. +07-11-14 A bug in which appending to an indexed array using the form + name+=([sub]=value) could cause the array to become an associative + array has been fixed. +07-11-14 A bug in which typeset without arguments could coredump if a + variable is declared as in indexed array and has no elements has + been fixed. +07-11-14 A bug in which creating a local SECONDS variable with typeset in + a function could corrupt memory has been fixed. +07-11-14 A bug which could cause a core dump when a script invoked by name + from a function used compound variables has been fixed. +07-11-05 A bug in which printf %d "'AB" did not diagnose unconverted characters + has been fixed. +07-11-05 printf %g "'A" support added for all floating point formats. +07-11-01 A bug in which typeset -f fun did not display the function definition + when invoked in a subshell has been fixed. +07-10-29 The sleep builtin was fixed so that all floating point constants + are valid operands. +07-10-10 A bug in which the locale was not being restored after + LANG=value command has been fixed. +07-09-20 A bug in which a nameref to a compound variable that was local + to the calling function would not expand correctly when displaying + is value has been fixed. +07-09-19 A bug which cause cause a core dump if .sh.edchar returned + 80 characters or more from a keyboard trap has been fixed. +07-09-14 A bug in which could cause a core dump when more than 8 file + descriptors were in use has been fixed. +07-09-10 A bug in which creating a name reference to an instance of + an array when the array name is itself a reference has been fixed. +07-09-10 The file completion code has been modified so that after an = in + any word, each : will be considered a path delimiter. +07-09-06 A bug in which subprocess cleanup could corrupt the malloc() heap + has been fixed. +07-08-26 A bug in which a name reference to an associative array instance + could cause the subscript to be evaluated as an arithmetic expression + has been fixed. +07-08-22 A bug in which the value of an array instance was of a compound + variable was not expanded correctly has been fixed. +07-08-14 A bug which could cause a core dump when a compound assignment was + made to a compound variable element with a typeset -a attribute + has been fixed. +07-08-08 A bug in which a trap ignored in a subshell caused it to be + ignored by the parent has been fixed. +07-08-07 A bug in which the set command would generated erroneous output + for a variable with the -RZ attribute if the variable name had been + passed to a function has been fixed. +07-08-02 A bug in which read x[1] could core dump has been fixed. +07-08-02 A second bug in which after read x[sub] into an associative array + of an element that hasn't been assigned could lead to a core dump + has been fixed. +07-07-31 A bug in which a pipeline that completed correctly could have + an exit status of 127 when pipefail was enabled has been fixed. +07-07-09 +The SHOPT_AUDIT compile option has been added for keyboard logging. +07-06-25 In vi insert mode, ksh no longer emits a backspace character + before the carriage return when the newline is entered. +07-06-25 A bug in which pipefail would cause a command to return 0 + when the pipeline was the last command and the failure happened + on a component other than the last has been fixed. +07-06-25 A bug in the expansion of ${var/pattern/rep} when pattern or rep + contained a left parenthesis in single quotes has been fixed. +07-06-18 The braces for a subscripted variable with ${var[sub]} are now + optional when inside [[...]], ((...)) or as a subscript. +07-05-28 A bug in brace expansion in which single and double quotes did + not treat the comma as a literal character has been fixed. +07-05-24 The -p option of whence now disables -v. +07-05-23 Several bug fixes in compound variables and arrays of arrays + have been made. +07-05-15 A bug in which the %B format of printf was affected by the + locale has been fixed. +07-05-14 A bug in which \ was not removed in the replacement pattern with + ${var/pattern/rep} when it was not followed by \ or a digit has + been fixed. +07-05-10 A bug in which ksh -R file core dumped if no script was specified + has been fixed. it not displays an error message. +07-05-07 Added additional Solaris signals to signal table. +07-04-30 A bug in which a pipeline with command substitution inside a + function could cause a pipeline that invokes this function to + hang when the pipefail option is on has been fixed. +07-04-30 +Added -q to whence. +07-04-18 A small memory leak with each redirection of a non-builtin has + been fixed. +07-03-08 A bug in which set +o output command line options has been fixed. +07-03-08 A bug in which an error in read (for example, an invalid variable + name), could leave the terminal in raw mode has been fixed. +07-03-06 A bug in which read could core dump when specified with an array + variable with a subscript that is an arithmetic expression has + been fixed. +07-03-06 Several serious bugs with the restricted shell were reported and + fixed. +07-03-02 If a job is stopped, and subsequently restarted with a CONT + signal and exits normally, ksh93 was incorrectly exiting with + the exit status of the stop signal number. +07-02-26 +M-^L added to emacs mode to clear the screen. +07-02-26 A bug in which setting a variable readonly in a subshell would + cause an unset error when the subshell completed has been fixed. +07-02-19 +The format with printf uses the new = flag to center the output. +07-02-19 A bug in which ksh93 did not allow multibyte characters in + identifier names has been fixed. +07-02-19 A bug introduced in ksh93 that causes global compound variable + definitions inside functions to exit with "no parent" has been fixed. +07-02-19 A bug in which using compound commands in process redirection + arguments would give syntax errors <(...) and >(...) has been fixed. +07-01-29 A bug which caused the shell to core dump which can occur when a + built-in exits without closing files that it opens has been fixed. +07-01-26 A bug in which ~(E) in patterns containing \ that are not inside () + has been fixed. + +06-12-29 --- Release ksh93s --- +06-12-29 A bug in which the value of IFS could be changed after a command + substitution has been fixed. +06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on + systems that provide getaddrinfo(3). +06-12-19 +A -v option was added to read. With this option the value of + the first variable name argument will become the default value + when read from a terminal device. +06-11-20 A bug in which "${foo[@]:1}}" expands a null argument (instead of + no argument), when foo[0] is not empty has been fixed. +06-11-16 The discipline functions have been modified to allow each subscript + to act independently. Currently the discipline function will not + be called when called from a discipline function of the same variable. +06-11-14 A bug which could cause a core dump if a file descriptor for + an internal file was closed from with a subshell has been fixed. +06-10-30 +The redirections <# pattern, and <## pattern have been added. + Both seek forward to the beginning of the next line that contains + the pattern. The <## form copies the skipped portion to standard + output. +06-10-26 +On systems that support stream control transport, the virtual file + name /dev/sctp/host/port can now be used to establish connections. +06-10-26 +The printf modifier # when used with d produces units in thousands + with a single letter suffix added. The modifier # when used with + the i specification provides units of 1024 with a two letter suffix. +06-10-24 The value of $! is now set to the process id of a job put + into the background with the bg command as required by POSIX. +06-10-23 A bug in which the value of $! was affected by a background + job started from a subshell has been fixed. +06-10-23 A bug in ${var:offset:len} in multibyte locales has been fixed. +06-10-15 +The remaining math functions from C99 were added for any system + that supports them. +06-10-13 The klockwork.com software detected a few coding errors that + have been fixed. +06-10-12 A bug when skipping over `...` with ${x:=`...`} when x is set + has been fixed. +06-10-11 A bug in process floating constants produced by the %a format + of printf has been fixed. +06-10-06 A bug in which IFS was not being restored correctly in some + cases after a subshell has been fixed. +06-10-06 A bug in which pipefail was not detecting some failures in + pipelines with 3 or more states has been fixed. +06-10-03 A bug in the processing of >(...) with builtins which could + cause the builtin to hang has been fixed. +06-10-03 A bug in the for loop optimizer which causes >(...) process + substitution to be ignored has been fixed. +06-09-17 +The -a option was added to typeset for indexed arrays. This + is only needed when using the ([subscript]=value ...) form. +06-09-06 +The showme option was added. Each simple command not beginning + with a redirection and not occurring with in the while, until, if, + select condition can be preceded by a semi-colon which will + be ignored when showme is off. When showme is on, any command + preceded by a colon will be traced but not executed. +06-08-16 +As a new feature, a leading ~(N) on a pattern has no effect + except when used for file expansion. In this case if not + matches are found, the pattern is replaced by nothing rather + than itself. +06-08-11 A bug in the expansion of ${.sh.match[i]:${#.shmatch[i]}} has + been fixed. +06-08-10 +The read builtin options -n and -N have been modified to treat + the size as characters rather than bytes unless storing into a + binary (typeset -B) variable. +06-07-27 +When the here document operator << is followed directly by a # + rather than a -, the first line of the here-document determines + how much whitespace is removed for each line. +06-07-26 A bug in the C-shell history (enabled with set -H) in which the + history event !$ was not processed has been fixed. +06-07-21 A bug on some systems in which assigning PATH on a command line + would not take effect has been fixed. +06-07-20 Add ksh93 and rksh93 as allowable names for ksh binaries. +06-07-20 Removed the SHOPT_OO compilation option which was only partially + implemented. +06-07-20 The ability to use egrep, grep, and fgrep expressions within + shell patterns has been documented. +06-07-17 A bug with arithmetic command expressions for locales in which + the comma is a thousands separator has been fixed. +06-07-13 +The default HISTSIZE was increased from 128 to 512. +06-07-13 A multibyte problem with locales that use shift codes has been fixed. +06-06-23 A number of bug fixes for command, file, and variable completion + have been mode. +06-06-20 +Floating point division by zero now yields the constant Inf or -Inf + and floating functions with invalid arguments yield NaN. +06-06-20 +The floating point constants Inf and NaN can be used in arithmetic + expressions. +06-06-20 +The functions isinf(), isnan(), tanhl() have been added for + arithmetic expressions. +06-06-13 Internal change to use ordering for variables instead of hashing + to speed up prefix matching. +06-06-13 A window between fork/exec in which a signal could get lost + and cause a program to hang has been eliminated +06-06-13 A bug in edit completion with quoted strings has been fixed. +06-06-07 The restricted options can now be enabled by set as well as on + the command line. Once set, it can not be disabled. +06-06-04 Modified built-in binding so that for systems for which /bin + and /usr/bin are the same, a builtin bound to /bin will get + selected when either /bin or /usr/bin is scanned. +06-06-04 +Added literal-next character processing for emacs/gmacs mode. + This change is not compatible with earlier versions of ksh93 + and ksh88 when the stty lnext is control-v. The sequence + escape-control-v will display the shell version. +06-05-31 +Modified emacs and vi mode so that entering a TAB after a partial + TAB completion, generates a listing of possible completions. + After the second TAB, a number followed by a TAB will perform + the completion with the corresponding item. +06-05-19 +Modified arithmetic so that conversions to strings default to + the maximum number of precision digits. +06-05-16 Bug fixes for multibyte locales. +06-05-10 The =~ operator was added to [[...]] and [[ string ~= ERE ]] + is equivalent to [[ string == ~(E)ERE ]]. +06-04-25 A bug in the vi edit mode which could cause the shell to core dump + when switching from emacs mode. +06-04-17 A bug in which using LANG or LC_ in assignment lists with builtins + did not restore the localed correctly has been fixed. +06-04-04 A bug in which discipline functions could not be added to variables + whose names started with .sh has been fixed. +06-03-28 +The -s option to typeset was added to modify -i to indicate short + integers. +06-03-28 A bug in which variables assignment lists before functions + defined with function name were not passed on the functions + invoked by this function has been fixed. +06-03-28 A bug in which name references defined within a function defined + with function name could not be used with compound variables has + been fixed. +06-03-27 A bug in which read <&p (print >&p) would cause the coprocess input + (output) pipe to close before reading from (after writing to) + it has been fixed. +06-02-28 A bug in which stopping a job created with the hist builtin command + would create a job that could not be restarted has been fixed. + +06-01-24 --- Release ksh93r --- +06-01-24 A bug in which running commands with standard output closed would + not work as expected has been fixed. +06-01-23 A bug in which print -u<n> could fail when file descriptor <n> was + open for writing has been fixed. +06-01-19 The ?: arithmetic operator fixed to work when the operation after + the colon was an assignment. +05-12-24 A bug which could lead to a core dump when elements of a compound + variable were array elements, i.e. foo=(bar=(1 2)), has been fixed. +05-12-13 An arithmetic bug in which x+=y+=z was not working has been fixed. +05-12-13 An arithmetic bug in which x||y was returning x when x was non-zero + rather than 1 has been fixed. +05-12-07 +The aliases for integer and float have been changed to use attributes + -li and -lE to handle long long and long double types. +05-12-07 +The histexpand (-H) option has been added which allows C-shell + style history expansions using the history character !. +05-12-07 +The multiline option was added which changes that way the edit + modes handle lines longer than the window width. Instead of + horizontal scrolling, multiple lines on the screen are used. +05-12-05 The whence builtin now returns an absolute pathname when the + command is found in the current directory. +05-11-29 A bug which caused ksh -c '[[ ! ((' to core dump rather than + report a syntax error has been fixed. +05-11-29 A bug when reading fixed length records into typeset -b variables + which caused a zero byte to terminate the value has been fixed. +05-11-22 +The ability to seek to an offset within a file has been added + with the new I/O redirection operators, <# and >#. Currently, + these redirection operators must be followed by ((expr)) + but in a future release, it should be able to used to seek forward + to the specified shell pattern. In addition $(n<#) expands to the + current byte offset for file descriptor n. +05-11-22 +The .sh.match array variable is now set after each [[ ... ]] + pattern match. Previously it was only set for substring matches. +05-10-17 A bug in which the library path variable could be prefixed + with a directory when a .path file was not encountered in + the directory of the executable has been fixed. +05-09-15 A for/while loop optimizer bug in which $OPTIND was not + correctly expanded has been fixed. +05-09-05 A bug in which a history command that invoked a history + command could go into an infinite loop has been fixed. +05-08-31 +In the case that IFS contains to adjacent new-lines so that + new-line is not treated as a space delimiter, only a single + new-line is deleted at the end of a command substitution. +05-08-19 +When a tilde substitution expands to the / directory and is + followed by a /, it is replaced by the empty string. +05-08-16 A bug in which n<&m did not synchronize m has been fixed. +05-08-16 A bug in which process substitution ( <() and >() ) was not + working within for and while loops has been fixed. +05-07-24 A bug in which the pattern ~(E)(foo|bar) was treated as a syntax + error has been fixed. +05-07-24 A bug in completion with <n>=, where n was the one of the + previous selection choices has been fixed. +05-07-21 A bug with multibyte input when no edit mode was specified which + caused the input line to shift left/right has been fixed. +05-06-24 A race condition which could cause the exit status to get lost + on some fast systems has been fixed. +05-06-21 A bug in which nested patterns of the form {m,n}(pat) would cause + syntax errors has been fixed. +05-06-21 A bug in the macro expander has been fixed which could cause a + syntax error for an expansion of the form ${x-$(...)} when + x is set and the command substitution contained certain strings. +05-06-08 +On systems for which echo does not do System V style \ expansions, + the -e option was added to enable these expansion. +05-06-08 A bug in which ${var op pattern} to not work when inside an + arithmetic expression has been fixed. +05-05-23 +An extension to shell patterns that allows matching of nested + groups while skipping over quoted strings has been added. +05-05-18 A bug in which the line number for errors was not correct for + functions loaded from FPATH has been fixed. +05-04-18 A bug in which the exit status $? is not set when a trap triggered + by the [[...]] command is executed has been fixed. +05-04-08 +Redirection operators can be directly preceded with {varname} + with no intervening space, where varname is a variable name which + allows the shell to select a file descriptor > 10 and store it + into varname. +05-04-08 +SHOPT_CMDLIB_BLTIN=1 now includes <cmdlist.h> generated table. +05-04-07 +[[ -o ?option ]] is true if "option" is a supported option. +05-04-05 A bug in handling file completion with spaces in the names + has been fixed. +05-03-25 +The SIGWINCH signal is caught by default to keeps the LINES and + COLUMNS variables in sync with the actual window size. +05-03-25 +Building ksh with SHOPT_REMOTE=1 causes ksh to set --rc if stdin is + a socket (presumably part of a remote shell invocation.) +05-03-25 +Building ksh with SHOPT_SYSRC=1 causes interactive ksh to source + /etc/ksh.kshrc (if it exists) before sourcing the $ENV file. +05-03-25 +{first..last[..incr][%fmt]} sequences added to brace expansions + when braceexpand is enabled. +05-03-03 A bug where a SIGCHLD interrupt could cause a fifo open to fail has + been fixed. +05-02-25 A bug in which a builtin command run in the background could + keep a file descriptor open which could cause a foreground + process to hang has been fixed. +05-02-24 A bug where builtin library commands (e.g., date and TZ) failed to + detect environment variable changes has been fixed. +05-02-22 +The read builtin and word splitting are now consistent with respect + to IFS -- both treat IFS as field delimiters. +05-02-22 +The read builtin no longer strips off trailing delimiters that + are not space characters when there are fewer variables than fields. +05-02-17 A builtin bug on systems where dlsym(libcmd) returns link-time + bindings has been fixed. +05-02-12 A bug in which the lib_init() function for .paths BUILTIN_LIB + libraries was not called has been fixed. +05-02-06 A bug on some systems in which moving the write end of a co-process + to a numbered file descriptor could cause it to close has been fixed. +05-02-06 A bug in the vi-edit mode in which the character under the cursor + was not deleted in some cases with the d% directive has been fixed. +05-02-06 A bug where external builtin stdout/stderr redirection corrupted + stdout has been fixed. +05-02-04 A bug where times formatting assumed CLK_TCK==60 has been fixed. + +05-01-11 --- Release ksh93q --- +05-01-11 A bug in the integral divide by zero check has been fixed. +05-01-11 +The -l option has been added to read /etc/profile and + $HOME/.profile, if they exist, before the first command. +05-01-11 An argument parsing bug that caused `kill -s x -- n' to fail has + been fixed. +05-01-11 +The .paths file, introduced in ksh93m, which can appear in + any directory in PATH, now allows a line of the form 'BUILTIN_LIB=.' + When a command is searched for this directory, and the full path + matches the path of the built-in version of the command (listed + by the 'builtin' command) then the built-in version of the command + is used. When ksh is built with SHOPT_CMDLIB_DIR=1 then all libcmd + functions become builtins with the '/opt/ast/bin/' directory prefix. +05-01-10 A bug in which a nameref to a compound name caused a core dump has + been fixed. +05-01-09 A bug in which some SIGCHLD interrupts (from child processes exiting) + caused a fatal print/echo error diagnostic has been fixed. +04-12-24 A bug in which some SIGCHLD interrupts (from child processes exiting) + corrupted the internal process/job list, sometimes causing the shell + to hang, has been fixed. +04-12-01 A bug in which typeset -Fn truncated less than n digits for large + numbers has been fixed. +04-11-25 A bug in which standard error could be closed after a redirection + to /dev/stderr has been fixed. +04-11-17 A bug in which an expansion of the form ${array[@]:3} could expand + to ${array[0]} when ${array[3]} was not set has been fixed. +04-10-22 +The -E or -orc command line option reads ${ENV-$HOME/.kshrc} file. +04-10-22 +`-o foo' equivalent to `+o nofoo', `-o nobar' equivalent to `+o bar'. + `--foo' equivalent to `-o foo', `--nofoo' equivalent to `+o foo' +04-10-05 +The .paths file, introduced in ksh93m, which can appear in + any directory in PATH, now allows a line of the form + 'BUILTIN_LIB=libname'. When a command is searched for this directory, + the shared library named by libname will first be searched for a + built-in version of the command. +04-09-03 <<< here documents now handle quotes in the word token correctly. +04-08-08 +The maximum size for read -n and and read -N was increased from + 4095 to 32M. +04-08-04 +printf %q was modified so that if an no operand was supplied, no + no output would be generated rather than a quoted empty string. +04-08-01 +The -n and -N options of the read builtin has been modified + when reading variables with the binary attribute so that the + data is stored directly rather than through assignment. +04-08-01 +The shcomp command has been modified to process alias commands + under some conditions. +04-07-31 +The .sh.match variable added in ksh93l, now works like other + indexed arrays. +04-07-08 A loop optimizer bug which occurs when typeset is used in + a for or while loop inside a function has been fixed. +04-06-24 +The number of subexpressions in a pattern was increased to 64 + from the current number of 20. +04-06-17 +The -t option to read was modified to allow seconds to be + specified as any arithmetic expression rather than just + an integral number of seconds, for example even -t 'sin(.5)' + is now valid. +04-06-16 Two small memory leak problems were fixed. +04-06-15 A bug in ${var/pattern/"string"} which occurred when string + contained pattern matching characters has been fixed. +04-05-08 printf $'%d\n' produced an erroneous error message and has + been fixed. +04-05-24 A bug in which an associative array without any elements could + cause a core dump when a script with an associative array with + the same name was declared in a script invoked by name has + been fixed. +04-05-11 A bug in which an exec statement could close the script that + is being processed in a script that is run by name causing + a failure has been fixed. +04-04-28 +If the first character of assignment to an integer variable was 0, + the variable had been treated as unsigned. This behavior was + undocumented and has been removed. +04-04-05 A bug in which the positioning of standard input could be incorrect + after reading from standard input from a subshell has been fixed. +04-03-30 A bug in the for loop optimizer which in rare cases could cause + memory corruption has been fixed. +04-03-29 +The preset alias source='command .' has been added. +04-03-29 A bug introduced in ksh93p on some systems in which invoked by + name with #! on the first line would not get the signals handling + initialized correctly has been fixed. +04-03-29 A bug introduced in ksh93p in which a HUP signal received by + a shell that is a session group leader was not passed down to + its children has been fixed. + +04-02-28 --- Release ksh93p --- +04-02-28 +The ability to apply an append discipline to any variable has + been added. +04-02-14 A bug in which the exportall option (set -a) would cause incorrect + results for arrays has been fixed. +04-02-02 A bug in which an exported array would pass more than + the first element to a script invoked by name has been fixed. +04-02-02 A bug on some systems in which name=value pairs preceding a script + invoked by name was not getting passed to the script has been fixed. +04-01-20 A bug in which an unset discipline function could cause a core + dump on some systems has been fixed. +04-01-12 A bug in which a continue or break called outside a loop from + inside a function defined with name() syntax could affect + the invoking function has been fixed. +04-01-08 If a command name begins with ~, only filename completion will be + attempted rather than pathname completion using the builtin editors. +04-01-08 A bug in the vi edit mode in which the wrong repeat count on + multiple word replacements with the . directive has been fixed. +04-01-06 Backspace characters are now handled correctly in prompt strings. +04-01-06 +The getopts builtin has been modified to accept numerical + arguments of size long long on systems that support this. +04-01-06 A bug in which unsetting all elements of an associative array + would cause it to be treated as an indexed array has been fixed. +03-12-15 A bug in which a quoted string ending with an unescaped $ would + delete the ending $ in certain cases has been fixed. +03-12-05 A bug in which the shell could hang when set -x tracing a command + when an invalid multibyte character is encountered has been fixed. +03-12-05 On some systems, if the KEYBD trap is set, then commands that use + the meta key were not processed until return was hit. This + has been fixed. +03-12-05 A problem which occurred when the login shell was not a group + leader that could cause it to fail has been fixed. +03-12-05 A problem in which a shell could core dump after receiving a signal + that should cause it to terminate while it was in the process + of acquiring more space has been fixed. +03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc + for interactive shells. +03-11-21 A bug introduced in ksh93o in which the DEBUG trap could get + disabled after it triggered has been fixed. +03-11-04 A bug in which using arithmetic prefix operators ++ or -- on a + non-lvalue could cause a core dump has been fixed. +03-11-04 A bug in which leading zeros were stripped from variable + expansions within arithmetic computation to avoid being treated + as octal constants when they should not have, has been fixed. +03-10-08 A bug introduced in ksh93o in which a large here document inside + a function definition could get corrupted has been fixed. +03-09-22 A bug in which the .get discipline function was not being + called when a string variable was implicitly referenced from + within a numerical expression has been fixed. +03-09-22 A bug in which a script without a leading #! could get executed + by /bin/sh rather than the current shell on some systems has + been fixed. +03-09-12 +To improve conformance with ksh88, leading zeros will be ignored + when getting the numerical value of a string variable so that + they will not be treated as octal constants. +03-09-03 +The builtin kill command now processes obsolete invocations + such as kill -1 -pid. +03-09-02 The restriction on modifying FPATH in a restricted shell (sh -r) + has been documented. +03-09-02 +The restricted shell (sh -r) has been modified to disallow + executing command -p. +03-08-07 A bug in which the KEYBD trap was not being invoked when + characters with the 8th bit set has been fixed. +03-08-02 A parser bug introduced in ksh93o which caused the character + after () in a Posix function definition to be skipped + when reading from standard input has been fixed. +03-08-01 A bug in which "${foo#pattern}(x)" treated (x) as if it were + part of the pattern has been fixed. +03-08-01 +The command -x option has been modified so that any trailing + arguments that do expand to a single word will be included + on each invocation, so that commands like command -x mv * dir + work as expected. + +03-07-20 --- Release ksh93o+ --- +03-07-20 A bug in which could cause memory corruption when a posix + function invoked another one has been fixed. +03-07-15 A bug in which a file descriptor>2 could be closed before + executing a script has been fixed. +03-07-15 A parsing error for <() and >() process substitutions inside + command substitution has been fixed. +03-07-15 A parsing error for patterns of the form {...}(...) when + used inside ${...} has been fixed. +03-07-15 An error in which expanding an indexed array inside a compound + variable could cause a core dump has been fixed. +03-07-15 A bug in which on rare occasions a job completion interrupt + could cause to core dump has been fixed. +03-06-26 A bug in which process substitution embedded within command + substitution would generate a syntax error has been fixed. +03-96-23 A bug in which ${@:offset:len} could core dump when there + were no arguments has been fixed. +03-96-23 A bug in which ${X[@]:offset:len} could core dump when X + was unset has been fixed. +03-06-22 +The -x option was added to the command builtin. If this + option is on, and the number of arguments would exceed ARG_MAX, + the command will be invoked multiple times with a subset of + the arguments. For example, with alias grep='command -x grep, + any number of arguments can be specified. +03-06-14 A bug in which could cause a core dump on some systems with + vi and emacs editors with the MULTIBYTE option has been fixed. +03-06-06 A bug in which the shell could core dump when a script was + run from its directory, and the script name a symlink to a file + beginning with .., has been fixed. +03-06-05 A bug in which the shell could core dump when a child process + that it is unaware of terminates while it is calling malloc() + has been fixed. +03-06-02 +An option named globstar (set -G) has been added. When enabled, + during pathname expansion, any component that consists only of ** is + matches all files and any number of directory levels. +03-05-30 A bug in which the PATH search could give incorrect results when + run from directory foo and PATH contained .:foo:xxx has been fixed. +03-05-29 +Some changes were made to the code that displays the prompt in edit + mode to better handle escape sequences in the prompt. +03-05-27 I added = to the list of characters that mark the beginning of + a word for edit completion so that filenames in assignments + can be completed. +03-05-20 A bug in which read -N could hang on some systems when reading + from a terminal or a pipe has been fixed. +03-05-19 A bug in which the output of uname from a command substitution + would go to the standard output of the invoking command when + uname was invoked with a non-standard option has been fixed. +03-05-19 A job control bug which would cause the shell to exit because + it hadn't take back the terminal has been fixed. The bug + could occur when running a function that contained a pipeline + whose last element was a function. +03-05-19 A job control timing bug introduced in ksh93o on some systems + which could cause a pipeline to hang if the first component + completed quickly has been fixed. +03-05-13 +The read builtin has been modified so that the builtin editors + will not overwrite output from a previous incomplete line. +03-05-13 A bug in which the name of an identifier could have the string + .sh. prefixed to it after expanding a variable whose name begins + with .sh. has been fixed. +03-05-13 A bug in the expansion of $var for compound variables in which + some elements would not be output when the name was a prefix + of another name in the compound variable has been fixed. +03-05-08 The last item in the ksh93o release on 03-01-02 has been + altered slightly to preserve the leading 0's when the + preceding character is a digit. Thus, with typeset -LZ3 x=10, + $(( 1$x)) will be 1010 whereas $(( $x) will be 10. +03-04-25 A bug in which if x is a name reference, then nameref y=x.foo + did not follow x has been fixed. + +03-03-18 --- Release ksh93o --- +03-03-18 +A -N unary operator was added to test and [[...]] which returns + true if the file exists and the file has been modified since it + was last read. +03-03-18 +The TIMEFORMAT variable was added to control the format for + the time compound command. The formatting description is + described in the man page. +03-03-06 +A -N n option was added to read which causes exactly n bytes + to be read unlike -n n which causes at most n bytes to be read. +03-03-03 +Three new shell variables were added. The variable .sh.file + stores the full pathname of the file that the current command + was found in. The variable .sh.fun names the current function + that is running. The variable .sh.subshell contains the depth + of the current subshell or command substitution. +03-03-03 +When the DEBUG trap is executed, the current command line after + expansions is placed in the variable .sh.command. The trap + is also now triggered before each iteration of a for, select, + and case command and before each assignment and redirection. +03-02-28 +Function definitions are no longer stored in the history file so + that set -o nolog no longer has any meaning. +03-02-28 +All function definitions can be displayed with typeset -f not + just those stored in the history file. In addition, typeset +f + displays the function name followed by a comment containing the + line number and the path name for the file that defined this function. +03-02-28 A bug in which the value of $LINENO was not correct when executing + command contained inside mult-line command substitutions has been + fixed. +03-02-19 +Since some existing ksh88 scripts use the undocumented and + unintended ability to insert a : in front of the % and # parameter + expansion operators, ksh93 was modified to accept :% as equivalent + to % and :# as equivalent to # with ${name op word}. +03-02-14 A bug which could cause a core dump when reading from standard + error when standard error was a pty has been fixed. +03-02-14 +The shell arithmetic was modified to use long double on systems + that provide this data type. +03-02-09 A bug in which a function located in the first directory in FPATH + would not be found when the last component of PATH was . and the + current directory was one of the directories in PATH has been fixed. +03-02-07 +The trap and kill builtin commands now accept a leading SIG prefix + on the signal names as documented. +03-02-05 A bug in the expansion of ${var/$pattern}, when pattern contained + \[ has been fixed. +03-02-05 A bug in which .sh.match[n], n>0, was not being set for substring + matches with % and %% has been fixed. +03-01-15 A bug in which getopts did not work for numerical arguments specified + as n#var in the getopts string has been fixed. +03-01-09 A bug in which using ${.sh.match} multiple times could lead to + a memory exception has been fixed. +03-01-06 A bug in the expansion of ${var/pattern/$string} in the case that + $string contains \digit has been fixed. +03-01-02 +A -P option was added for systems such as Solaris 8 that support + profile shell. +03-01-02 For backward compatibility with ksh88, arithmetic expansion + with ((...)) and let has been modified so that if x is a zero-filled + variable, $x will not be treated as an octal constant. + +02-12-05 --- Release ksh93n+ --- +02-11-30 A bug that can show up in evaluating arithmetic statements that + are in an autoloaded function when the function is autoload from + another function has been fixed. +02-11-30 An optimization bug in which an expansion of the form ${!name.@}, + which occurred inside a for or a while loop, when name is a name + reference, has been fixed. +02-11-18 A bug in which modifying array variables in a subshell could leave + side effects in the parent shell environment has been fixed. +02-11-18 A memory leak when unsetting an associative array has been fixed. +02-11-14 +The code to display compound objects was rewritten to make + it easier for runtime extensions to reuse this code. +02-11-14 +A change was made to allow runtime builtins to be notified when + a signal is received so that cleanup can be performed. +02-10-31 +User applications can now trap the ALRM signal. Previously, + the ALRM signal was used internally and could not be used + by applications. +02-10-31 A bug in which signals received while reading from a coprocess + for which traps were set was not handled correctly has been fixed. +02-10-31 A bug in which a file opened with exec inside a subshell could + be closed before the subshell completed has been fixed. +02-10-21 A bug in which setting PATH or FPATH inside a function might not + take effect has been fixed. +02-10-21 A bug which could cause a core dump when a local SECONDS variable + is defined in a function has been fixed. +02-10-15 A bug in which the associate array name operator ${!array[@]} + could return the same name multiple times has been fixed. +02-10-15 A bug in which the zero'th element of an associative array was + not getting set when an assignment was made without a subscript + specified has been fixed. + +02-09-30 --- Release ksh93n --- +02-09-30 +The maximum indexed array size was increased to 16Megs. +02-09-30 A bug which could cause a core dump when changing attributes + of associative array has been fixed. +02-09-30 A bug in which exporting an array variable would not export the + 0-th element has been fixed. +02-09-30 A bug in which an array assignment of the form a=($a ...) would unset + 'a' before the right hand side was evaluated has been fixed. +02-09-27 A bug in which the error message for ${var?message} when var was + null or unset did not contain the variable name var has been fixed. +02-09-27 A bug in which closing file descriptors 0 through 2 could + cause a subsequent here document to fail has been fixed. +02-09-14 A bug in whence which occurs when the specified name contained + a / has been fixed. +02-09-14 A bug in the parser for strings of the form name$((expr))=value + has been fixed. +02-09-14 A for loop optimization bug in which the number of elements in + an array was treated as an invariant has been fixed. +02-09-09 A bug in which redirection or closing of a file descriptor between + 3 and 9 could cause a subsequent here document to fail has been + fixed. +02-09-09 A bug in which a background job was not removed from the job list + when a subshell completed has been fixed, for example (prog&). +02-09-03 A bug in which an assignment of the form name=(integer x=3) + could be interpreted as an array assignment rather than a + compound variable assignment has been fixed. +02-08-19 A command completion bug which occurred on file systems that + are case insensitive has been fixed. +02-08-19 A bug which could lead to an exception on some systems (for + example FREEBSD) which occurred when setting PATH has been fixed. +02-08-11 A bug in arithmetic rounding in which a value input as a decimal + string would output as a rounded version of the string has + been fixed. +02-08-11 A bug in which the last character could be deleted from shell + traces and from whence when called from a multibyte locale + has been fixed. +02-08-01 A bug which could cause a core dump to occur when a shell script + is executed while a coprocess is running that has closed the + output pipe has been fixed. +02-08-01 A bug in which command completion in multibyte mode could + corrupt memory for long command lines has been fixed. + +02-06-17 --- Release ksh93n- --- +02-06-17 A bug in which user defined macros could cause a core dump in + with MULTIBYTE mode has been fixed. +02-06-17 A bug in which printf format specifiers of the form %2$s were causing + a core dump has been fixed. +02-06-17 A bug in which setting stty to noecho mode did not prevent the + echoing of characters by ksh when emacs or viraw mode + was enabled has been fixed. +02-06-17 A bug in which background job completion could cause the sleep + builtin to terminate prematurely has been fixed. +02-06-17 A bug in which the shell could core dump if getopts was called + when the OPTIND variable contained a negative value has been fixed. +02-06-10 +The edit mode prompt has been modified to handle escape sequences. +02-06-10 A bug which occurred for interactive shells in which the builtin + cat command was used in command substitution on a file whose + size was larger than PIPE_BUF has been fixed. +02-06-10 A bug in which the trap on ERR was not being processed when + set inside a function has been fixed. +02-06-07 A bug in which function definitions could cause the history count + to be decremented by one (and even become negative) has been fixed. +02-06-05 A bug in read in which share mode could be enabled has been fixed. +02-05-28 A bug which could occur when the last command of a script was + a case statement and the action selected ended in ;& instead of ;; + has been fixed. +02-05-23 A bug with unary + introduced in ksh93k has been fixed. +02-05-07 A bug in substitutions of the form ${var/pattern/string} in which + a backslash was inserted in the replacement string when it contained + a special pattern character has been fixed. +02-05-01 A bug in the emacs edit mode which occurred in versions compiled + for multibyte character sets which occurred when a repeated search + was requested after a long line had been returned for the previous + search has been fixed. +02-04-02 +vi and emacs edit modes were modified so that tab completion is + disabled when invoked from the read built-in. + +02-03-26 --- Release ksh93m+ --- +02-03-26 A bug in which \ was not handled correctly when used in file + expansion has been fixed. +02-02-18 A bug in which lines beginning with a # were deleted from here + documents when the here-document delimiter was followed by + a comment has been fixed. +02-12-06 An optimization bug in which ${!x[@]) was treated as invariant in + a for loop has been fixed. +02-02-06 A bug in which the ERR trap is not cleared for a script invoked + by name from within a function has been fixed. +02-01-08 A bug in which a shell script executed from within a subshell + could cause this script to have an invalid pointer leading + to a memory fault has been fixed. +02-01-07 +Added here documents of the form <<< word (as per zsh) which + is equivalent to << delim\nword\ndelim. +02-01-07 A bug in which the first word of a compound assignment, + x=(word ...), was treated as a reserved word has been fixed. +02-01-07 A bug in the handling of \ when noglob was enabled and a + substitution of the form ${word op pattern} occurred in the + same word has been fixed. +02-01-07 +A compilation option, CMDLIB_BLTIN in the file OPTION, has + been added. When this options is set, all commands implemented + in libcmd become shell builtin commands by default. +02-01-07 A bug in which builtin foo, where foo is already a builtin + would result in the builtin foo getting removed has been fixed. +02-01-07 A bug which the shell executed a command found in the current + directory when PATH have no valid directories has been fixed. +01-11-28 The value of $? was not being set when called with exit. +01-11-28 If the last command was of the form (...) and a trap on EXIT or + ERR was set, and the command inside () modified the trap, then + the original trap wasn't executed. +01-11-26 +The value for 0 is now preceded by the base number when + the base was not 10. +01-11-26 +The default has compilation mode has been changes so that + viraw mode will always be on. + +01-10-31 --- Release ksh93m --- +01-10-31 A for loop optimizer bug for subshells contained withing for + loops has been fixed. +01-10-16 typeset without arguments no longer outputs variable names + that do not have any attributes that are set. +01-10-16 A bug introduced in ksh93l in which assignments specified with + the exec built-in were not being expanded properly has been + fixed. +01-10-11 An optimization bug in which ${!x) was treated as invariant in + a for loop has been fixed. +01-10-11 Unsigned integer variables in bases other than 10 are printed now + expand in that base with the base prefix. +01-10-10 A number of typos in the self generating man pages for shell + built-ins have been fixed. +01-10-04 The self generated man pages for hist and fc were not working + correctly and have been fixed. +01-10-03 Yet another optimizer bug in which shell patterns were + treated as invariants has been fixed. +01-09-27 Two bugs relating to multibyte history searches and to find + have been fixed. +01-09-27 A bug introduced in ksh93k in which the PATH searching was + not restored after running a command with an assignment list + has been fixed. +01-09-26 A bug in which a zero filled field was treated as octal when + converted to integer has been fixed. +01-09-26 Yet another bug in the optimization of for loops related to + recursive functions with break or continue statements has been fixed. +01-09-25 +The exponentiation operator ** was added to the shell arithmetic + evaluation. It has higher precedence than * and is left + associative. +01-09-25 The code was modified to use the ast multibyte macros + and functions for handing multibyte locales. +01-09-25 +The expansion ${parameter:offset:length} now handles negative + offsets which cause offsets to be measured from the end. +01-09-25 Some spelling errors in the documentation were corrected. +01-09-24 +The /dev/tcp/host/port and /dev/udp/host/port now allow + the ports to be specified by service name. +01-09-24 +The change staring with ksh93g in which the the appropriate + library path variable is prepended with a corresponding library + directory has been modified. With the new method, only the + library path defined in the file named .paths in the directory + where the executable is found will be modified. See the + man page for more details. +01-09-23 +The .fpath file (see ksh93h) is no longer looked for in each + directory on the path to locate function directories. The + file named .paths is used instead. +01-09-23 A bug in which IFS was not being restored after being changed in + a subshell has been fixed. +01-09-16 +With the vi and emacs edit modes, after a list of command + or functions is generated with = or M-= respectively, + any element from the list can be pasted on the command line + by preceding the = or M-= with a numeric parameter specifying + the position on the list. +01-09-16 A bug in ksh93l caused command completion not to find aliases + and functions. Command listing from the edit mode was presented + in reverse order. This has been fixed. +01-09-13 Another bug in the optimization of for loops related to subshells + when traps were set has been fixed. +01-09-07 A change in ksh93l caused brace expansion to stop working + and this has been fixed. +01-09-04 A bug introduced in ksh93k in which an arithmetic statement + within a function that used name references did not follow the + reference has been fixed. +01-09-04 A bug introduced in ksh93l in which export -p did not prefix + each export with the word export has been fixed. +01-08-29 A bug in multibyte input which occurred when a partial multibyte + character was received has been fixed. +01-08-29 A bug introduced in ksh93l which could cause a core dump + when an assignment list containing PATH is specified inside + command substitution has been fixed. +01-08-09 Another bug in the optimization of for loops in ksh93l caused + errors in recursive functions using local variables that + contained for loops has been fixed. +01-07-27 A bug in which IFS would be unset after a command substitution + inside a here document has been fixed. +01-07-26 To conform to the POSIX standard, if you invoked ksh name, + and name does not contain a /, it will first try to run + one in the current directory whether it is executable or not + before doing a path search for an executable script. Earlier + versions first checked for an executable script using the + PATH variable. +01-07-23 A bug in which unset -f invoked in a subshell could unset a + function defined in the parent has been fixed. +01-07-16 A bug in the optimization of for loops in ksh93l caused + name references to be treated as invariants has been fixed. +01-07-09 A bug in which a discipline function applied to a local variable + could cause a shell exception has been fixed. Discipline + functions can only be specified for global variables. + +01-06-18 --- Release ksh93l --- +01-06-18 A bug in assigning integers larger than can be represented as + long integers to floating point variables has been fixed. +01-06-18 A bug in the handling of unsigned integers (typeset -ui) has + been fixed. +01-06-04 The evaluation of the PS1 prompt no longer effects the value + of the $? variable. +01-06-01 A small memory leak from subshells has been fixed. +01-05-22 A bug in which attributes for variables that did not have + values would be lost after a subshell has been fixed. +01-05-22 +The %R format has been added to convert a shell pattern into + an extended regular expression. +01-05-22 +The escape sequences \e, \cX, \C[.collating-element.], and + \x{hex} have been added to ASCII-C strings and to printf format + strings. +01-05-20 +Patterns of the form {n}(pattern) and {m,n}(pattern) are now + recognized. The first form matches exactly n of pattern whereas, + the second form matches from m to n instances of pattern. +01-05-20 +The shell allows *-(pattern), +-(pattern), ?-(pattern), + {m,n}-(pattern}, and @-(pattern) to cause the minimal + match of pattern to be selected whenever possible rather + than the maximal (greedy) match. +01-05-20 +The character class [:word:] has been added to patterns. + The word class is the union of [:alnum:] and the character _. +01-05-20 +Inside (...) pattern groups, the \ character is now treated + specially even when in an enclosing character class. The + sequences, \w, \d, \s are equivalent to the character classes + word, digit, and space respectively. The sequences \W, \D, + and \S are their complement sets. +01-05-20 +The shell now recognizes pattern groups of the form + ~(options:pattern) where options or :pattern can be omitted. + Options use the letters + and - to enable and disable options + respectively. The option letters g (greedy), i (ignore case) + are used to cause maximal matching and to cause case + insensitive matching respectively. If :pattern is also + specified, these options are only in effect while this + pattern is being processed. Otherwise, these options remain + in effect until the end of the pattern group that they are contained + in or until another ~(...) is encountered. These pattern groups + are not counted with respect to group numbering. +01-05-14 When edit completion, expansion, or listing occurs in the + middle of a quoted string, the leading quote is ignored when + performing the completion, expansion, or listing. +01-05-14 A small memory leak from subshells has been fixed. +01-05-10 A bug in which open files were not restored after a subshell + that had used exec to replace a file has been fixed. +01-05-10 +Redirection to a null file name now generates an error message. +01-05-09 The shell now rejects some invalid parameter substitutions that + were previously processed in undefined ways. +01-05-09 A bug in which the output of select was not flushed before the + read when input did not come from the terminal has been fixed. +01-05-08 A bug in which job ids would not be freed for interactive shells + when subshells ran built-ins in the background has been fixed. +01-05-08 +The FPATH variable now requires an explicit . to cause the + current directory to be treated as a function directory. +01-05-08 A bug in read -n when echo mode was disabled has been fixed. +01-05-07 A bug in which function definitions could be listed as part + of the history has been fixed. +01-04-30 +This release uses a new and often much faster pattern matcher than + earlier releases. +01-04-30 +An optimizer now eliminates invariant parameter expansions from + for while and until loops. +01-04-30 +The variable .sh.match is set after each pattern match (# % or /) + in a variable substitution. The variable .sh.match is an + indexed array with element 0 being the complete match. + The array is only valid until the next subsequent pattern + match or until the value of the variable changes which ever + comes first. +01-04-30 +A self generating man page has been added to shcomp. Also, + shcomp now stops compiling when it finds an exit or exec + command and copies the remainder so that it can be used + for standard input. +01-04-30 +The shcomp command was modified so that it can work in an + EBCIDIC environment and that binary scripts are portable + across environments. +01-04-30 A bug in the handling of a trailing : in PATH has been fixed. +01-04-30 A bug in which the builtin version of a command would get invoked + even though the full pathname for the command was specified + has been fixed. +01-04-30 A bug in which read would loose the last character when + reading the last line of a file that did not contain a new-line + character has been fixed. +01-04-23 A bug on some systems in which in vi mode the end of file + character and end of line character could be swapped has + been fixed. +01-04-23 A bug on some systems in which invoking a shell script that + did not have execute permission could set the exit value to + 127 rather than 126 has been fixed. +01-04-20 A bug in which read -n from a pipe would block if fewer than + n characters was received has been fixed. +01-04-09 A bug in which invalid patterns, for example, ) by itself, + was not treated as a string has been fixed so that if i=')', + then [[ $i == $i ]] is true. +01-04-09 +The shell arithmetic now interprets C character constants. +01-04-09 A bug in which a non-zero return from a function defined + with the function reserved word did not trigger the ERR + trap or exit with set -e has been fixed. +01-04-02 A bug on some systems, in which characters above 127 were + not displayed correctly in vi or emacs edit mode has been fixed. +01-04-02 A bug on some systems, introduced in the 'k' point release, in + which the erase character in viraw mode was moving the cursor + to the left without erasing the character has been fixed. +01-04-02 On some systems the wcwith() function was returning a wrong + value for characters and caused characters to be displayed + incorrectly from the shell edit modes. A work around for + this problem has been added. +01-03-26 A bug in which valid scripts could produce syntax errors + when run with locales that considered characters such as "'" + to be space characters has been fixed. +01-03-20 A bug in which an syntax error in an arithmetic expression + entered interactively could cause the shell to go into + an infinite loop outputting the error message has been fixed. +01-03-10 +ksh93 accepts -l as a synonym for -L in test on systems for + which /bin/test -l tests for symbolic links. +01-03-10 A bug in parsing scripts in which { and } are used in place of + in and esac in case statements embedded in compound commands + has been fixed. Use of { and } for in and esac is obsolete. +01-03-06 A bug in which an argument of the form foo=bar was not + being passed correctly to a traced function whose name + was foo has been fixed. +01-03-02 Using $(trap -p name) did not print the name of the current + trap setting for trap name. +01-02-26 Exported floating point variables gave incorrect results + when passing them to ksh88. This has been fixed. +01-02-25 A race condition in which a coprocess which completed too quickly + would not allow subsequent coprocesses to start has been fixed. +01-02-25 The 'g' format specifier is now handled by printf. It had + inadvertently been omitted. +01-02-20 The + was not being displayed during an execution trace + with the += assignment operator. +01-02-19 The error message which occurs when the interpreter name + defined on the #! line does not exist is more informative. +01-02-19 A bug in which $0 would not be set correctly when a + script with #! was invoked by full pathname from the + directory of the script has been fixed. +01-02-19 A shell script did not always pick up tty mode changes + made by external commands such as stty which could + effect the behavior of read. +01-02-19 The -u, -g, and -k unary tests did not give the correct + results when used with negation and this has been fixed. + +01-02-05 --- Release ksh93k+ --- +01-02-05 The sequence \<newline> inside $'...' was not incrementing + the line count and this has been fixed. +01-02-05 +Modified expansion of "${@-}" so that if no arguments are set + it results in null string rather than nothing. +01-02-02 memory leak problem with local variables in functions fixed. +01-01-25 +allow arithmetic expressions with float%int and treat them + as ((int)float)%int rather than as an error. +01-01-19 read -n1 was not working and has been fixed. +01-01-17 +ksh now handles the case in which a here document in command + substitution $() is terminated by the trailing ). Previously, + a new-line was needed at the end of the delimiter word. +01-01-02 A bug in which a KEYBD trap would cause a multi-line token + to be processed incorrectly has been fixed. +00-12-10 +Arithmetic integer constants can now have L and U suffices. +00-12-10 A bug in the processing of arithmetic expressions with compound + variables when the -n option is on has been fixed. +00-12-08 A bug in M-f and M-b from emacs mode has been fixed. This + bug only occurs when ksh93 is compiled without MULTIBYTE enabled. +00-11-29 A bug in which jobs -p would yield 0 for background + jobs run in a script has been fixed. +00-11-21 A bug in integer arrays in which the number of elements is + incorrect when the ++ operator is applied to a non-existing + element has been fixed. For example, integer x; ((x[3]++)). +00-11-20 A timing bug in which the shell could reset the terminal + group to the wrong value in the case that the a new process + changes the terminal group during startup has been fixed. + +00-10-27 --- Release ksh93k --- +00-10-27 Using tab for completion now works only when applied + after a non-blank character at the end of the current line. + In other case a tab is inserted. +00-10-27 A bug in the emacs edit mode for ^X^E has been fixed. + The ^X^E sequence is supposed to invoke the full editor + on the current command. +00-10-18 A bug in which expansions of the form ${var//pattern/string} + did not work correctly when pattern was '/' or "/" has + been fixed. +00-10-18 +The output format for indexed arrays in compound variables + has been modified so that it can be used as input. +00-10-18 Assignments with name references (typeset -n) will now + implicitly unreference an existing name reference. +00-10-17 A bug the += append operator when a single array element + is appended to a variable that is not an array has been fixed. +00-10-16 A bug in which the SIGCONT signal was being sent to + each process will kill -0 or kill -n 0 has been fixed. +00-10-12 +The arithmetic evaluation portion has been rewritten to + perform a number of optimizations. +00-10-10 A bug in which name prefix matching ${!name.*} was not + checking name to see if it was a name reference has been fixed. +00-09-26 A bug in the multibyte version in which the width of for + non-printing characters was not correct has been fixed. +00-09-12 +Made changes to get multibyte editing work on UWIN for windows +00-09-12 A bug in which multibyte characters would be displayed incorrectly + has been fixed. +00-08-08 Removed build dependency on iswprint() and iswalph(). +00-07-20 In some cases the read builtin would read more than a single + line from a pipe on standard input and therefore leave the seek + position in the wrong location. +00-07-05 +If the directory / is on the path, a / will not be inserted + between the directory and the file name during path searching + to avoid searching // for systems that treat this specially. +00-06-26 A bug in which on rare occasions wait could return before all + jobs have completed has been fixed. +00-06-21 A bug in which backspace did not work correctly during the + R replace directive in vi-mode has been fixed. +00-06-12 +Added variable name completion/expansion/listing to the set of + completions. Variable name completions begin with $ or "$ followed + by a letter. +00-05-09 --- Release ksh93j --- +00-05-09 Modified command substitution to avoid using /tmp files when + run on read-only file systems. +00-04-17 +Modified printf to handle '%..Xc' and '%..Xs' options where X + is not an alpha character. Previous versions core dumped with this. +00-04-10 +Changes to multibyte editing code were made to use standard + ISO C functions rather than methods devised before the standard. +00-04-09 Add %H options to printf to output strings with <"'&\t> properly + converted for use in HTML and XML documents. +00-04-07 +Modified getopts builtin to handle \f...\f in usage string + by invoking specified function. +00-04-04 Added self generating man pages for bg, fc, fg, disown, jobs, + hist, let, ., and ulimit. +00-03-30 +The append operator += has been added and can be used + for all assignments, strings, arrays, and compound variables. +00-03-30 +Code was modified in several places to support automatic + generation of C locale dictionaries. +00-03-28 A bug in which the set and trap commands invoked with --name + type arguments would terminate the invoking script has + been fixed. +00-03-27 A bug in which the library path variable was not updated + correctly on some systems as described in the 'g' point + release has been fixed. +00-03-07 printf now returns a non-zero exit status when one of + its arguments cannot be converted to the given type. +00-03-05 The return value and error message for a command that + was found on the path but was not executable was set + incorrectly. +00-03-05 A prototype for ioctl() was removed from the vi edit mode. + +00-01-28 --- Release ksh93i --- +00-01-28 +Most of the built-in commands and ksh itself are now + self documenting. Running command --man will produce + screen output. Running command --html produces the + man page in html format. +00-01-28 +The getopts builtin can process command description + strings to produce man pages. +00-01-28 A bug in which a script could terminate when getopts + encountered an error when invoked inside a function + has been fixed. +00-01-28 When a symbolic link was specified as the name of + the script to invoke by name, the value of $0 was + set to the real file name rather than the link name + in some cases and this has been fixed. +00-01-28 A bug in which the precision given as an argument + to printf was not working has been fixed. + +99-03-31 --- Release ksh93h --- +99-03-31 +The PATH search algorithm has been modified to look + for a file named .fpath in each bin directory and if + found, to search for functions in this directory if + it cannot find the command in that directory. +99-03-31 +When performing pathname expansion, the shell checks + to see whether each directory it reads is case sensitive + or not, and performs the matching accordingly. +99-03-31 +The %T format for printing formatted date/time. +99-03-31 +The emacs and vi modes now handle arrow keys when + they use standard ANSI escape sequences. +99-03-31 +The TAB key can be used for completion in emacs and viraw mode. +99-03-31 A bug in setting .sh.editchar during the KEYBD trap + for the MULTIBYTE option was fixed in release ksh93h. +99-03-31 A bug in shcomp for compilation of unary operators with [[...]] + has been fixed. +99-03-31 A bug in which the value of $? was changed when executing + a keyboard trap has been fixed. +99-03-31 The handling of SIGCHLD has been changed so that the + trap is not triggered while executing trap commands + to avoid recursive trap calls. +99-03-31 A bug in which a local variable in a function declared readonly + would generated an error when the function went out of + scope has been fixed. +99-03-31 A bug in which \<new_line> entered from the keyboard + with the KEYBD trap enabled has been fixed. +99-03-31 The error message for a misplaced ((, for example print ((3), + was often garbled and has been fixed. +99-03-31 A bug in the KEYBD trap in which escape sequences of the form + <ESC>[#~ were not being handled as a unit has been fixed. +99-03-31 A bug in which ksh would consider expressions like [[ (a) ]] + as syntax errors has been fixed. +99-03-31 A function defined as foo() without a function body + was not reported as a syntax error. +99-03-31 A bug in which ksh could run out of file descriptors when + a stream was repeatedly opened with exec and read from + has been fixed. + +98-04-30 --- Release ksh93g --- +98-04-30 +The pipefail option has been added. With pipefail + enabled, a pipeline will not complete until all + commands are complete, and the return value will + be that of the last command to fail, or zero if + all complete successfully. +98-04-30 +The name-value pair library uses the cdt library rather + than the hash library. This change should be transparent + to applications. +98-04-30 +On the U/WIN version for Window 95 and Windows NT, + when a directory beginning with a letter followed by + a colon is given to cd, it is assumed to be an absolute + directory +98-04-30 +When an executable is found on a given path, + the appropriate library path variable is prepended + with a corresponding library directory. +98-04-30 A bug in which a name reference could be created to + itself and later cause the shell to get into an infinite + loop has been fixed. +98-04-30 A bug in shcomp relating to compound variables was fixed. +98-04-30 A bug introduced in ksh93e in which leading 0's in -Z + fields caused the value to be treated as octal for arithmetic + evaluation has been fixed. +98-04-30 A bug when a name reference with a shorter name than + the variable it references was the subject of a compound + assignment has been fixed. +98-04-30 A bug which in which assignment to array variables in + a subshell could effect the parent shell has been + fixed. +98-04-30 read name?prompt was putting a 0 byte at the end of the + prompt on standard error. +98-04-30 A bug in [[ string1 > string2 ]] when ksh was run with -x + has been fixed. +98-04-30 A bug in which the escape character was not processed + correctly inside {...} when brace expansion is enabled + has been fixed, for example {\$foo}. +98-04-30 A bug in line continuation in here-documents has been + fixed. +98-04-30 The default base when not specified with typeset -i is + 10 in accordance with the documentation. Previously, + the value was determined by the first assignment. +98-04-30 A parsing bug in which a # preceded alphanumeric + characters inside a command substitution caused + a syntax error to be reported has been fixed. +98-04-30 A bug in which a decimal constant represented as 10#ddd + where ddd was more than five digits generated a syntax + error has been fixed. +98-04-30 A bug in here document expansion in which ${...} expansions + were split across buffer boundaries has been fixed. +98-04-30 +The sh_fun() function now takes third argument which + is an argument list for the invoked discipline function + or built-in. +98-04-30 +A callback function can be installed which will give + notification of file duplications and file closes. +98-04-30 When ksh is compiled on systems that do not use fork() + current option settings where not propagated to sub-shells. + +97-06-30 --- Release ksh93f --- +97-06-30 +Hostnames in addition to host addresses can be given in + /dev/tcp/host/port virtual file names. +97-06-30 File name completion and expansion now quotes special + characters in file names from both emacs and vi edit modes. +97-06-30 An empty for list behave like a for list with null expansions. + It produces a warning message with sh -n. +97-06-30 +The code has been modified to work with EBCDIC as well as ASCII. +97-06-30 A bug which would cause the secondary prompt to be + displayed when a user entered a literal carriage + return has been fixed. +97-06-30 A bug which caused ksh read -s name to core dump was + fixed. +97-06-30 A bug with the expansion of \} and \] inside double + quoted strings that also contained variable expansions + has been fixed +97-06-30 Changes in the ksh93e point release caused autoload + functions invoked from within command substitution + to fail. This has been fixed. +97-06-30 A bug in the processing of here-documents that could + prevent variable substitution to occur after $(...) command + substitution for long here documents has been fixed. +97-06-30 A bug caused by a race condition that could cause SIGTERM + to be ignored by a child process has been fixed. +97-06-30 A bug which prevented the startup of a coprocess immediately + after killing a running coprocess has been fixed. +97-06-30 ulimit foobar, where foobar is not an arithmetic + expression, now gives an error message as it did with ksh88 + instead of setting the file size limit to 0. +97-06-30 A bug which could cause an interactive shell to terminate when + the last process of a pipeline was a POSIX function was fixed. +97-06-30 A bug which could cause command substitution of a shell script + to core dump has been fixed. +97-06-30 A security hole was fixed in suid_exec. +97-06-30 Arithmetic functions such as pow() that take more than + one argument, did not work if arguments other than the + first contained parenthesized sub-expression. +97-06-30 The error message from a script containing an incomplete + arithmetic expression has been corrected. +97-06-30 A bug which caused a core dump on some machines when + the value of a name reference contained a positional + parameter and the name reference was not defined inside + a function has been fixed. +97-06-30 Arithmetic expressions now correctly handle hexadecimal + constants. +97-06-30 A bug in which integer variables could be expanded + with a leading 10# when declared with typeset -i + multiple times has been corrected. +97-06-30 A bug in which IFS wasn't correctly restored when + set within command substitution has been fixed. +97-06-30 The _ character is now considered as part of a word + with the M-f and M-b emacs directives as it was in ksh88. +97-06-30 A bug in brace pattern expansions that caused expressions + such as {foo\,bar,bam} to expand incorrectly have been fixed. + + +96-07-31 --- Release ksh93e --- +96-07-31 +The math functions, atan2, hypot, fmod, and pow were added. +96-07-31 +When a shared library is loaded, if the function lib_init() + is defined in the library, it is invoked the first time that + the library is loaded with builtin -f library. +96-07-31 The k-shell information abstraction database option, KIA, + has been revamped. +96-07-31 Empty command substitutions of the form $() now work. + whence -v foo now gives the correct result after calling + builtin -d foo. +96-07-31 A bug in right to left arithmetic assignment for which + the arithmetic expression (( y = x = 1.5 )) did not + yield 1 for y when x was declared typeset -i was fixed. +96-07-31 printf has been fixed to handle format containing \0 + and/or \0145 correctly. In addition, characters following + %b in the format string are no longer displayed when + the operand contains \c. +96-07-31 A bug in printf that could cause the %E format to + produce unnormalized results has been fixed. +96-07-31 A bug which causes some arithmetic expressions to be + incorrectly evaluated as integer expressions rather + that floating point has been fixed. +96-07-31 Functions defined inside a subshell no longer remain + defined when the subshell completes. +96-07-31 The error message from sh -c ';echo foo' has been + corrected. +96-07-31 The format for umask -S has been changed to agree + with the specification in the POSIX standard. +96-07-31 A bug that caused side effects in subscript evaluation + when tracing was enabled for subscripts using ++ or -- + has been fixed. +96-07-31 To conform to the Posix standard getopts has been changed + so that the option char is set to ? when it returns with + a non-zero exit status. +96-07-31 The handling of \} inside ${name...} has been fixed so + that the \ quotes the }. +96-07-31 A bug that caused the read builtin to resume execution + after processing a trap has been fixed. +96-07-31 [[ -s file ]] has been fixed so that if file is open + by ksh, it is flushed first. +96-07-31 In some cases attributes and sizes for non exported + variables weren't being reset before running a script. +96-07-31 The value of TMOUT was affected by changes make to + it in a subshell. +96-07-31 The jobs command did not reflect changes make by + sending the CONT signal to a command. +96-07-31 The error message for ksh -o unknown was incorrect. +96-07-31 Functions invoked as name=value name, did not use + values from the calling scope when evaluating value. +96-07-31 A bug in which the shell would reexecute previously + executed code when a shell script or coprocess was + run in the background has been fixed. +96-07-31 A bug in which an empty here-document would leave + a file descriptor open has been fixed. +96-07-31 A bug in which $(set -A array ...) would leave a + side effect has been fixed. +96-07-31 A discipline function for a global variable defined + within a function defined with the function keyword, + incorrectly created a local variable of the same name + and applied the discipline to it. + +95-08-28 --- Release ksh93d --- +95-08-28 The \ character was not handled correctly in replacement + patterns with ${x/pattern/replace}. +95-08-28 A bug with read in which the line did not end with + a new-line has been fixed. +95-08-28 A bug in file name generation which sometimes + appended a . for filenames that ended in / has + been fixed. +95-08-28 +If a process is waited for after a status has + been returned by a previous wait, wait now + returns 127. +95-08-28 A bug with hist (fc) -e which prevented a command + to re-executed after it had been edited has been fixed. +95-08-28 A bug which prevented quoting from removing the meaning + of unary test operators has been fixed. +95-08-28 A bug with typeahead and KEYBOARD traps with the + MULTIBYTE option set has been fixed. +95-08-28 +Builtin functions can take a third argument which is + a void*. +95-08-28 The nv_scan() function can restrict the scope of a walk + to the top scope. + +95-04-31 --- Release ksh93c --- +95-04-31 The expansion of "$@" was incorrect when $1 was the null + string. +95-04-31 A bug which could incorrectly report a syntax error in + a backquoted expression when a $ was preceded by \\ + has been fixed. +95-04-31 A bug which prevented the shell from exiting after + reporting an error when failing to open a script + has been fixed. +95-04-31 A bug that could lead to memory corruption when a + large here document that required parameter or command + substitution was expanded has been fixed. +95-04-31 A bug that could cause a core dump on some systems + after ksh detected an error when reading a function + has been fixed. +95-04-31 A bug which could cause a coprocess to hang when + reading from a process that has terminated has been fixed. +95-04-31 A bug which caused a script to terminate when set -e + was on and the first command of and && or || list + failed has been fixed. +95-04-31 A bug with here documents inside $(...) when the delimiter + word is an identifier has been fixed. +95-04-31 A bug which caused $0 to display the wrong value when + a script was invoked as an argument to the . command + and the eval command has been fixed. +95-04-31 A bug that could cause the built-in sleep to hang + has been fixed. +95-04-31 A bug introduces in 12/28/93b which caused the backslash + to be removed when it was followed by digit inside double + quotes in some instances has been fixed. +95-04-31 A bug which could cause a core dump if ksh was invoked with + standard input closed has been fixed. +95-04-31 A bug which could cause a core dump if typeset -A was + specified for an existing variable has been fixed. +95-04-31 Variables that were unset but had attributes such as readonly + and export were not listed with readonly, export and typeset. +95-04-31 Several problems with signals have been fixed. +95-04-31 A bug which prevented ulimit -t from working has been fixed. + Also, a bug in which failed ulimits could cause a core dump + has also been fixed. +95-04-31 A bug in expansion of the form ${name/#pattern/string} and + ${name/%pattern/string} has been fixed. +95-04-31 A bug which caused read -r on a line that contained only + blanks to get a non-null value has been fixed. +95-04-31 A bug introduced in the 'a' point release in which + ${x='\\'} expanded to \ when x was unset has been fixed. +95-04-31 A bug which prevented a trap on EXIT from being executed + when the last command in a script was a function invocation + has been fixed. +95-04-31 A bug which caused an interactive shell ignore input when + standard error was redirected to a file with exec, + and then restored with exec 2>&1 has been fixed. +95-04-31 An interactive shell turns on monitor mode even when + standard error has been redirected to a file. +95-04-31 A bug which could cause standard input to be incorrectly + positioned for the last command of a script has been fixed. +95-04-31 A bug in the edit modes which allowed walking back in + the history file for more than HISTSIZE commands has + been fixed. +95-04-31 A bug which could cause a core dump if variable TMPDIR was + changed between two command substitutions has been fixed. +95-04-31. A bug which prevented a trap on EXIT from being cleared + has been fixed. +95-04-31 A bug fixed for the v directive in vi MULTIBYTE has been + fixed. +95-04-31 Code to for IFS handling of multibyte characters has + been added. +95-04-31 The displaying of multibyte strings in export, readonly, + typeset, and execution traces has been fixed. +95-04-31 Variables inside functions are now statically scoped. + The previous behavior was never documented. +95-04-31 Variables inside functions are now statically scoped. + The previous behavior was never documented. +95-04-31 A few changes have been made to the name-value library + that affect built-ins that use disciplines. The + changes allow disciplines to be shared by variables + and should make it possible to add new disciplines + without recompilation. +95-04-31 +The name-value library interface has undergone significant + change for this revision. See the new nval.3 man page. + +94-12-31 --- Release ksh93b --- +94-12-31 +Variables inside functions are now statically scoped. + The previous behavior was never documented. +94-12-31 +If IFS contains two consecutive identical characters belonging + to the [:space:] class, then this character is treated as + a non-space delimiter so that each instance will delimit + a field. For example, IFS=$'\t\t' will cause two consecutive + tabs to delimit a null field. +94-12-31 +The getopts command has a -a name option that specifies a + name that will be used for usage messages. +94-12-31 A bug which caused unset RANDOM to dump core has been + fixed. +94-12-31 A bug which prevented return for terminating a profile + or ENV file has been fixed. +94-12-31 A bug which prevented standard input from being + directed to /dev/null for background jobs when + monitor mode was turned off has been fixed. +94-12-31 Statements of the form typeset -options var[expr]=value + did not perform substitutions on expr as expected. +94-12-31 A bug which prevented the shell from sending a HUP + signal to some background jobs that were not disowned + has been fixed. +94-12-31 A bug which allowed a script to trap signals that are + ignored at the time that the shell was invoked by exec + has been fixed. +94-12-31 A bug which could cause a core dump when a discipline + function was unset within a discipline was fixed. +94-12-31 The typeset builtin now accepts a first argument of + + or - for compatibility with ksh88. +94-12-31 For compatibility with ksh88, the results of expansions + of command arguments will treat the extended character + match characters ()|& as ordinary characters. +94-12-31 A bug which caused read to fail on a file that was + open for read/write with <> when the first operation + was print or printf has been fixed. +94-12-31 When a job is suspended, it is put on the top of + the job list as required by the POSIX standard. +94-12-31 The value of OPTARG when an option that required + an argument but didn't have one was incorrect in the + case the the option string began with a :. +94-12-31 A bug which caused the terminal to get into a bad + state with some KEYBD traps in vi-mode has been fixed. +94-12-31 A bug which caused an invalid trap to cause a script + to terminate, rather than just return an error, has + been fixed. +94-12-31 Backreferencing sub-expressions in patterns and replacement + strings now works. +94-12-31 A bug in chmod which caused the -R option to fail has + been fixed. +94-12-31 +More signal names have been added for Solaris + +94-06-30 --- Release ksh93a --- +94-06-30 An expansion bug which causes portions of a word after + a $((...)) expansion that contains a nested $var expansion + to be lost has been fixed. +94-06-30 A bug that caused a core dump when a script that did not + have PWD set and did a cd inside command substitution + has been fixed. +94-06-30 A bug which caused a core dump on some machines when + the LANG variable was assigned to has been fixed. +94-06-30 A bug which incorrectly handled set disciplines that + performed arithmetic evaluation when the discipline + was called from the arithmetic evaluator has been fixed. +94-06-30 A bug caused by an EXIT trap inside a function that + was executed in a subshell was fixed. +94-06-30 If foo is a function, and not a program, then command foo + now reports that foo isn't found rather than invoking foo. +94-06-30 The previous version incorrectly listed -A as an + invocation option. The -A option is only for set. +94-06-30 A bug was fixed which caused ksh to loop when execution trace + was enabled and the PS4 prompt required command substitution. +94-06-30 A bug which could cause the job control switch character + to be disabled when a script that enabled monitor mode + terminated was fixed. +94-06-30 A bug in the macro expansion global replacement operator //, + when the pattern began with a [ or +( has been fixed. +94-06-30 A bug which prevented ~ expansion from occurring when + it was terminated with a colon inside an assignment + has been fixed. +94-06-30 A bug in the dot command which prevented autoload functions + from working has been fixed. +94-06-30 A bug which caused a variable to be unset if the + its value were expanded inside a set discipline has + been fixed. +94-06-30 Whence -a now longer reports that a defined function + is undefined. +94-06-30 A bug on some systems in which $0 would be incorrect + in scripts invoked by name has been fixed. +94-06-30 Here documents with an empty body now work. +94-06-30 A bug which disabled argument passing and resetting + of options for a script invoked by name inside a + function has been fixed. +94-06-30 A bug in which an EXIT trap set the caller of a function + would be executed if a command called inside a function + was not found has been fixed. +94-06-30 A bug which allowed a script to trap signals that are + ignored at the time that the shell was invoked has + been fixed. +94-06-30 A bug which caused 2<&1- when applied to a shell built-in + to leave standard input closed has been fixed. +94-06-30 A bug which caused the shell to incorrectly parse + $() command substitutions with nested case statements + has been fixed. + + +:::::::: libast :::::::: + +12-03-10 misc/optget.c: HELP_index for "PLUGIN" too +12-02-29 include/shcmd.h: PLUGIN_VERSION 20111111 for cdt disc/meth change +12-02-29 comp/spawnveg.c: fix sigcritical() to include waitpid() for internal child +12-02-29 malloc.c: make __malloc_hook initialization thread safe +12-02-24 comp/iconv.c: fix winix UTF-8 vs UCS-2 over-conversion +12-02-24 astsa/*.h: clean up header guards +12-02-24 astsa/astsa.omk: clean up standalone old make makefile interactions +12-02-21 misc/cmdarg.c: fix bug that set argv[0] +12-02-10 sfvprintf.c: fix 1 byte too long buffer access +12-02-07 malloc.c/features/vmalloc: add gnu __malloc_hook tests +12-02-06 vmmopen.c: fix ALIGN vs sys/param.h macro conflict +12-02-02 astlicense.c: add license.component for component-specific licenses +12-01-31 spawnveg.c: fix transient bug that made invalid setpgid() call +12-01-27 pathpath.c: fix buffer size math when internal allocation requested +12-01-24 malloc.c: fix _vmkeep() bug that did not return previous state +12-01-23 malloc.c: add VMALLOC_OPTIONS=break to try sbrk() block allocator first +12-01-21 astlicense.c: option style only overrides default license.type +12-01-18 malloc.c: disable multiple regions for tracing or !vmbest or ASO_SIGNAL +12-01-12 sfpkrd.c: add __sun I_PEEK+rsh runtime workaround +12-01-10 shcmd.h: void* => Shbltin_t* +12-01-10 tmxdate.c: handle { n>=1000 } TM_PARTS +11-12-21 plug up some meory links -- thanks mhlavink +11-12-21 vmprivate.c: enclose VM_NONMEM exception in CLRLOCK(vm,0) ... SETLOCK(vm,0) +11-12-13 aso: in -lposix for uwin, not -last -- just like vmalloc +11-12-13 sfpoll.c: all streams SF_IOINTR => don't ignore EINTR +11-12-13 sfdcslow.c: set SF_IOINTR +11-12-09 malloc.c: add _vmkeep() for setlocale() intercept _SYS_setlocale_free_OK +11-12-04 sfio: _Sfmaxr=0 (unlimited) by default; use ulimit -M|-d or SFIO_OPTIONS +11-12-01 aso: sync to new api +11-11-11 optget.c: move .TH to the top for --nroff to get our macros first +11-11-11 aso,cdt,vmalloc: resync with kpv +11-11-11 cdt: preserve bits and Dt_link_t for CDT_VERSION < 20111111 +11-10-24 sfvprintf.c: %.-ns truncate from left to n chars +11-10-21 sfvprintf.c: fix %0s (no width) core dump +11-10-10 aso: add _WIN32 support +11-09-26 vmalloc: sync with kpv +11-08-29 features/{dirent,wchar,wctype}: eliminate #include with no header +11-08-25 #pragma prototyped tweaks -- sun4 is dead, long live sun4 +11-08-25 ftwalk.c: FTS_SLNONE => FTW_SL +11-08-11 features/wchar: fix #include _nxt_wchar for K&R C +11-08-04 optget.c: tweak --html rendering +11-07-24 mime.c: add %(default)[st] default if arg == "" +11-07-21 setlocale.c: fix debug locale to treat "<<" as two single byte chars +11-06-14 spawnveg.c: pgid -1: new session -2: setpgrp()&&tcsetpgid() +11-06-14 pathprog.c: add darwin _NSGetExecutablePath +11-05-14 features/common,features/align.c: { _X86_ _X64_ } conditionals for generic uwin +11-05-13 tm/tminit.c: tweak tzname[] prototype +11-05-09 astlicense.c: add ". file" parent-relative include and depth 4 input stack +11-05-05 cmdarg: update to cmdopen_20110505 api +11-05-03 sfio/sfclose.c: make sure close() errors propagate to sfclose() return value +11-04-20 port/astlicense.c: add { id name } keys +11-04-15 fmtdev.c: fix to work for non-{blk,chr} special +11-04-12 stk: change size args to size_t and stseek() offset to ssize_t +11-04-12 sfio: sync with kpv to optimize large SF_STRING sfputr() buffer allocation +11-03-28 misc/fts.c: fix FTS_SLNONE logic to set it when it should! +11-03-17 misc/stk.c: fixed bug that could delete an active stack frame +11-03-10 sfio/sfvprintf.c: add %0<width>s to preserve <width> trailing chars in string arg +11-03-09 misc/magic.c: add %d...%s where if %d==1 then %s=="" else %s=="s" +11-03-09 misc/magic.tab: add windows ico +11-02-08 misc/stk.c: change STK_FSIZE to (1024*sizeof(char*)) for 64 bit normalization +11-02-02 sfio/sfmode.c: don't call sfsetbuf() on unbuffered stream to make it unbuffered +11-02-02 features/wchar: handle hp.ia64 va_list interactions +11-02-02 comp/omitted.c: fix mismatch between stat() vs _stat() +11-01-31 std/wctype,features/wctype: add to handle <wchar.h> interactions +11-01-28 add -lw for ancient sunos +11-01-28 include/magic.h,misc/magic.c: add MAGIC_ALL +11-01-27 tm/tmxfmt.c,tmpoff.c: %_z for SHH:MM +11-01-25 features/wchar: change <wctype.h> <wchar.h> ordering +10-12-24 sfstrtof.h: fix thousand grouping bug that did not check last group +10-12-21 pathkey.c: add win32 { /32 /64 } preroot to hash +10-12-09 pathprog.c: handle intermediate path != '* and fix invalid pathpath() call +10-12-01 astconf.c: fix look.standard undefined variable reference +10-12-01 sfset.c: SF_LINE|SF_WCWIDTH => no need for sfsetbuf() to call isatty() +10-12-01 sfsetbuf.c: cache /dev/null <dev,ino> to cut down /dev/null stat()'s +10-12-01 optget.c: delay dictionary initialization until needed +10-11-30 malloc.c: drop { VMDEBUG VMETHOD VMPROFILE VMTRACE } env checks +10-11-30 port/astconf.c: eliminate esaccess() calls for OP_universe checks +10-11-24 regcomp.c: [[=]=]] must at least match itself in non-C locales +10-11-23 glob.h,glob.c: add GLOB_GROUP => REG_SHELL_GROUP +10-11-20 glob.c: handle mode switches across / +10-11-19 regcomp.c: REG_SHELL => REG_CLASS_ESCAPE +10-11-16 vmalloc.h: add VMFL tracing to vmstrdup() +10-11-16 ast.h: simplify VMDEBUG _BLD_DEBUG and VMFL logic +10-11-12 tm/tmlocale.c: ast TM_* extensions default to C locale +10-11-10 regex/regnexec.c,vmalloc/vmstat.c: eliminate strict-aliasing puns +10-10-20 misc/translate.c: change debug translation to drop " in (a,b,c,"d") +10-10-10 misc/glob.c: drop ancient D_FILENO(d)!=0 test and trust readdir() +10-10-06 misc/translate.c: fix "debug" locale logic +10-10-04 misc/magic.c: fix magic() skip check to honor the continuation +10-10-04 regex/regcoll.c: add wchar_t* args to regcollate(), drop ucs name lookup +10-09-28 comp/setlocale.c: add utf8_wctomb() +10-09-28 string/chresc.c,regex/regcoll.c: fix \S[.X.] (\C[.X.] never worked!) +10-09-24 string/chresc.c: \Cc for control c, \S[.X.] for collating symbol X +10-09-24 string/chresc.c: { \cc \e } deprecated +10-09-22 regex/regcomp.c: fix off-by-one collation class allocation bug +10-09-20 regex/regclass.c: fix CTYPES off-by-one bug +10-09-14 comp/conf.sh: const int conf_elements, prefix_elements; +10-09-08 add features/sizeof => ast_sizeof.h +10-08-31 comp/getopt[l].c: export functions for dlls +10-08-25 port/lc.c: add features/locale check for canonical UTF-8 spelling +10-08-20 include/ast.h: add export plugin_version() prototype +10-08-20 comp/conf.tab: add SF_BUFSIZE +10-08-11 misc/conformance.c: conformance(0,0) => "standard" +10-08-11 misc/conformance.c: check ast_env_serial for dynamic astconf() changes +10-08-11 port/lcgen.c: remember to fudge Table_t.count for synthesized entries +10-08-04 include/ast.h,comp/setlocale.c: add { debug C.UTF-8 } mbalpha() mbwidth() +10-08-02 misc/translate.c: add NLSPATH message cache check +10-07-29 string/fmtint.c: fix nasty bug that rendered "1000" as "1" +10-07-27 setlocale,lsgen,localeconv: handle C vs C_EU decimal thousands sep +10-07-26 misc/optget.c: fix interaction with nested plugin/builtin calls +10-06-29 string/strtoi.h: strton() multiplier 1 => power of two suffix +10-06-28 features/wchar: handle systems that require __va_list => va_list +10-06-28 comp/conf.tab: another PID_MAX tweak -- default to 99999 for most +10-06-28 port/astconf.c: lone "CONFORMANCE = standard" => all defaults standard +10-06-25 misc/optget.c: avoid sfprints() call during initialization +10-06-01 features/api, ast_api.h: formalized forwards/backwards api compatibility +10-06-01 _AST_API=20100601: add size_t args for all path*() output buffers +10-06-01 comp/setlocale.c: handle C.UTF-8 test locale +10-06-01 include/mc.h: add size_t to mcfind() for result buffer (internal api) +10-06-01 use strlcpy() instead of strncpy() +10-05-28 include/ast_version.h: add AST_PLUGIN_VERSION for dllplugin() +10-05-28 include/shcmd.h: add SH_PLUGIN_VERSION for dllplugin() +10-05-28 misc/conformance.c: add conformance(3) +10-05-28 misc/optget.c: add [(id1|id2)...] conformance("id1|id2",0) conditionals +10-05-25 include/sfhdr.h: adjust SF_NMAP according to _ptr_bits +10-05-25 include/shcmd.h: add sh_builtin() macro for lib_init() table initialization +10-05-21 misc/optget.c: --html \bfoo::bar([[:digit:]][[:upper:]]*) => foo-bar.html +10-05-15 include/proc.h,misc/procopen.c: add PROC_ORPHAN +10-05-09 misc/optget.c: add --???MAN[section] --???SECTION +10-05-07 sfio,stdio: fix all snprintf() variants to handle buf==0 and/or n==0 +10-05-04 string/fmtesc.c: add mb iswsoace() and iswcntrl() quoting checks +10-05-03 fix LC_MESSAGES catalog lookup bugs, check for $set==3, accept $set==1 +10-04-30 string/chresc.c: add chrexp() for FMT_EXP_* +10-04-30 string/stresc.c: add strexp() for FMT_EXP_* +10-04-30 string/chresc.c: fix \uXXXXY bug that consumed Y +10-04-22 misc/optget.c: check for html entities in <A name="..."> +10-04-22 misc/getcwd.c: add features/syscall check for SYSGETCWD() { linux solaris } +10-04-22 string/stresc.c: wide chars absent locale guidance default to UTF-8 +10-04-12 port/mnt.c: favor bsd getfsstat() over getmntinfo() +10-04-11 string/strtoi.h: k (1000) and ki (1024) now differentiated +10-04-10 misc/recstr.c: fix 'd[delimiter]' parse +10-04-08 include/vmalloc.h,vmalloc/vmstat.c: add Vmstat_t.mode region mode bits +10-04-05 misc/fts.c: drop 1997-01-07 fts_open()=0 is one file and stat() fails +10-04-05 misc/optget.c,optlib.h: add Optpass_t.release for --nroff .TH +10-04-02 misc/optget.c: fix $'[-n?\n...]' --version bug +10-04-02 regex/regcomp.c: ~(X) => REG_EXTENDED|REG_AUGMENTED, ~(PU) instead of ~(U) +10-03-24 misc/procopen.c: add PROC_FD_CTTY(fd) +10-03-24 path/pathtemp.c: fix pointer => int casts +10-03-15 regex/regcache.c: fix 1 byte buffer overflow (didn't count trailing \0) +10-03-08 features/tvlib: fix utimensat probe to include all macros/structs +10-03-07 features/lib: change stream_peek to test pipes only +10-03-07 string/strelapsed.c: fix next char return overrun +10-03-06 tm/tvtouch.c: use runtime fallback if utimensat() fails with ENOSYS +10-03-05 path/pathtemp.c: add pfx /seed for regression testing +10-03-04 vmalloc/vmwalk.c: add user supplied handle arg +10-03-04 path/pathtemp.c: properly handle mktemp()-style *+(X) templates +10-03-03 include/ast_getopt.h: remove NULL guard - _AST_GETOPT_H now handles it +10-02-24 comp/getopt.h: fix ast_std.h interactions +10-02-24 vmalloc/malloc.c: empty { VMALLOC_OPTION VMDEBUG ... } => no debug! +10-02-02 string/base64.c: fix corner case output buffer overflow +10-02-02 features/fs: sys/mnttab.h requires stdio.h on some systems!! +10-02-01 misc/optget.c: uppercase --html heading -- doh +10-01-29 misc/optget.c: [+NAME?...] overrides error_info.id for >= STYLE_man +10-01-25 vmalloc/vmprivate.c: fix seg ptr initialization bug (24 years old!!) +10-01-20 misc/optget.c: handle nested {...} rendering +10-01-20 misc/state.c: add ast.version for runtime api version +10-01-20 port/astconf.c: "_AST_VERSION" now returns ast.version +10-01-20 include/ast_std.h: add ast.version for runtime api version +10-01-19 astlicense.c: add epl +10-01-01 vmalloc: VMALLOC_OPTIONS env var for all runtime options +10-01-01 include: change some <ast.h> refs to less intrusive <ast_*.h> +10-01-01 setlocale.c,translate.c,fmterror.c: AST_LC_internal retains prev state +10-01-01 comp/setlocale.c: AST_LC_setenv defers to LC_ALL (for sh) +10-01-01 ast_std.h: add { AST_LC_internal AST_LC_setenv } +09-12-24 comp/setlocale.c: fix setlocale(LC_ALL,"") when already initialized +09-12-17 misc/optget.c: handle mixed solaris usage="x:f:(in)yo:(out)" +09-12-11 regex/regcomp.c: posix semantics for [z-a] +09-12-11 regex/regcomp.c: fix BRE/ERE ^^ logic +09-12-11 regex/regcomp.c: fix regcomb() for REG_LEFT|REG_RIGHT +09-12-11 regex/regcomp.c: bm complete=0 if REX_END +09-12-11 comp/sigflag.c: add with npt check in features/sig.sh +09-12-11 tm/tminit.c: fix _tzset_environ logic +09-12-09 tm/tmlocale.c: include "ast_nl_types.h" to pull nl_langinfo in! +09-12-04 features/options: add "opt map-libc" check +09-12-03 tm/tmxdate.c: fix 'next month final day' for dec -> jan +09-11-21 misc/magic.tab: add gimp XCF +09-11-20 vmalloc/vmtrace.c: add pid to assertion disgnostics +09-11-11 regex.h,regcomp.c: add REG_CLASS_ESCAPE, \ inside [...] literal by default +09-11-03 regex/regcache.c: change to variable length pattern strings +09-10-28 include/error.h: fix ERROR_translate() arg parens +09-10-26 port/lcgen.c,comp/setlocale.c: handle LANG init after LC_* already defined +09-10-05 _sfopen.c: add but ignore 'F' flags for stdio compatibility +09-09-28 fts.h,ftwalk.h,fts.c: promote { namelen pathlen level } to (s)size_t +09-09-28 locales: add AST_LC_LANG for $LANG +09-09-28 setlocale.c: fix logic for dynamic { LANG LC_ALL LC_* } changes +09-09-17 include/sfio.h,sfio/sfwalk.c: add sfwalk() +09-09-09 sfio/sfputr.c: add SIGPIPE hang fix +09-08-24 sfio/sfreserve.c: fix SF_UNBOUND logic with pushed streams +09-08-18 include/ast_std.h,ast.h: add ast.mb_sync to sync mbchar() after error +09-08-17 comp/setlocale.c: add AST_LC_utf8 and { utf8_mbtowc() utf8_mblen() } +09-08-11 comp/setlocale.c: treat "en"/"en_US" AST_LC_MESSAGES as "C"/"POSIX" +09-08-10 vmalloc/vmhdr.h: add user-defined _AST_PAGESIZE and computed VMHEAPINCR +09-08-09 comp/conf.tab: add NPROCESSORS_MAX +09-07-29 astlicense.c: fix first name=value logic error +09-07-22 string/fmtip6.c: don't drop trailing 0 in 44::1:0:0 +09-06-30 port/astconf.c: standard PATH_RESOLVE is "physical" (not "metaphysical") +09-06-19 vmalloc: sync with kpv +09-06-19 include/shcmd.h: add sh_context(p) cast +09-06-11 misc/magic.tab: differentiate pc 386 32/64 bit dll/exe/obj +09-06-06 port/astconf.c: fix look->name null pointer reference +09-06-05 port/astconf.c: fix 'UNIVERSE = value' synthesize logic +09-05-25 tm/tmxduration.c: add +09-05-08 comp/syslog.c: add _UWIN /var/log/syslog preference +09-05-01 comp/setlocale.c: fix _UWIN intercepts to return NiL on unknown locales +09-04-27 sfio/sfpool.c: fix bug that did not return pool on delete +09-04-22 include/regex.h,regex/regcomp.c: add REG_REGEXP <regexp.h> compatibility +09-04-15 tm/tmxdate.c: handle "4th thursday in november" +09-03-31 string/strvcmp.c,string/strnvcmp.c: add version strcmp(3) +09-03-31 string/strpcmp.c,string/strnpcmp.c: add path prefix strcmp(3) +09-03-29 misc/optget.c: clean up num = number casts +09-03-04 tm/tmxmake.c: add tmxtm() with zone override +09-03-03 tm/tmxfmt.c: add %(...)<c>, specifically %(...)z for output zone +09-02-22 tm/tmxdate.c: add iso P... durations +09-02-02 path/pathprog.c: add +09-02-02 misc/opthdr.h,optget.c: fix flags mixup, handle old '-' as option +09-02-02 sfio/sfprints.c: fix sfvaprints() return value to not count trailing '\0' +09-02-02 misc/cmdarg.c: handle !defined(ARG_MAX) +09-02-02 port/astconf.c: fix UNIVERSE overwrite of null[] value! +09-01-31 features/sys: drop header sys/localedef.h +09-01-28 include/fs3d.h,misc/fs3d.c: mount() => fs3d_mount() for diff std prototypes +09-01-14 misc/fts_open.c: delay top list reorder until first fts_read() +09-01-14 include/ls.h: LS_W_INUMBER => 9 to accomodate large st_ino +09-01-14 misc/optget.c: expand STYLE_usage input text +09-01-09 features/uwin,stdio/_stdfun.c: iffe for _p__iob and __p__iob +09-01-09 misc/magic.tab: add ISO filesystem image entries +09-01-07 string/strtoi.c: strtol() etc. do not consume [lLuU] suffix -- thanks jkf +09-01-07 sfio/sfstrtof.h: strtod() etc. do not consume [fFlL] suffix -- thanks jkf +09-01-05 string/strlcat.c: fix logic to match docs (not that easy) +08-12-30 tm/tmxdate.c,include/tm.h: add TM_WORK { "workday" "working" "work" } +08-12-28 sfio/sfcvt.c: fix 'a' format rounding +08-12-21 tm/tmdata.c: add 2008-12-31+23:59:60-0000 leap second event +08-12-19 tm/tmxdate.c: check for dates near the epoch rolling back to the future +08-12-19 tm/tmxfmt.c: change %s for now==0 to be the epoch +08-12-07 include/ast_std.h,misc/getenv.c: no _ast_getenv for uwin ast54 compatibility +08-12-07 tm/tmxfmt.c: add %[_][EO]K for [space pad] [full|long] iso +08-12-07 sfio/sfvscanf.c: fix ok[] short by one allocation +08-12-07 comp/setlocale.c: fix off by one composite initialition loop test +08-12-07 path/pathkey.c: fix off by one loop test +08-12-04 vmalloc/vmbest.c: catch sbrk() wraparound +08-12-04 comp/spawnveg.c: clean up attrs on failure too +08-11-04 regex/regcomp.c: fix locale [!-...] and [^-...] re-initialization +08-11-04 stdio: add flockfile.c ftrylockfile.c funlockfile.c +08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization +08-09-10 misc/magic.c: handle old vcodex() indices +08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead +08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd +08-09-04 regex/regnexec.c: fix nested delimiter match beyond end of subject +08-08-20 misc/fts.c: fix st_nlink stat() optimization logic +08-08-19 sfio/sfpkrd.c: workaround macosx recv(PEEK) data consumption on non-socket +08-08-19 strn?tol?d: handle long double with smaller exponent range than double +08-08-18 sfio/sfcvt.c: eliminate excessive multiplies and integral overprecision +08-08-11 tm/tmxfmt.c: handle %10N and %010N +08-08-06 include/shcmd.h: add 'int invariant;' for builtin invariant arg count +08-08-05 features/ndbm: favor sleepycat ndbm compatibility +08-07-21 include/glob.h,misc/glob.c: GLOB_STARSTAR only forces lstat on chdir +08-07-17 sfio: sync with kpv +08-07-17 misc/optget.c: call astwinsize() each time terminal width required +08-07-16 sfio/sfvscanf.c: fix %% to skip leading space per posix +08-07-16 vmalloc/vmbest.c: add VMCHECK=m, VM_mmap to favor mmap() alloc +08-07-16 features/stdio,stdio/f(read|write).c: size_t return value!! ouch +08-06-24 tm/tmxfmt.c: fix %z to handle tm_isdst -- doh +08-06-24 misc/astintercept.c,misc/getenv.c: split from misc/setenviron.c +08-06-17 misc/setenviron.c: add { astintercept() getenv() } +08-06-09 tm/tmlocale.c: use _DATE_FMT if defined for TM_DEFAULT +08-06-06 misc/optget.c: handle sub-component about details +08-06-04 misc/optget.c: fix [-n?\n...\n] version parse +08-06-04 include/debug.h,misc/debug.c: merge with kpvdebug.h +08-06-02 features/ndbm: add to tame dbmlib.iffe replication +08-06-01 comp/resolvepath.c,realpath.c: fix resolvepath() return value type +08-05-22 tm/tmxdate.c: fix a few ordinal/last/this/next bugs +08-05-18 string/fmtre.c: fix omitted stack var initialization bug +08-05-14 regex/regcomp.c,regcoll.c: fix UTF-8 collation sequence logic +08-05-11 tm/tmxfmt.c: :NOOPTIMIZE:, otherwise %Q/../../ fails +08-05-01 tm/tmxdate.c: mon 1..12 => mon[13] -- doh +08-04-30 misc/glob.c,reegex/regcomp.c: ~(R) => ~(O) to avoid pcre clash +08-04-24 port/astconf.c: 'name = value' does assignment without system init +08-04-15 port/astconf.c: SC#N treated like 'SC(N)' +08-04-14 misc/optget.c: clean up nroff output +08-04-01 port/astconf.c: add RELEASE => /proc/version fallback +08-03-30 misc/optget.c: [-n]... to enable -number & +number options +08-03-06 misc/optget.c: ---* and +++* are now operands +08-03-06 misc/errorx.c: fix old error_info.translate workaround +08-02-05 regex/regcomp.c: allow REG_SHELL {,n}... => {0,n}... +08-02-27 misc/stk.c: top element during allocation relocated to top +08-02-18 include/ip6.h,string/strtoip6.c,fmtip6.c: add ipv6 addr support +08-02-14 regex/regsubexec.c: fix null match (tricky) +08-02-14 regex/regsubcomp.c: fix SRE to match ksh +08-02-11 comp/spawnveg.c: return proper errno on [v]fork() failure +08-02-11 tm/tmxdate.c,tmdata.c: handle more ISO 8601:2000 forms +08-02-02 regex/reglib.h: add REGMULTIREF to REG_COMP +08-02-02 string/strmatch.c: fix str="" pat="" sub values +08-01-31 comp/conf.sh,conf.tab: handle /bin/sh \ in read data, redir subshell +08-01-18 misc/magic.tab: amd-x68, 64-bit => x86-64 +08-01-18 string/strnton.c,strntonll.c: add +07-12-10 string/strelapsed.c: "0" is a valid elapsed time! +07-12-02 sfio/sfreserve.c: preserve SF_SHARE sfrd() via sfreserve(f,0,0) +07-11-21 comp/setlocale.c: add sjis_mbtowc() to work around [\~] translation +07-11-15 features/signal.c: RT(1) .. RT(MAX-1) => RTMIN+1 .. RTMAX-1 +07-11-14 features/float: favor sscanf() due to gnu strto[l]d() nan bugs +07-10-31 regex/regcomp.c: fix REX_COLL_CLASS node allocation size +07-10-31 sfio/sfcvt.c: use signbit() if available +07-10-31 features/isoc99: _ISOC99_SOURCE tests +07-10-31 port/astmath.c: add -DN=8 for signbit() +07-10-31 sfio/sfstrtod.h: don't forget about -0.0 +07-10-26 features/map.c: add { optopt optarg optind opterr } +07-10-26 features/stdio: add _filbuf => _ast__filbuf +07-10-26 comp/getsubopt.c: fix #undef that interfered with <ast_map.h> +07-10-26 regex/regcomp.c: fix bug that missed ')' in ~(F)... +07-10-12 port/astconf.c: fix CONF_ALLOC 16 bit overflow +07-10-12 misc/fts.c: fix fts_close() to free the handle -- doh +07-10-11 comp/setlocale.c: second and subsequent setlocale(*,"") reverts to previous +07-10-11 path/pathprobe.c: add vfs ST_NOSUID check +07-10-10 comp/conf.tab: add a few more xpg6 deferrals +07-09-28 astsa: update to share with mainline src via _PACKAGE_astsa +07-09-25 sfio/sfgetr.c: no limit on string stream line size +07-09-25 sfio/sfextern.c: increase _Sfmaxr to 256*1024 +07-09-18 misc/procopen.c: tighten up SIGCHLD logic between parent/child +07-09-18 misc/signal.c: unblock SIG_DFL after setting handler, sig<0 => don't unblock +07-09-13 misc/fs3d.c: no $LD_PRELOAD => no 3d and avoids invalid mount(2) call +07-09-11 vmalloc: vmstat(0,0)==1 => region in use, drop VM_primary|VM_secondary +07-09-05 misc/recstr.c: handle [lL] gobbled by strtol() -- ouch +07-08-17 path/pathprobe.c: handle '\r' in VERSION string +07-07-17 regex/regcache.c: regcache(0,n,0) extends cache to size n (no shrinking) +07-07-16 tm/tmdata.c: add 2005-12-31, drop 1999-12-31 (where did that come from?) +07-05-21 tm/tmxfmt.c,tmxscan.c: %F => %L (TM_DEFAULT); %F => %Y-%m-%d +07-05-15 sfio/sfvprintf.c: %h? and SFFMT_SHORT => raw bytes +07-05-09 features/signal.c,features/siglist: use kill -l & strsignal() +07-04-25 misc/optctx.c: add for opt_info switching +07-04-24 misc/cmdarg.c,include/cmdarg.h: add CMD_CHECKED, CMD_SILENT +07-04-24 misc/procopen.c,include/proc.h: add PROC_CHECK +07-04-24 misc/procrun.c: add flags arg (current use PROC_ARGMOD) +07-04-24 misc/cmdarg.c,include/cmdarg.h: move from src/cmd/tw +07-04-20 port/(lclang.h|lc.c|mc.c|lclib.h|lcgen.c): separate lctab.c +07-04-20 comp/conf.sh: defer to systems without 'grep -q' -- sigh +07-04-20 comp/conf.sh: probe for LL integer constant initializer suffix +07-04-20 include/syslog.h: <namval.h> => <ast_namval.h> for win32 +07-04-20 ast_namval.h: add as copy of include/namval.h for win32 +07-04-19 comp/conf.tab: fix SVID SI entries to probe SI_* (not _SI_*) +07-04-13 tm/tmxdate.c,tm/tmzone.c: handle [-+]0000 UTC zone offset +07-04-11 sfio/sfvprintf.c: add %F, propagate SFFMT_UPPER +07-04-11 sfio/sfcvt.c: handle SFFMT_UPPER => nan/inf vs. NAN/INF +07-04-02 comp/conf.tab,comp/conf.sh: add C/POSIX <stdint.h> symbols +07-03-28 misc/optget.c: fix l10n --?- +07-03-25 features/common: fix { ast_std.h ast_map.h stdint.h } logic +07-03-21 error.h: move from error_info to (*_error_data_) +07-03-21 misc/error.c: add errorctx() for error_info switching +07-03-21 option.h: move from opt_info to (*_opt_data_) +07-03-19 regex/regdecomp.c: fix REX_ONECHAR escapes and add REX_KMP +07-03-11 tm/tmxscan.c,regex/regnexec.c: fix strict-alias transgressions +07-02-27 comp/conf.sh: handle native getconf invalid numeric values +07-02-21 comp/conf.sh,comp/conf.tab: handle SSIZE_MAX vs _POSIX_SSIZE_MAX +07-02-20 sfio/sfvprintf.c: handle SF_WCWIDTH justification +07-02-14 features/common: cover <stdint.h>, move to int_(bits)_t +07-02-14 include/int.h: drop +07-02-14 include/sfio.h: add SF_WCWIDTH +07-02-12 comp/conf.sh: fix CONF_LIMIT bug that missed ULONG_MAX etc. +07-02-12 comp/conf.tab: *LONGLONG* => *LLONG* to match posix +07-02-12 features/float: *LONGLONG* => *LLONG* to match posix +07-02-12 port/astconf.c: handle CONF_LIMITS_DEF with no deferral +07-02-12 stdio/vasprintf.c: add trailing '\0' -- doh +07-02-04 string/fmtelapsed.c: fix naive multi month/year logic +07-02-02 misc/optget.c: add --??posix for getopts(1)/getopt(3) +07-01-26 string/chresc.c: use mbchar() +07-01-26 misc/optget.c: handle "o:-:" usage for old-style long options +07-01-22 sfio/sfdisc.c,sfpool.c: handle push on streams with pending peek +07-01-22 include/sfio.h: mv Sfieee_t to sfio/sfhdr.h +07-01-17 tm/tmxfmt.c: fix terminating nil logic which clobbered size-1 +07-01-11 misc/stk.c: a 2 day marathon bug fix (can we release now dr ek?) +07-01-05 comp/spawnveg.c: posix_spawnattr_setflags(POSIX_SPAWN_SETPGROUP) +07-01-05 misc/error.c: fix multibyte vs. printable logic +07-01-01 comp/conf.sh: LC_ALL=C +06-12-26 tm/tmxdate.c: handle nn*.nnnn* == sec.ns +06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns +06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h ! +06-12-12 string/strperm.c: octal modes are absolute! +06-12-11 comp/conf.tab: always defer ARG_MAX +06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh +06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches +06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 } +06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside [...] +06-12-01 sfio/sfcvt.c: add signbit/copysign tests +06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d +06-11-20 features/common: bias _ast_int8_t "long long" before "__int64" +06-11-20 string/strperm.c: fix X to work with all ops (not just +) +06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants +06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls +06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native +06-11-11 comp/conf.tab: add D to defer to native +06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash +06-11-01 include/ast.h: add FMT_PARAM for fmtquote() +06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control +06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127 +06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts +06-10-30 string/fmtscale.c: fix 1024 rounding bugs +06-10-27 disc/sfkeyprintf.c: handle 'i' (=='d') -- oops +06-10-26 sfio/sfvprintf.c: %#d => fmtscale(1000), %#i => fmtscale(1024) +06-10-26 features/map.c: _map_libc cleanup +06-10-26 features/fcntl: add to the circle of trust +06-10-26 features/sys: add <sys/socket.h> socklen_t +06-10-26 include/regex.h: handle include before <ast_map.h> +06-10-25 astconf "SHELL" => "SH" to avoid _POSIX_SHELL conflict +06-10-25 comp/conf.*: drop no-op duplicate conftab.c entries +06-10-18 string/fmtscale.c: 1000: n[.]n[n](kMGTPE), 1024: n[.]n[n](KMGTPE)i +06-10-11 ast_std.h: now implies <sys/stat.h> (did on most before anyway) +06-10-11 strtoi.h: ignore sign for 0, validate scale shift +06-10-11 strdup.c,vmstrdup.c: handle 0 arg +06-10-11 add sfstruse()/sfstropen() error checks +06-10-10 misc/procopen.c: envv==environ => don't modify environ +06-10-10 misc/procclose.c: return valid exit(1) status +06-10-06 port/astconf.c,comp/conf.sh,comp/conf.tab: play nice with getconf(1) +06-10-01 comp/conf.tab: SHELL default checks { _CS_PATH } X { ksh ksh93 sh } +06-10-01 comp/conf.sh: export CONF_getconf to shell actions +06-10-01 comp/putenv.c: always enable setenv() for procopen() +06-10-01 misc/procopen.c: use pathshell() or astconf("SHELL",0,0) if PARANOID +06-10-01 path/pathshell.c: localize the shell path patterns and accept ksh93 +06-09-28 Makefile: avoid ast <stdio.h> vix iffe -X ast -- doh +06-09-27 regex/regdecomp.c: add +06-09-26 regex/regcomp.c: handle KRE ~(...)<invalid-kre> +06-09-25 reorganize to avoid native header intercepts +06-09-15 uwin/crypt.c: _UWIN only! +06-09-14 Makefile: tweak the ast_common.h bootstrap again (finally?) +06-09-14 misc/optget.c: noncommercial => OPT_proprietary +06-09-12 string/strelapsed.c: fix multi-char qualifier parse +06-09-12 string/strtoi.h: drop [cClLqQwW] multipliers +06-09-11 misc/optget.c: add numeric arg validity check +06-09-07 misc/optget.c,tm/tmfix.c: fix uninitialzed var refs +06-09-05 path/pathprobe.c: add version header verification +06-08-01 Makefile: handle iffe vs FEATURE/common vs ast_common.h +06-08-31 Makefile: add ast_map.h to the bootstrap list +06-08-30 misc/glob.c: fix ~(E)re bug that stripped ~(E) before regcomp +06-08-30 include/ast.h: add { integralof(x) pointerof(x) } +06-08-27 string/strelapsed.c: fix off-by-one (too little) parse bug +06-08-25 misc/optget.c: 0*<n>.* numeric option args => <n>.* +06-08-22 misc/glob.c: handle ~(...) pattern options +06-08-16 string/strelapsed.c: fix off-by-one (too far) parse bug +06-08-16 regex/regcomp.c: accept but ignore ~(N) +06-08-14 features/libpath.sh: add solaris LD_LIBRARY_PATH_64 check +06-08-05 sfio/sfpool.c: pool SF_READ|SF_WRITE loop fix +06-08-02 misc/fts.c: fix FTS_NOSTAT optimization to check for .. +06-07-28 include/glob.h: add gl_extra for user globlist_t expansion +06-07-27 features/common: #include "ast_map.h" +06-07-26 comp/fnmatch.[ch]: allow <ast_map.h> to map fnmatch() +06-07-22 cdt: snarf from kpv +06-07-17 string/strperm.c: perm==-1 skips umask(1) +06-07-17 sfio/sfvprintf.c: handle format invalid mb seq +06-07-17 regex/regcomp.c: inline REG_SHELL => anchored, otherwise not +06-07-17 regex/regcomp.c: inline B|G:basic E:REG_EXTENDED F|L:REG_LITERAL +06-07-17 regex/regcomp.c: inline l:REG_LEFT r:REG_RIGHT +06-07-17 regex/regcomp.c: inline a:REG_LEFT|REG_RIGHT p:~REG_LENIENT +06-07-17 string/chresc.c: add \Uxxxxxxxx +06-07-17 sfio/sfstrtof.h: ignore thousands sep after decimal +06-07-17 string/tokline.c: splice() => spliceline() for bsd +06-06-27 features/float,sfio/sfcvt.c: fix Nan logic +06-06-27 port/astmath.c: fix long double isnan() test +06-06-27 features/map.c: _map_libc for std => _ast_std +06-06-25 string/strperm.c: handle posix = w.r.t. umask +06-06-19 port/mnt.c,features/fs: handle netbsd getmntent api change +06-06-18 regex/regstat.c: add REG_LITERAL check +06-06-11 cdt/dtview.c: update from kpv +06-05-31 sfio/sfhdr.h: fix _SFOPEN() typo +06-05-09 comp/conf.sh: add native getconf -a names to the mix +06-04-28 misc/optget.c: add solaris long option name compatibility +06-03-09 string/strmatch.c: add REG_ADVANCE => REG_* flags +06-02-14 comp/iconv.c: fix uwin iconv_list() /reg/ generator +06-02-10 port/astconf.c: relax standard prefix filter +06-02-08 sfrd.c,sfsync.c: lock logic bug fix +06-02-01 port/astlicense.c: add { parent incorporation } +06-01-26 port/astconf.c: fix { LIBPREFIX LIBSUFFIX } length +06-01-06 features/lib: change _UNIV_DEFAULT probe to use cross{...} +06-01-04 misc/stk.c: fix n**2 realloc behavior +06-01-01 include/sfio.h: export { _Sfi _Sfmaxr } +05-12-13 string/chresc.c: handle \C-X => control-X, \M- => ESC +05-11-22 regex/regcache.c: add, convert string/strmatch.c to regcache() +05-10-06 string/ccmap.c: update ebcdic-u to be idempotent +05-09-28 vmalloc: snarf from kpv; fixes large block brk() thrashing +05-09-26 misc/magic.c,misc/magic.tab: handle latest vcodex header +05-09-12 misc/optget.c: reset opt_info.offset on error + string/strtoi.h: strton() '.' multiplier only if m>1 + string/fmtesc.c: add unadvertized FMT_PARM for FMT_SHELL +05-09-09 string/fmtesc.c: fix FMT_SHELL logic w.r.t. [$`] +05-08-11 string/strerror.c: fix { sys_errlist sys_nerr } prototypes +05-08-03 sfio: snarf sfvaprints sfaprints +05-07-21 port/astconf.c: retain most recent synthesized lookup +05-07-20 sfio/sfsetbuf.c: default file io size now 64K on all systems +05-07-17 ccmap*: add microfocus cobol EBCDIC_U +05-06-29 regex/regcomp.c: fix the A & B inline flag logic +05-06-15 include/recfmt.h: add fs format flag to fmtrec() +05-06-14 error.c: add ERROR_OPTIONS { break count match } +05-06-07 features/stdio: drop FEATURE/limits to fix bootstrap circular dep +05-06-02 features/*,Makefile: drop vestigel iffeio.h bootstrap workaround +05-05-31 string/fmtbuf.c: unlock (spin) before each return -- doh +05-05-30 sfio/sfpkrd.c: work around macos 10.4 recv(MSG_PEEK) bug +05-05-27 regex: add REX_NEST (?%[S.][T.][OT]) + magic.tab: ammend bsd db magic +05-05-23 regex: REX_NEST (?%[D.][E.][L.][Q.][oc]...) +05-05-21 regex: state.fold[] is now locale specific -- doh +05-05-19 regex: add REX_NEST (?%\\()<>[]""...) %(...) nested match +05-05-15 recfmt.h: add recstr() reclen() fmtrec() +05-05-13 optget.c: allow boolean options to take numeric values +05-05-12 recfmt.c: add to recfmt.h, adjust Recfmt_t encodings +05-04-30 sfio: add sfmaxr(), default 64K +05-04-22 comp/omitted.c: fix magic() logic for files < 512 bytes +05-04-20 cdt: snarf update from kpv; void* Dt_t.user added + misc/error.c: library => ERROR_LIBRARY +05-04-19 regex/regcomp.c: handle REG_SHELL [^...] == [!...] +05-04-11 tm/tmxscan.c: handle yyy.mm.dd[-+.]hh.mm.ss.nnnnnn +05-04-07 regex/regnexec.c: fix out of bounds boundary check -- ouch + features/align.c: add jmp_buf to the alignment mix (ia64) + vmalloc/vmhdr.h: add jmp_buf to the alignment mix (ia64) +05-03-31 misc/optget.c: fix option { - _ } separator matching +05-03-30 misc/glob.c: eliminate superfluous GLOB_NOMATCH stat() calls +05-03-24 port/astwinsize.c: include <sys/ioctl.h> if possible +05-03-23 string/ccmap.c: add ebcdic-m mvs cobol table +05-03-11 comp/omitted.c: handle utime[s](const,const) + comp/conf.tab: fix linux PID_MAX probe +05-03-10 comp/setlocale.c: LC_* value "" => unset -- doh + misc/optget.c: reorder _PACKAGE_astsa code for msgcc +05-03-08 misc/optget.c: delete leading space in STYLE_nroff output +05-03-07 sfio/sfhdr.h: drop extern _sfdscan -- clashes with sfvscanf.c static +05-03-01 tm/tminit.c: add tmlocaltime() for tzset() getenv() override workaround +05-02-20 features/tvlib: tmsettimeofday only for systems that have settimeofday + features/float: fix mvs.s390 NaN tests +05-02-18 tm/tmxmake.c: fix <0 west of GMT bug that warped to 1800's -- wow +05-02-11 port/mnt.c: handle lynxos MOUNTED=/etc/fstab +05-02-08 features/float,sfio.h,sfcvt.c,sftable.c: add INF and fix NAN +05-02-04 features/lib: add _std_strtol (for lynxos) + include/ast_std.h: add _std_strtol tests + comp/strtod.c: #define S2F_function strtod + misc/signal.c: fix ancient bsd SV_INTERRUPT vs. SV_ABORT clash +05-01-11 sfio/sfmove.c: try to seek(fr) when fw==0 + comp/omitted.c: intercept utimes() too + comp/omitted.c: add DOSPATHVARS env var path value conversions + features/tvlib,tm/tvtouch.c: check for utimets() + misc/optget.c: handle '-' or '_' option word separators + sfio/_sfopen.c: allow stream mode changes after initialization + sfio: sync with kpv: SF_SYNCED fix for ksh input loss bug +05-01-09 tm/tmxfmt.c: fix %6N for n<100000000 +05-01-08 regex/regcomp.c: conj() => con() to avoid C99 clash +05-01-05 tm/*: fix { %U %V %W } logic -- my head hurts +04-12-30 tm/tmxtime.c: fix tm_isdst<0 loop +04-12-23 vmalloc/vmbest.c: fix vmresize bug that didn't 0 new data +04-12-19 misc/optget.c: broaden - long option match +04-12-09 string/strtoi.h: fix terabyte 't' suffix math + string/strmatch.c: flush cache on locale change +04-12-01 tm/tmsleep.c: add + tv.h,tv*.c,tv.3: move from pax + tmx.h,tmx*.c,tmx.3: add high resolution tm(3) counterparts + features/lib: add *another* sgi linux.ia64 memccpy bug check +04-10-31 Makefile: __OBSOLETE__ now computed <6 months ago year>0101 + ccode.h,ccmapid.c: add ccmaplist(Ccmap_t*) iterator + option.h,optesc.c: add 3rd arg, 1 => quote '?' too + misc/magic.c: fix bug that terminated `string \0a' at \0 + misc/magic.c: handle vcodex() via decompose() + misc/magic.tab: add vcodex magic + features/stdio: handle _LARGEFILE64_SOURCE -- oops + stdio/(fseek|ftell|fseeko|fsetpos|fgetpos|ftello).c: oops^2 +04-10-28 string/swapop.c: size==-4 => size=4 and extend op=3 to op=7 + tm/tmfix.c: fix tm_mon<0 logic +04-10-22 tm/tmdate.c: handle 'final day feb 2004' + port/astlicense.c: add query=all|id|${...}${...} + port/astlicense.c: "free" => "mit" + comp/omitted.c: revert to the open source license + string/stropt.c: drop siz==0 => tab is hash table + include/sfio.h: incorporate <sfstr.h> + include/sfstr.h: drop + disc/sfstrtmp.c: drop -- use sfstrbuf() +04-10-20 misc/magic.tab: update tar magic +04-10-18 ufc-crypt.h,crypt_util.c: drop GPL code + crypt.c: add BSD code + pathpath.c: disable { $0 $_ $PWD } related root search +04-10-01 normalize ident stamps + port/astlicense.c: add type=cpl -- yeah +04-09-25 string/swapop.c: return op < size -- duh +04-09-23 comp/spawnveg.c: :NOOPTIMIZE: -- volatile sometimes ignored +04-09-21 comp/spawnveg.c: exec_errno_ptr is volatile -- duh +04-09-14 tm/tmscan.c: add %| alternation and %& => tmdate() +04-09-08 misc/optget.c: add :!value: omitted optional arg value + misc/optget.c: fix --noNAME ambiguous option logic +04-08-26 string/strperm.c: add who^mode to propagate least restrictive up + astmath.c: add { frexpl ldexpl } checks for ast.req + port/astlicense.c: ignore first option if non-assignment + include/ast_dir.h: move d_fileno map before struct defs -- duh +04-08-24 vmalloc/vmbest.c: add {VM_region} VMCHECK=+r for region segment checks + misc/recfmt.c,include/recfmt.h: add +04-08-23 vmalloc/vmbest.c: add {VM_primary VM_secondary} VMCHECK=-s for primary + features/common: punt to <stdarg.h> for unknown va_list +04-08-11 vmalloc: sync _UWIN libposix hooks +04-07-27 features/common,features/limits.c: ULL suffix for unsigned _ast_int8_t +04-07-22 include/ast.h,comp/eaccess.c: add eaccess() for effective access() +04-07-19 comp/open.c,sfio/_sfopen.c: { O_RDONLY O_WRONLY O_RDWR } are values +04-06-28 misc/error.c: check level after error_info.auxilliary +04-06-24 string/strmatch.c: strgrpmatch() match[] now variable size array +04-06-17 features/common: change _DLL null define to (the standard ast) 1 +04-06-11 misc/optget.c: allow optional [-|+|--|++] optstr() option prefix + misc/optget.c: reset optstr() state on 0 return + misc/optget.c: text()=>textout() linux.ppc symbol hijack workaround +04-05-31 sfio/sfreserve.c: no side buffer if user buffer is large enough +04-05-27 string/fmtbuf.c: handle one concurrent buf > sizeof(buf) +04-05-24 regcomp.c: fix no-advance initialization +04-05-05 conf.tab,conf.sh: update to align with standards + magic.tab: ms suffix update +04-05-04 port/lcgen.c: fix territory initialization +04-04-15 tm/tmdate.c,include/tm.h: fix specific and ordinal days +04-04-08 astconf: retain { HOSTTYPE LIBPATH LIBPREFIX LIBSUFFIX } strict vals +04-04-07 vmalloc/vmbest.c: fix alpha tiny block bug + vmalloc/malloc.c: re-enable on alpha +04-03-30 tm/tminit.c: GMT => UCT only if tz.daylight not defined +04-03-25 vmalloc/malloc.c: _AST_std_malloc=1 for __alpha + path/pathprobe.c: per-user probe dir => $HOME/.probe/$HOSTTYPE +04-03-23 regex/reglib.h: fix isw*() redefines +04-03-17 features/stdio: no __FILE override for __CYGWIN_ (sys/reent.h clash) + sfio/sfhdr.h,sfio/sfsetbuf.c: lower sfmove() default buf size 4x +04-02-29 comp/omitted.c: move env trace after PATH fixup + comp/omitted.c: cygwin spawn _P_DETACH => _P_NOWAIT+setpgid(pid,0) + misc/optget.c: fix html mailto: match + port/astlicense.c: add type=test for fixed 2001 date + features/float: check local NaNQ first + vmalloc/vmhdr.h: fix _vmextern_ vm_truncate return type + misc/magic.tab: add elf s390 index=22 +04-02-26 vmalloc: VMCHECK a:assertions c:arena-check w:warn-instead-of-abort + sfio/sfvscanf.c: fix extf arg selection +04-02-24 features/dirent: set nodefine to avoid ast_std.h _typ_off64_t undef + disc/sfkeyprintf.c: only case pattern must be ()[] balanced +04-02-14 include/sfio_t.h: add SF_DCDOWN, SFDCNEXT(), SFDCPREV() +04-02-13 string/strmatch.c: fix bug that didn't save one-time sub[] size + vmalloc: -g: export VMCHECK=1 enable malloc/free checks + vmalloc: -g: free(0) to check and disable malloc/free checks + vmalloc: -g: free(1) to check and enable malloc/free checks +04-02-11 Makefile: add :P=A: to conf and lcgen exec for cross-compile + regex: use MBSIZE() instead of mbsize() to grab 1 char on err + vmalloc/vmbest.c: updated to do more comprehensive DEBUG tests +04-02-04 sfio/sfraise.c: add sfraise(0,a,b) to iterate over all streams +04-02-01 vmalloc/vmbest.c: _BLD_DEBUG free(0) checks the arena +04-01-31 features/vmalloc: fix typo that missed _mmap_zero +04-01-23 string/strerror.c: handle real strerror() return value overwrite +04-01-11 path/pathpath.c: fix size vs. sizeof(buf) typo +03-12-22 misc/magic.tab: dos EXE tweaks +03-12-05 vmalloc: sync with kpv, adding exceptf announcements +03-12-04 port/astlicense.c: fix expand() loop sentinel bug +03-12-02 include/ast.h: mbchar() advances by 1 on mbtowc() error + misc/fts.c: increase MINNAME to 32 +03-11-21 vmalloc/vmbest.c: export VMCHECK=1 to enable $(CC.DEBUG) vmcheck() + vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT + misc/magic.c: add { cobol copybook pl1 } and suffix preference +03-11-12 features/stdio: drop cuserid,getopt for SUSV3 +03-11-11 vmalloc/*: merge kpv update -- this should stomp the compaction bug +03-10-23 comp/iconv.c: fix sfreserve lock fallback +03-10-20 sfio/_sfopen.c: add to allow user sfopen() intercept +03-10-17 regnexec.c: fix exec time REG_LEFT, \x.... => wctomb() +03-10-12 string/strtoi.h: fix strton '.' overconsumption +03-10-12 comp/iconv.c: identity is always (iconv_t)0 +03-10-09 string/fmtesc.c: fix FMT_SHELL to check for all shell magic chars +03-10-01 port/astlicense.c: unknown authors copied verbatim (instead of ignored) +03-09-30 string/chresc.c: handle \u..., \x... consumes all trailing hex digits + string/stresc.c: \u... and \x... > UCHAR_MAX => wctomb() +03-09-29 fnv.h: add +03-09-23 modedata.c: table is for external modes, so no arch specific hacks + optget.c: fix option prefix match translation bug + optget.c: add `<length> <name>=<value>\n' to optstr() + features/lib: add memcmp() test for sgi optimzation bug +03-09-22 regex.h,regcomp.c: add regncomp() + regclass.c: fix for loop dangling ; in regaddclass() +03-09-20 sftable.c,sfvprintf.c: fix SFFMT_CHAR handling to match extf api +03-09-19 sfmode.c: update release to kpv's +03-09-17 regcomp.c: add pedantic backref error checks +03-09-16 regnexec.c: exec time REG_LEFT => don't advance past initial position + regclass.c: add regaddclass() for user defined [:class:] + regexec.h: REG_VERSION_N2X, add redisc_t {re_map} ccode map + regstat.c: add regstat_t +03-09-11 optget.c: --n:=v sets opt_info.assign=':', opt_info.number enabled +03-09-09 disc/sfkeyprintf.c: *pn on lookup is arg separator; lookup "" arg too +03-09-05 optget.c: [f:l*?] preserves user long name past '*' in opt_info.name[] +03-09-03 sfstr.h: add sfstrpend() for #pending bytes in read buffer +03-08-25 regex: add REG_FIRST, optimize bm + features/lib: _AST_no_spawnveg==1 falls back to fork/exec +03-08-22 features/stdio,stdio/asprintf.c,stdio/vasprintf.c: add +03-08-21 path/pathnative.c,path/pathposix.c: interix updates + features/botched: add cygwin _stat => _stat64 +03-08-15 include/ast.h: map out bsd strmode() + features/common: add interix _ast_intmax_t workarounds + misc/fs3d.c: 3d mount test now uses "" instead of NiL (or cygwin dumps) +03-08-11 string/fmtesc.c: fix optional quoting checks + tm/tmdate.c: fix > 1 year of seconds arithmetic + tm/tmfix.c: fix leap year adjustments +03-08-01 features/lib: beef up sock_peek test for interix +03-07-29 features/float: add -lm to frexp... test + Makefile: fix -lm astmath test sense +03-07-26 features/mem.c: favor _mem_sbrk over _mem_mmap_* +03-07-22 vmalloc/vmbest.c: fall back to sbrk() if mmap() fails + features/mem.c: _mem_sbrk means sbrk() and brk() work +03-07-17 regex/regcomp.c: fix bug that treated KRE X{n,m} like {n,m}(X) + misc/magic.c: check MAGIC_VERBOSE for all load() messages +03-07-14 misc/optget.c: handle [...]{[...]\f...\f...} +03-06-21 misc/sigcrit.c: block SIGCHLD if _lib_sigprocmask || _lib_sigsetmask + comp/spawnveg.c,sfio/sfmode.c: use sigcritical() SIG_REG_* macros + comp/spawnveg.c: drop ENOEXEC logic + vmalloc/*: snarf kpv KPVCOMPACT() fix + vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT (just in case) + string/strdup.c: drop __strdup() etc. intercepts -- malloc gets it + features/mem: define _mem_method and _mem_* possible values + vmalloc/malloc.c: _AST_mem_method==_mem_* to force mem get method + sfio/sfputr.c: __ia64 memccpy is bogus -- how many tries do they get? + path/pathshell.c: verify abs path and access(path,X_OK) -- duh + vmalloc/vmhdr.h: add private _Vmessage() for non-sfio ASSERT() + port/astconf.c: fix bug that always returned the minmax value +03-06-11 comp/*.c: reorder macro hding for mvs.390 and <ast_map.h> + features/vmalloc: add _lib_brk and _lib_sbrk verification + include/ast_std.h,etc.: add _map_malloc for malloc => _ast_malloc + comp/conf.sh: fix SI_* and *_SI_* macro redefs + ast.h: VMDEBUG or _BLD_DEBUG enable <vmalloc.h> and VMFL tracing + vmalloc/vmtrace.c: _PACKAGE_ast __FUNCTION__ is a string + vmalloc/vmtrace.c: set trace file fd FD_CLOEXEC + vmalloc/vmbest.c: set /dev/zero mmap fd FD_CLOEXEC + features/mmap: fix ancient read() vs. mmap() time arithmetic typo + vmalloc/malloc.c: _AST_std_malloc==1 to force standard malloc +03-06-09 comp/omitted.c: add _imp__FUNCTION sybols for __CYGWIN__ static link + vmalloc/vmbest.c: handle systems with sbrk() but no brk() +03-06-04 port/astconf.c: drop non-standard diagnostics +03-06-03 comp/conf.sh: rework symbol collision logic +03-05-30 conf.tab,conf.sh,astconf.c: add <sys/systeminfo.h> sysinfo() SI_* +03-05-29 ccode.h: rework for extensibility, drop obsolete mematoe(), memetoa() +03-05-28 regex/*: recode to use isw*() directly when needed, is*() otherwise +03-05-27 features/vmalloc: fix _std_malloc test +03-05-25 misc/optget.c: fix optstr() ???* internal options +03-05-24 misc/optget.c: fix (ancient) argv null dereference +03-05-23 comp/getcwd.c: don't intercept on _WINIX -- unreliable st_ino +03-05-22 sfio/sfsprintf.c: n<0 => don't append '\0' +03-05-18 misc/fts.c: re-stat FTS_DP to update nlink/times + misc/fts.c: add FTSENT.stack to eliminate getlist() recursion + regex/ucs_names.h: use "..." catenation to placate some cc's +03-05-11 string/strtoi.h: handle "-" "+" "0x" "11#" +03-05-09 vmalloc/vmbest.c: large memory allocation tweaks +03-05-06 misc/optget.c: fix getopt_long() prefix==1 bug that missed short flags +03-04-27 comp/system.c: handle <ast_map.h> +03-04-24 vmalloc/vmmopen.c: drop dup <unistd.h> +03-04-21 tm/tmdate.c: fix next hour/min logic +03-04-15 vmalloc/malloc.c: intercept __malloc() along with __libc_malloc() + string/strdup.c: intercept __strdup() along with __libc_strdup() + features/mmap: consolidate from features/(lib|sfio|vmalloc) + add _NO_MMAP==1 to disable all mmap()/munmap() calls + path/pathposix.c: add +03-04-14 comp/setlocale.c: fix debug_mbtowc() return value for *s==0 || n < 1 + comp/iconv.c: fix error return errno values +03-04-11 misc/stk.c: fix stkgrow() realloc bug +03-04-05 string/tok.c: support readonly single token input strings + disc/sfdcdio.c: fix F_DIOINFO and FDIRECT #ifdef's + include/ast_std.h: allow _LARGEFILE64_SOURCE on __hppa + features/common: fix `tst _foo_' => `tst foo_' typo + features/float: fix `tst _foo_' => `tst foo_' typo + features/float: add FLTMAX_(UINTMAX_MAX,INTMAX_MAX,INTMAX_MIN) + comp/omitted.c: fix pathconf => _pathconf => _ast_pathconf loop +03-04-03 features/float: add _ast_no_um2fm: no usinged intmax => floatmax cast + vmalloc/vmbest.c: add getenv("VMCHECK") to initialize Vmcheck +03-03-28 include/ast_dir.h: add D_TYPE; { D_FILENO D_TYPE } must be #ifdef'd + misc/fts.c|getcwd.c|glob.c,preroot/getpreroot.c: add D_FILENO #ifdef's + Makefile: make sure _BLD_ast is defined for all compiles +03-03-27 ast_vfork.h: generate from features/vfork to pick up headers/pragmas +03-03-25 comp/omitted.c: drop free() of live environ + path/pathshell.c: allow trailing .exe -- pox on that + string/strtoi.h: fix bug leading 3 digits before thousands sep bug + string/(fmt|str)[gu]id.c: we know root when we see it +03-03-24 misc/optget.c: handle : and ? in := default value +03-03-21 ast_std.h: drop all spawn*() but spawnveg() + obsolete/spawn.c: add for dropped spawn*() + features/lib: _use_spawnveg if spawnveg() is a win over fork()/exec() + features/lib: drop NutForkExecve() and _map_spawnve + features/lib: fix memccpy test to clean up /tmp droppings + comp/spawnveg.c: call posix_spawn() if implemented + comp/omitted.c: add spawnve() intercept + comp/getoptl.c: set getopt_long() optind even if no options + tm/tmfmt.c: add %Q<delim>recent<delim>distant<delim> + misc/optget.c: fix trailing '*' for option and option args + sfio/sfmode.c: getenv("_AST_SFIO_OPTIONS") [,]SF_LINE[,] for fd {0,1,2} + vmalloc/*: kpv sync for uwin build independent of libast +03-03-18 port/astconf.c: switch to dynamic string values (saves 7K data/bss) + string/strmatch.c: switch to dynamic regex cache (saves 3K data/bss) + regex/regcoll.c,ucs_names.h: initialize rw tables from smaller ro data + features/lib: add vfork test for passing SIG_IGN across exec + features/lib: add spawn test for passing SIG_IGN across spawn +03-03-17 comp/omitted.c: unlink() renames to .deleted dir in case file open + sfio/sfpopen.c: handle mode "" for spawn with no pipe + features/float,comp/frexp.c,comp/frexpl.c: add pow2() table alternative +03-03-12 features/lib: fix linux.ia64 memccpy() tests -- now its their turn + features/vmalloc: fix /dev/zero test + features/align: _ast_intmax_t and _ast_fltmax_t join the union + misc/stk.c: fix struct frame size to align data + disc/sfdcdos.c: change sfslen() => sfvalue(f) +03-03-10 misc/optget.c: handle [f\f:x:lll\f?ddd] +03-03-07 port/astconf.c: uninitialized CONFORMANCE + POSIXLY_CORRECT => standard +03-03-05 comp/omitted.c: make sure at least /bin is in PATH to find cygwin dlls +03-03-02 path/pathshell.c: write access to /bin is effectively root +03-02-28 features/float: add (FLT|DBL|LDBL)_U?(LONG|LONGLONG|INTMAX)_(MIN|MAX) +03-02-25 features/lib: change vfork() test to use _exit() instead of exit() +03-02-23 include/error.h: update ERROR_VERSION for error_info.number space +03-02-22 comp/conf.sh: wrap ksh check in eval to avoid premature exit +03-02-21 misc/fts.c: verify chdir(..) to avoid malicious dir rename() +03-02-19 string/strtoip4.c: isspace() instead of ' '||'\t' +03-02-17 regex/regcomp.c: fix stats.l REX_REP logic that botched REX_BM +03-02-13 string/base64.c: handle catenated encodings +03-02-11 features/libpath.sh: change LIBPATH to <dir>[:<env>[:<pat>]][,...] +03-02-07 path/pathfind.c: allow "/dev/null" to be PATH_REGULAR +03-02-06 include/ast.h,fmtquote.c: add FMT_ALWAYS|FMT_ESCAPED|FMT_SHELL|FMT_WIDE +03-02-05 tm/tmdate.c,tm/tmword.c,string/strelapsed.c: '_' treated like ' ' +03-02-01 string/strelapsed.c: handle ps style [day-][hour:]min:sec +03-01-31 port/astlicense.c: fix author=* match +03-01-30 include/tm.h: add tmisleapyear() macro +03-01-29 comp/getopt.h,comp/getoptl.c: add gnu getopt_long(), getopt_long_only() + include/ast_getopt.h: for non-gnu part of comp/getopt.h + include/ast_std.h: include <ast_getopt.h> instead of <getopt.h> +03-01-28 ast.h,string/base64.c: add base64encode() and base64decode() + path/pathfind.c: verify S_ISREG() +03-01-24 path/pathexists.c: fix abs dir bug and deal with case ignorance +03-01-23 path/pathpath.c: honor PATH_ABSOLUTE for the easy case too +03-01-22 path/pathprobe.c: fix search to find both the probe script and command +03-01-17 misc/magic.tab: application/zip => appplication/(gzip|pzip|zip) +03-01-14 misc/optget.c: change href="" to href="." +03-01-10 include/ast_std.h: strtold() import hackery for static __CYGWIN__ +03-01-03 include/regex.h,regex/regcomp.h: add REG_SHELL_GROUP + include/ast.h,string/strmatch.c: add STR_GROUP for REG_SHELL_GROUP +02-12-15 include/error.h: errorcontext => Error_context_s (compatible til 2004) +02-12-06 misc/sigdata.c: add NoF(sigdadata) -- why nmake was uninterruptable! +02-12-03 comp/omitted.c,features/omitted: handle cygwin alarm() return botch +02-11-27 misc/swapop.c: op=3,size=4 => op=7 + string/strlcat.c,strlcpy.c: fix uwin decl clash +02-11-26 sfio/sfvprintf.c: fix sfsprintf() '\0' termination bug +02-11-22 misc/glob.c: move static struniq() to libast extern + string/fmtversion.c,include/ast.h: add fmtversion +02-11-18 string/strncopy.c: add + misc/magic.tab: list size for magicid.h magic +02-11-14 sfio/sfvprintf.c: add %#c for C escapes + include/error.h: add ERROR_NOTIFY context flag for builtin commands +02-11-11 string/strtoi.h: add S2I_size for strnto*() size_t 2nd arg + sfio/sfstrtof.h: add S2I_size for strnto*() size_t 2nd arg + comp/putenv.c: add setenv() and unsetenv() wrappers for setenviron() +02-10-31 path/pathfind.c: add dir of including file to the pathinclude() list + misc/optesc.c: add +02-10-30 string/strtoip4.c: set next char pointer even on error +02-10-29 comp/resolvepath.c: add (size_t version of realpath()) + misc/mime.c: fix mimehead() to ignore null content values +02-10-28 misc/glob.c: add GLOB_STARSTAR for /**/ and GLOB_NOTDIR optimization +02-10-27 string/struniq.c: add +02-10-23 features/common: fix off-by-one loop check +02-10-18 include/ast_std.h: avoid off_t,ftruncate,lseek,truncate redefinitions +02-10-17 misc/mime.c: handle type/* match, fix bogus header parse +02-10-04 sfio/sfstrtof.h: S2F_static <0:export =0:private >0:static +02-10-02 features/common: don't define _WIN32; define _WINIX => unix on windows + features/tty: finally stomp the bsd _POSIX_VDISABLE redefinition + misc/fastfind.c: add more specific findwrite() error messages + comp/omitted.c: fix cygwin utime() to update st_ctime + comp/strtol.c,strtoul.c: __CYGWIN__ static link workaround XXX + string/fmtls.c,fmttime.c: tmform() => tmfmt() +02-09-22 port/astconf.c: return values in fmtbuf() buffer instead of stack + port/mnt.c: don't set MNT_REMOTE for win32 ?:\* paths + sfio/sfvscanf.c: _sfdscan() is library global (not static) +02-09-21 path/pathkey.c: add tool arg for mamake compatible hash + features/fcntl.c: handle iffe _hdr_lcl_* => _lcl_* change +02-09-15 comp/conf.sh: fix enum vs. macro test + cdt: kpv sync +02-09-11 ast.h,features/common: move _WIN32 macro init to features/common + features/common: enable __EXTERN__ and __DEFINE__ for _WIN32&!_UWIN + features/float: add -lm to _ast_*_nan_init tests + vmalloc: kpv sync with vmresizef => vmgetmem + features/iconv: must have both <iconv.h> and iconv_open()! + features/vmalloc: alloca test must compile *and* link + sfio/sfvscanf.c,sfstrtof.h: add flag arg to char get, fix NaN loop +02-09-10 vmalloc/vmhdr.h: enable getpagesize() and sbrk() prototypes + features/fcntl.c: enable mmap64() prototype + include/ast_windows.h: windows.h wrapper with ast namespace workarounds +02-09-07 misc/mime.c: fix quoted value parse bug that ate the whole line +02-09-05 features/vmalloc: add free() to _std_malloc test + include/ast.h: NoF(x) now defines _DATA_x for !_BLD_DLL too + tm/tmlocale.c: { C POSIX en } == unix dadgummit +02-08-29 path/pathfind.c: initialize Dir_t.next=0 +02-08-28 uwin/rint.c: update + features/libpath.sh: "bin" is now the default value +02-08-22 vmtrace.h: add for debugging +02-08-20 misc/magic.c: convert to use <cdt.h> + vmalloc/vmresizef.c: add for generic discipline resizef default + string/strelapsed.c: allow long time component names +02-08-19 misc/optget.c: add `.fp 5 CW' to --nroff output + string/(fmtfs|fmtuid|fmtgid|strgid|struid).c: convert to use <cdt.h> + include/dt.h,cdt/dtnew.c: add for dtopen() in specific vm region +02-08-13 comp/omitted.c: fix bzero logic for e.g. unixware.i386 + include/ast.h: add fmtbase->fmtbasell; swap in 2003-09-01 +02-08-12 regex/regnexec.c: fix REG_MINIMAL REX_DOT mb bug +02-08-08 features/iconv: <ast_common.h> instead of <sys/types.h> <ast_common.h> +02-08-07 regex/regcomp.c: recognize anchors in BRE subexpressions +02-08-06 comp/iconv.c: handle win32 cpNNNN == windows-NNNN aliases +02-08-05 cdt/*: sync with kpv src +02-08-02 features/iconv: include sys/types.h for ast_types.h +02-08-01 misc/magic.c: magic file "." names the default + misc/magic.c: handle addr type (from irix string) + features/lib: move malloc tests to features/vmalloc + features/vmalloc: snarf tests from features/lib + vmalloc/*: sync with kpv src + comp/libc.c: dropped -- __libc_* intercepts moved to vmalloc/malloc.c +02-07-30 features/lib: handle __libc_malloc() in _std_malloc test + vmalloc/malloc.c: add gnu pvalloc() + features/vmalloc: fix alloca check +02-07-29 features/limits.c: handle netbsd guards +02-07-27 sfio/sfpoll.c: handle rw pipes +02-07-25 features/iconv: include ast_types.h for size_t in ast_iconv.h +02-07-18 apply LARGEFILE64 header prototype clash patches + misc/optget.c: __EXTERN__ _opt_info_ instead of opt_info +02-07-17 ast_std.h: memzero() now defaults to memset() instead of bzero() +02-07-16 ast_std.h: add ast.env_serial + misc/setenviron.c: increment ast.env_serial + include/tm.h: tmset() now calls tminit() directly + tm/tminit.c: check ast.env_serial for env change + tm/tmfix.c: speed up for large values of tm_mday +02-07-15 comp/fnmatch.c: fix memory leak caused by missing regfree() + comp/strstr.c: fix broken interpretation and implementation + comp/iconv.c: intercept (but no-op) null to and from buffer pointers +02-06-27 ast_std.h: map _sysconf => _ast_sysconf for sun +02-06-26 cdt,sfio,vmalloc: kpv sync -- is this ever easy? +02-06-24 sfio: kpv sync, vfwscanf(),fputw() fix (wcslen(x)*sizeof(wchar_t)!!) + misc/fts.c: fix symlink chdir() optimzation bug +02-06-11 sfio/sfwrite.c: string to file fix + Makefile: __OBSOLETE__==20020101 +02-06-01 regex/regcomp.c: REG_DELIMITED now consumes the delimiter +02-05-31 regex/reglib.h,regcomp.c,regnexec.c: null subexpression fixes +02-05-24 misc/fts.c: disable dir link counts in 3d + misc/magic.c: fix "*(mkfile)" sh pattern to "*@(mkfile)" +02-05-20 regex.h,regex/regsubcomp.c,regex/regsubexec.c: add + regex/regsub.c: deprecate +02-05-16 tm/tmfix.c: fix '60+n min/sec ago' bug for n min/sec after the hour +02-05-14 regex/regsub.c: fix (^|x) null match early termination bug +02-05-13 dir/dirlib.h: drop errant extern==__EXPORT__ + features/uwin: add uwin lib tests + uwin/*.c: check features/uwin for stubs + features/float: add nan representation generation + sfio/sftable.h: used _ast_*_nan_init for huge values +02-05-09 misc/fts.c: fix virtual top to force ``child'' stat() + features/common: define va_copy() only if not in <stdarg.h> +02-05-01 string/strtoip4.c: cisco inverted quad mask must have 4 parts +02-04-30 misc/magic.tab: fix pzip version check +02-04-19 string/strtoip4.c: handle cisco inverted quad mask n.n.n.n/i.i.i.i +02-04-18 misc/fts.c: add chdir() verification stat() optimizations + path/pathkey.c: check PROBE_ATTRIBUTES for list of vars +02-04-12 port/astlicense.c: type=open tweak, fix author list spacing +02-04-11 regex/regcomp.c: check for pattern number overflow +02-04-05 tm/tmfmt.c: add %u +02-04-04 sfkeyprintf.c: fix %c numeric value + path/pathpath.c: check plain path first -- duh +02-04-03 misc/fts.c: fix (FTS_PHYSICAL|FTS_NOSTAT) stat optimizations + ftwalk.c: only clear FTW_DELAY if FTW_CHILDREN + ftwalk.h: add FTW_NSOK for FTW_DELAY +02-03-29 ast.h: drop strerror() prototype -- already in <ast_std.h> + features/stdio: check for _SFIO_H redundant _Sfstd* declarations +02-03-26 misc/glob.c: fix GLOB_LIST gl_flags values +02-03-24 port/mnt.c: update bsd fstype name and mount option logic +02-03-23 Makefile: add ast_wchar.h to the .check.hdr list (for mamake) +02-03-17 features/stdio: hack around g++ 3.* clashes + Makefile: add ast_nl_types.h to the .check.hdr list (for mamake) + string/strtoip4.c: fix validity check bug that only checked last part +02-03-14 misc/optget.c: fix --keys to not expand inline \f...\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 + include/ast.h: add { PATH_TOUCH_CREATE PATH_TOUCH_VERBATIM } + 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/magic.tab,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/conf.sh: use $cc instead of cc +02-01-07 string/strlcat.c,string/strlcpy.c: add bsd api +01-12-18 comp/conf.tab: 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/magic.tab: 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 magic.tab: 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 +01-10-31 regex/ucs_names.h: add string catenation to keep line length low + misc/fastfind.c: handle gnu slocate db read + misc/optget.c: add --?+SECTION queries + comp/fnmatch.h: add FNM_NOSYS +01-10-30 tm/tmdate.c: fix cron specs when both wday and mday are specified +01-10-20 misc/glob.c: fix bug that called \ trim() twice on same path + misc/glob.c: fix \ trim() bug that restored / to wrong position + string/fmtre.c: fix { ^ . $ } translations + misc/optget.c: use original string if translation fails -- duh + sfio/sfhdr.h: assume <errno.h> assigns proper atttibutes to errno + comp/regcmp.c: __ia64 workaround fixed by proper CC.DLL probe + comp/getdate.c: __ia64 workaround fixed by proper CC.DLL probe + features/lib: add lib getdate +01-10-18 features/lib: check for strtod static link collision + features/float: add another signed cast for old bsd cc + features/wchar: add <stdlib.h> <stdio.h> before <wchar.h> for old bsd +01-10-17 sfio/sfcvt.c: limit max precision to { FLT_DIG DBL_DIG LDBL_DIG } + sfio/sfcvt.c: fix %[aA] format to always have leading 0[xX]1. + sfio/sfvprintf.c: handle %C %lc %S %ls for wchar_t args + sfio/sfvscanf.c: handle %C %lc %S %ls for wchar_t args + string/fmtmode.c: fix bug that omitted trailing '\0' +01-10-12 misc/optget.c: . => \&. for --??nroff + comp/wc.c: fix mbstate_t initialization typo + features/float: fix max integer / float loop termiation + features/float: fix LDBL_UINTMAX_MAX typo that did DBL_UINTMAX_MAX +01-10-11 include/sfio.h: fix _Sfstd* import/export + features/common: fix _UWIN __DYNAMIC__() definition +01-10-06 features/fcntl.c: { O_BINARY O_TEXT } default to 0 + features/omitted: add for comp/omitted.c + sfio/sfopen.c: O_BINARY default for _WIN32&&!_UWIN +01-10-05 misc/glob.c: fix `\(x/*' GLOB_NOMATCH bug that returned `(x' + misc/optget.c: fix localization lookup that didn't drop doubled : ? ] +01-10-04 comp/setlocale.c: handle sizeof(wchar_t)!=4 in debug locale + comp/conf.sh: handle sytems where _SC_* is both an enum and a macro +01-09-25 astconf: add LIBPREFIX +01-09-20 features/common: add __DYNAMIC__() for dll externs +01-09-19 cdt: kpv update + mb*() macros: update for ksh conversion, extend debug locale +01-09-16 tm/tmlocale.c: add compiled in defaults for C locale + misc/glob.c: add gl_nextdir callback for GLOB_COMPLETE +01-08-14 clarify _WIN32 vs. _UWIN vs. __CYGWIN__ + tminit: fix standard & daylight initialization +01-09-11 pathnative.c: add for native fs representation + regex.h: fix regerror_t prototype +01-09-04 regex/regnexec.c: fix REG_ICASE for multi-char collating elements + tm/tmlocale.c: fix old ascii LC_TIME load + locale*: add new LC_* categories + comp/omitted.c: add CYGWIN workarounds + features/lib: add CYGWIN workarounds +01-08-11 features/common: some compilers have long long but no LL constants! + features/lib: add mmap64 implementation test (for linux.s390) + regex/regcomp.c: fix \ in [...] parse + setlocale: retain user locale spelling in setlocale() return value + features/limits.c: don't include ./limits.h -- duh + fmtesc: don't escape multibyte chars + tm/tmlocale.c: fix native C locale default +01-08-08 features/float: some compilers (msdev) forget long long vs. double +01-07-31 misc/optget.c: handle suboptions +01-07-27 cdt.h: add DTDISC() +01-07-17 iffeio.h: move to include for stdio bootstrap iffe workarounds +01-06-25 regex: perl extensions added and tested +01-06-21 misc/error: add ERROR_OPTIONS=prefix=string for message processing +01-06-15 string/chresc: only 2 hex digits max for \xxx + regex/regsub: handle REG_SHELL ~(nnn) rhs backrefs +01-06-11 regex: handle embedded \0 in pattern and subject string + regex: add (?nnn) for backrefs > 9 + comp/fnmatch: add FNM_LEADING_DIR for gnu compatibility + features/float: _ast_flt_unsigned_max_t for bsd.i386 omission +01-06-06 misc/optget.c: add o option for old ps,ar,tar with optional leading - + regex/regcomp.c: REG_LENIENT|REG_DELIMITED \<newline> => <newline> + regex/regcomp.c: REG_LENIENT \000 => NUL +01-06-04 features/dirent: replace Makefile hack with iffe semi-hack + regex/regnexec.c: negation must also check REG_SHELL_DOT +01-06-03 sprintf.c: change buf size from SF_BUFSIZE to INT_MAX +01-05-31 glob: fix gl_fignore to ignore leading . by default + features/lib: add botch_d_ino_dirent64 for linux botch +01-05-25 port/lc.tab: add a few missing language_territory's +01-05-23 string/chresc: \C[.collation-element.] + fmtmatch,fmtre: update for <regex.h> syntax extensions +01-05-21 regex: add perl extensions, unicode names for collation elements +01-05-11 string/chresc: \e == \E == escape, \cX == control X, \x{..} == \x.. +01-05-09 path/pathtemp.c: pathtemp(0,0,0,"/private",0) for mode S_IRUSR|S_IWUSR + port/touch.c: handle utime(2) EPERM to fix bug that truncated + regex: change REG_MINIMAL to avoid negation -- much faster now +01-05-08 *.h: add some off_t macro guards for suse linux +01-05-03 regcomp.c: optimize ((x)!)* to ((x)!) + wchar: add <wchar.h> and stdio wchar routines +01-05-02 feaures/wchar: add <wchar.h> intercept, add stdio wchar functions +01-05-01 string/strtoi.h: signed strtoi accepts qualified unsigned constants +01-04-30 comp/setlocale.c: fix code that relied on 2 simultaneous getenv()'s + tm/tmlocale.c: check for UTF-8 encoded LC_TIME files + misc/magic.tab: add utf-8 and utf-16 U+FEFF magic +01-04-26 features/common: some cc's have _ast_int8_t but not LL constants +01-04-24 features/lib: add _std_strtod for mac os X +01-04-23 ccode: add CC_sub for ms embedded EOF char on ebcdic -- no joke +01-04-20 iconv: handle ebcdic<=>utf + mc.h,mc.c: add mcindex() + ast_std.h: add AST_MESSAGE_SET +01-04-18 features/libpath.sh: fix mvs probe + *: sundry mvs fixes + glob: fix GLOB_NOCHECK to avoid stat() and properly trim patterns +01-04-01 strtod,strtold: add + strtol,strtoul,strtoll,strtoull,strton,strtonl: handle locale & ERANGE + sfvprintf,sfvscanf: handle locale decimal_point,thousands_sep + sfvprintf,sfvscanf: handle %a,%A + setlocale: add LC_NUMERIC decimal_point,thousands_sep init + ast_std.h: __OPTIMIZE_SIZE__==1 to disable non-std __GNUC__ inlines + pathexists: path cache to cut down pathpath() access(2) calls + features/stdio: __FILE_TAG == _sfio_s for solaris +01-03-23 iconv: fix iconv_move buffer boundary bug that stopped at 1 block +01-03-19 glob: add GLOB_AUGMENTED + regex: REG_SHELL syntax error implies REG_LITERAL match + strto[ln][ll]: add overflow checks +01-03-17 locale: reimplemented to provide canonical locale namespace + locale: add LC_ALL=local for local system user default + tm.h: TM_*_3 => TM_*_ABBREV + tmfmt: handle standard E and O format modifiers + tmlocale: consult nl_langinfo() if defined + fmtquote("\"",1) => shell quote +01-03-08 regex: handle multibyte chars and collation classes + strmatch,strgrpmatch: now a wrapper on regex + ast_std.h: add mb*() multibyte and collation support + sfvscanf: handle locale decimal and thousand + proc*,system: handle ignored SIGCHLD + sfkeyprintf: handle %*C +01-03-06 locale: add locale data cache for efficient multiple locale switching + optget: fix LC_MESSAGES!=C --man bug +01-03-01 Makefile: HEADEROPT is not optional for win32.* + comp/syslog.h: comply with the de factos + optget(): fix \f...\f stack bug that referenced data after pop +01-02-27 *locale*: a batch of fixes for native LC_MESSAGE&LC_TIME hooks +01-02-22 pathprobe: reprobe test now checks probe.ini too + sfio_s.h: advertize public Sfio_t members with _ prefix + sfio.h,features/stdio: add <sfio_s.h> reference + sfhdr.h: map <sfio_s.h> _foo to foo + sfio.h: SF_APPEND=>SF_APPENDWR, SF_CLOSE=>SF_CLOSING +01-02-14 comp/conf.sh: probe <unistd.h> for _(CS|PC|SC)_* getconf symbols + stdio/*: update for uwin stdio.dll binary compatibility + sfread: finally fixed premature pipe read EOF bug + fmtscale: format tenths for number > 0 && number < 10 +01-02-09 _sfmode(),_sftype(),_Sfextern: UWIN binary stdio compatibility exports +01-02-08 sfgetm,sfputm,_sfputm: fix max clash with k&r max() macro + setlocale: undef valid for sun4 k&r valid() macro +01-02-07 catopen.c: don't do native catopen for the debug locale +01-02-06 sfraise.c: add SF_FINAL check to avoid (posibly) freed disciplines +01-01-01 features/common: fix uwin __DEFINE__ + sftable: initialize decimal and thousand + magic.tab: add corel wordperfect document + syslog: add LOG_LEVEL, add '\n' only if needed + include/tm.h: #undef daylight for _WIN32 + sfio.h: add _SF_APPEND and _SF_CLOSE for native namespace incursion + ast_std.h: add AST_LC_multibyte for MB_CUR_MAX>1 + setlocale: set AST_LC_multibyte + strmatch: check AST_LC_multibyte + features/limits.c: add _BITS_POSIX1_LIM_H guard for linux + features/libpath.sh: fix for aix LIBPATH + procopen,procclose: block SIGCHLD if PROC_FOREGROUND (e.g., system(3)) + optget.c: add enumerated option argument values + optget.c: add <!--INTERNAL--> for private --html + optget.c: fix memory leak that hit shell builtins hard + sfio: drop sfread small chunk logic +00-12-25 mnt.c: handle " and ' quoting for fstab + sftmp.c: let pathtemp() open the fd O_EXCL +00-12-15 conf.sh: add -v for verbose trace + features/(limits|unistd).c: no FEATURE/types because of _POSIX_SOURCE + features/time: add default for CLOCKS_PER_SEC + features/lib: std_malloc now handles NeXT +00-12-13 strton: recognize qualifier only if preceded by a digit + features/lib: change return in vfork() test to exit() for linux sparc + fmtquote: fix $'...' quote logic +00-12-11 tmdate: fix cron format bug that mishandled months +00-12-01 optget: handle $Id: ... $ in --?-version + features/fcntl.c: fix _STDPP_ mmap munmap +00-11-27 magic: drop dup sfclose() in load() + optget: handle error_info.id==0 +00-11-22 features/stdio: add _FILEDEFED for sol9.sun4 + strton,stronll: handle [u|U][l|L][ll|LL] qualifiers +00-10-31 tmdate: add TM_DATESTYLE and mmddHHMM[cc]yy + astlicense.c: #include <hashkey.h> MAM workaround + astlicense.c: check for non-empty CONTRIBUTORS +00-10-26 features/stdio: add _FILE and __FILE for gnu + misc/stk.c: fix stack pointer check off-by-one (dgk does it too!) +00-10-23 syslog.h: sync with bsd values +00-10-18 _STUB_* now functions instead of common symbols + all extern data declared with definition to eliminate common symbols + fastfind: add mac/bsd /var/db/locate.database +00-10-17 features/lib: add apple osX (darwin.ppc) workarounds +00-10-12 add: fmtbuf(), fmtclock(), fmtip4(), strtoip4() + fmt*() now use fmtbuf() for tmp fmt buf allocation +00-10-05 regex: add REG_DISCIPLINE and regdisc_t for alloc/error disc +00-09-29 features/lib: pipe_rw==0 for sgi: boot rw == bin incompatibility +00-09-21 astlicense: handle \' and \" in license values +00-09-20 sfwrite: fix write() error in sfprintf() loop +00-08-11 hdr,vmhdr.h: check/hide { getpagesize sbrk } prototypes + astlicense: add noncommercial +00-07-31 fflush: don't seek on pipes + sfresize: add + setlocale: fix bad newof() call +00-06-01 strmatch: initialize match.current.beg[0] to avoid dump at line 670 + sfio/stdio: a few more errno tweaks + astquery: sfstdin/sfstderr by default +00-05-26 sfmode: errno=EBADF for invalid stream use +00-05-22 rewind: fix for xopen test +00-05-18 mcfind: returns absolute path +00-05-16 optget: --keys must catch \f...\f too + translate,mc: errno cleanup +00-05-09 magic: add netbsd binary magic + fts: PATH_RESOLVE!=logical => FTS_SEEDOTDIR + ftwflags: call fts_flags() + astconf: astconf(0,0,0) re-syncs with _AST_FEATURES +00-05-08 optget: --usage & --keys for last -catalog group only +00-05-02 iconv.c: add; use codes[] in ccmapid() and ccmapname(); "" for native +00-05-01 pathtmp: copy env values (libshell or putenv may change) +00-04-01 optget: drop bar from [-foo?bar] for --??keys + sfvscanf: add %X -- duh + features/common: fix va_listval() for power pc + findopen: fix FIND_GENERATE codes file search + magic: add ERROR_translate() and msgcat.key + tmlocale: add for LC_TIME locale info + tmlex: check tm_info.format and tm_data.format + tmfix: fix for tm_wday special case (via nl_langinfo on LC_TIME fields) + strftime: fix for nl_langinfo special case + ast_std.h: provide LC_* defauls if not defined + sfnew: check ${_AST_sfio_bufsize} -- don't tell kpv + catopen,nl_types.h: add intercept to mc* routines + magic.tab: add ast message catalog + strerror: add _ast_strerror intercept with ERROR_translate("errno") + fmtquote: escapes >0177 only if (flags&2) +00-03-17 feof: stdio macro functions only for _UWIN + optget: proper ERROR_translate() calls + astgetconf: add for thread safe error message control + astlicense: fix type=special but with non-null notice + errorx: add for ERROR_translate() support + ERROR_translate: add locale id args for alternate dictionary + option.h: move _OPT_PRIVATE_ to pointer to avoid dll size mismatch + ftwalk: fix FTW_CHILDREN bug that hit top level non-dirs twice + translate.c: default error_info.translate + astconf: fix dup loop thrash that never returns, add _AST_VERSION +00-03-10 ast_std.h: do _LARGEFILE_SOURCE initialization before std headers + fmtquote: handle $'...' quotes +00-03-07 optget: fix numeric option support test + sfkeyprintf: add %q for '...' quoting with ansi escapes +00-03-06 features/stdio: fix _sfflsbuf prototype (dingold@gte.net) +00-02-14 pathtmp: fix pid cache bug that sometimes repeated after ~10 attempts + optget: "..." attribute quote + pathfind: eliminate *: prefix in lib, not type + proc: PROC_FOREGROUND for system(3) semantics (wait status return) + pathtmp: fix mktemp() logic + fts: fix FTS_NOSEEDOTDIR bug that botched ./* in top list + include/ast/prototyped.h includes include/prototyped.h + pathpath: fix strdup(0) bug + optget: --html <foo@bar> => ...mailto:foo@bar... + sscanf: fix sfsscanf => sfvsscanf typo + magic.tab: strengthen tar recognition +00-02-08 conf.sh: fix ifdef for systems that think sysconf(FOO) is const +00-02-04 glob: fix globlist_t.gl_flags +00-02-02 vm*: add NoF() for data only files +00-01-27 fts: fix top level .==.. statp bug (thanks to dr. ek) +00-01-25 conf.tab: fix LFS*_*LAGS typo +00-01-24 astlicense: handle type=verbose, license.notice, author=* +00-01-11 pathprobe: generate info for first probe script on PATH - duh + ast.h: add NoF(x) for files that define no functions + tmpfile: fix implementation + global change for string ERROR_translate() dictionary names + optget: fix new way but no long names off by one + optget: handle [--dictionary?name] +99-11-19 comp/conf.sh: `expr length XXX` is not universal + drop sfstdio; stdio via functions everywhere + drop Makefile conditionals (and follow our own advice for once) + sfio: new stream after atexit() bug fix + tm: Tm_zone_t.daylight=0 for standard time within zone + stdio: fopen => _ast_fopen: only way short of binary compatibility + Makefile: atmain.C falls back to atmain.c + optget: add --keys, s<section> option + stdio: _UWIN check for foreign stdio +99-11-11 astlicense: add +99-10-31 glob: fix regexec pattern; add PATH_ATTRIBUTES case check + pathpath: path==0 means malloc space +99-10-22 tmfmt: %C=2-digit-century, %k=date(1), %y=2-digit-year-in-century +99-10-18 fastfind: expanded default db lookup +99-08-11 magic: fix off by one registry malloc + features/fs: add __RENAME checks for stat familiy (netbsd) + features/fs: major()/minor() fixes for s5 + features/libpath.sh: netbsd fix -- ld.so not in std places + misc/fastfind: fix codes path generation bug + optget: beef up --?* description, fix <TR>...</TR> nesting + pathprobe: check for override (writable key file) first + features/time: int tmtimeofday(struct timeval*); + optget: fix opt_info.num, even if opt_info.arg!=0 + fts: FTS_PHYSICAL => FTS_SEEDOTDIR, add FTS_CHOP + fastfind: init dir tab with logical and physical name + glob: add gnu GLOB_ALTDIRFUNC +99-07-17 sfio: kpv update and sfhdr.h sync! +99-06-24 stdio: fix fflush() to ignore sfseek(0) return value +99-06-23 magic: '\r' is text not control to placate m$ +99-06-08 stdio: fix fseek,ftell semantics + uwin stdio: fflush() => _doflsh() to avoid __cplusplus clash + getopt: call liberror() to avoid error() conflict + tmfmt,tmscan: %N zone type (nation code), %z zone minutes west offset + tmfmt: - no pad _ space pad 0 leading 0 pad +99-05-28 magic: fix 'x' == '*' for any number, magic.tab tweaks + features/lib: verify that stat64 really works +99-05-21 tm*: add TM_WINDOW==69 for consistent century windowing guard year +99-05-18 tmtime: add century leap year calc anticipating unsigned time_t +99-05-17 sfkeyprintf: handle %o and %x!! +99-05-09 pathprobe: $HOME/.probe if not suid and st_uid!=geteuid() +99-04-28 magic,magic.tab: add registry() +99-04-24 regcomp: fix ksh pattern +! parse + regfatalpat: add + optget: make : ? ] double escape consistent in all contexts +99-04-01 features: drop iffeio.h and stdio.h when only printf() used + regex: fix stats() .l and .k count + fmtquote: added; most general fmtesc() form +99-03-22 fmtesc.c,ast.h: add fmtnesq() + optget: --?x works for -x option flag +99-03-17 features/limits.c: workaround solaris __EXTENSIONS__ _timespec bug + workaround limits.h circular prereq with ignore stdio.h + sfvprintf: %04e left-pad zero fixed +99-03-03 fts: uncle already: add FTS_SEEDOTDIR to retain leading ./ + regex: REG_MULTIPLE, BM for fixed string alternation + optget: embedded `-' optional in long options, prefix={0,1,2} +99-02-14 fastfind: fix dir format bug that emitted wrong paths + astconf: fix redef off by one bug +99-02-11 pathcanon(): don't cache astconf("PATH_LEADING_SLASHES", NiL, NiL) +99-01-23 optget: move <old_opt.h> back into <option.h>, no open-close + optget: add "[index:long-name:description]" for --long-name + comp/gross: add weak __libc_attr for irix < 6.5 compatibility + features/limits.c: tweak the guards again +99-01-11 fastfind: handle old format count byte order + magic.tab: fix elf to use real phdr offset + magic.c,magic.tab: fix | to act like switch/case + comp/fross.c,features/hack: for gross hacks + features/stdio: avoid sfio namespace pollution +98-12-25 tmdate: yyyy.mm.dd + pathprobe: fix procrun() cmd path bug + fmtesq: add + features/common: win32.alpha va_list + magic: add pc alpha object +98-11-11 strmatch: add STR_ICASE + pathprobe: punt to $HOME/.probe/<key+HOSTTYPE> if not S_ISUID + tmzone,tmdate: handle +-minutes, nn/MMM/yyyy + stropt: fix nested quote pop + tmfmt: add %K => %Y-%m-%d/%H:%M:%S + sfio/stdio: fix fseek() SF_PUBLIC omissions + fmtesc: catch '\\' (duh) + vmalloc: vmbest round bug fix +98-11-01 fts.c: no pathcanon() if (fts_flags & FTS_PHYSICAL) +98-10-01 features/stdio prototype fixes + optget: strton() instead of strtol() for # +98-09-22 regcomp: add REG_DELIMITED and REG_ESCAPE delimited re support +98-09-15 fix _LARGEFILE64_SOURCE stuff + ast_std.h: provide mmap() prototype +98-08-11 fix sfpopen() to ignore SIGPIPE by ignoresig() for sfio but not stdio + fix procopen() to ignore SIGPIPE by ignoresig() for PROC_IGNORE + sfio sfpopen/popen update + magic.src: fix ustar entry +98-07-17 fix ftwalk() short by one malloc() + add fts_notify() +98-06-25 sfdcmore,sfdcprefix: add +98-06-19 tokscan: add %f %g +98-06-01 disc/sf*.c: memset(0) after disc malloc() +98-05-11 strelapsed: y==Y + fts: pathcanon() top list +98-04-01 error: error_info.time for all msgs, just after cmd id + error: no sfsync(sfstdin) + sfio: sfpool, Sffmt_t update + magic.tab: sgi core dumps -- why aren't these elf? + stropt: (v+n) for unknown option is option value if n!=0 + procopen: fix setsid() for spawnveg() only +98-03-19 malloc: add realloc foreign region check + sfdisc.h: rename to match kpv disciplines + fastfind: fix strcasecmp/strcmp directory prefix mixup +98-03-17 features/fcntl.c,pathtmp,sftmp: add O_TEMPORARY +98-03-01 pathcanon: fix PATH_LEADING_SLASHES to stat() both slashes + pathcanon: add PATH_VERIFIED + tmdate: add skip[] to expand separator char set + fastfind: FIND_OLD for old 7 bit db, FIND_TYPE for new 8 bit typed db + fastfind: default generates gnu LOCATE02 8 bit db + magic: handle %s in mime description + cdt: kpv update + sfio: kpv update + stdio: fpos64_t fseek64(), ftell64(), fgetpos64(), fsetpos64() + stdio: fseek() => sfseek(SF_PUBLIC) to avoid locking + fts: initialize parent stat[bp] from top level *after* statf done + astmath: add -lm requirement test + *: Astlong_t => _ast_*_t + regex: simplify regcollate() (from doug) + tmtime: preserve Tm_t*tm when calling tminit() + astconf: add readonly PATH_ATTRIBUTES=[cirw] +98-02-14 fastfind: add FIND_ICASE to ignore case + tmdate,tmgoff: handle (+|-)hh[[:]mm[[:]ss]] absolute timezone + tmdate: `<n> <part>' now assumes `next <n> <part>' instead of `this' + tmfix: fix leap year bug that forgot to add 1900 + proc: add PROC_ZOMBIE +98-02-06 strmatch() char class range bug fix + regex char class range bug fix +98-01-23 _WIN32: changed the #if logic again to accomodate _GNUC_ + mnt: grab the mount options too + ast_std.h: hide getopt,getsubopt from stdlib.h + features/limits.c: add gnu guard macros to avoid limits.h recursion + features/mode.c: include "limits.h" instead of "FEATURE/limits.lcl" +98-01-11 sfio.h: use Astlong_t, move Sfio_t Sfdisc_t typedef to top for stdio.h + sfhdr.h: #undef SETLOCAL for hpux + sfvprintf,sfvscanf: %I*x for sizeof(int_arg) + handle ftruncate64 and truncate64 + dtopen.c: __hppa dll needs Dtset Dtlist Dttree refs here +97-12-18 fmtnum: add +97-12-11 magic: handle sgi 64 bit core dumps +97-12-07 pathtmp: add override for TMPPATH,TMPDIR and cycling +97-11-11 tm: handle 0 return from gmtime(),localtime() (dos negative time_t) + features/stdio: fix fflush() macro to do physical sync +97-10-31 astconf PATH_RESOLVE is logical if 3d&&!std, metaphysical otherwise + magic: fix #! mime bug + tm: tmtime() now calls tmfix() and adjusts tm_isdst too=>mtime() works +97-10-11 dllfind,dlfcn: move to separate -ldll so -last can link static, duh + Makefile,state.c: move forced header generation state.c => Makefile + sfio: update including SF_WHOLE +97-10-01 sfdostext: add \r\n => \n sfio discipline + stropt: NiL table => p=name for all name=value +97-08-11 pathtmp: check pid to note forks + procopen: FD_CLOEXEC rfd && wfd + fts: fts_close() after fts_children() with no fts_read() now works +97-07-17 error: sfsync(sfstdin,sfstdout,sfstderr) instead of sfsync(NiL) + _sfcvinit: add sfio internal interface to base conversion tables + strton: use _Sfcv* base conversion tables instead of sfsscanf() + sfvscanf: use _Sfcv* base conversion tables + mime: x- permutations now matched if exact fails + mime: original- stripped from content-* headers + tmdate: add yyyy-jjj, yyyy-mm-dd + dllfind: add + ccmapid: fix buf copy loop limit + ccmapname,ccmapcpy: add + sfstrtmp: add +97-05-09 streval: fix up casts for pseudo-ansi cc + features/types: use _ast_int_8 vars to verify support + string/modedata: check for mvs.390 S_IFMT + include/ast(_std).h: add #define __FILE_typedef + magic: add ccode text check + include/ftwalk.h: FTW_PATH=>FTS_NOCHDIR to avoid FTS_AGAIN (duh) + fts: clear status for FTS_AGAIN (fixes rm -r bug) + mnt: add mvs openedition w_getmntent() + sfhdr: _hdr_float && <float.h> for correct MAXDOUBLE + vmalloc/vmbest: if _std_malloc then use malloc()/free() not sbrk() + remove: check _std_remove + procopen: handle pio[{0,1}]=={0,1} + setenviron,features/uinstd: test for mvs.390 dll environ hacks +96-12-25 <sfio_p.h> -> <ast_common.h> + __EXTERN__(type,object) + __DEFINE__(type,object,value) + magic: check strings in !CC_NATIVE code set too + system: cmd==0 means check for shell access (xopen) + sfhdr.h: fix sfrsrv prototype + add __libc_malloc etc for gnu/linux + astconf(NiL,path,name) == astconf(name,path,NiL) + no liberror + fts_open: if toplist() stat fails return 0 + ftwalk: handle fts_open()==0 via one phony userf() call + sfmode: S_ISFIFO default is SF_SHARE=0 + features/lib: _WIN32 _lib_vfork=1 by default + unsigned<0 comparison and other fixes via sgi.mips4 cc + stk.c: use <align.h> ALIGN_BOUND for stkalloc() + features/lib,vfork: uwin fix + ast_std.h: fix strto[u]ll prototypes with features/types _ast_int_8 + getsubopt: add for xopen 4.2 compatibility + drop function __IMPORT__ + magic: more magic + change #define FILE from Sfio_t to struct _sfio_s + state.c: add generated includes that may be hit by std for MAM + bytesex: forgot about sizeof(long)=>7; could we fix the name too? + vmalloc.h: fix vmnewof() definition + sfio.h,stdio.h,ast_common.h: pollution cleanup + magic.c: add | op for switch + Makefile: stdio.h was on both HEADERSRC and HEADERGEN -- don't do that + drop pp:notice to get <sfio.h> ... <ast.h> to work + regex: add [[:<:]]==\< and [[:>:]]==\> for bsd compat + mime.c: ignore X-* headers while scanning for Content-* + magic.c: check for negative indirect offsets + magic.tab: fix dos entry that generated negative indirect offsets + vmalloc.h: add vmstrdup() prototype + hash.h: add hashgetbucket() macro + magic.c: MAGIFILE is now a : file list + mnt.c: another 4.4 bsd fix -- users must include <sys/crap.h> + common: fix _WIN32 chicken&egg with va_copy + sfio: forgot to set f->val along with _Sfi in sfexcept() + Makefile: add mini target for uwin libmini.a + sfcvt.c: workaround for flaky long double optimizers + features/common: fix to work with va_list==void* + regexec.c: fix REG_STARTEND subexpression offsets + strmatch.c: don't forget <wctype.h> + regrexec.c: fix REG_INVERT end boundary bug that missed last record + astconf.c: notify(0,0,"a=b") called for each setenviron("a=b") + pathcanon.c: check astconf(PATH_LEADING_SLASHES) to preserve //* +96-11-28 _LARGEFILE64_SOURCE by default if possible: NOTE: assumes xopen + regerror: fix for xopen + getopt: fix for xopen + magic: add ciao virtual database + astconf: posix/strict/xopen implies "standard" conformance + fs3d.h: hide mount prototype + ast_std.h,mnt.c,features/fs: ncr port tweaks +96-10-31 version 5.0 + add strtoll() strtoull() + sfkeyprintf: upgrade to int_max args + ast.h: add ssizeof() to work around unsigned botch + conf.sh: add shell actions to conf.tab + _DLL*: drop for _BLD_<lib> + __EXPORT__ + __IMPORT__ + sfio,cdt,vmalloc: kpv update +96-10-11 <ccode.h>: add character code map support + procclose: return shell style exit status + features/fs: pun statvfs.f_basetype to statvfs.f_reserved7 for mvs + uwin: add subdir for uwin additions + ast_std.h: swab() is from <stdlib.h> + sfio.h: <ast_std.h> if _PACKAGE_ast + magic.tab: add mips[1-4], 64-bit + port tweaks for sol.sun4 and sun4 +96-09-06 strerror: add + fmterror: uses strerror + str*search: use sfiso646() order + strpsearch: add + magic: add Magic_t.mime mime type return for magictype() + mime.h: add + strton: use sfsscanf() + strperm: factor in umask() if no who + pathtmp: add TMPPATH check + libevent: add + magic: add discipline to magicopen() + mime: add discipline to mimeopen() +96-08-31 regex: fix BM fail table generator +96-08-11 mntread: fix mnt.type for SCO variant + conf.tab: add SCO KERNEL_* sysconf() vars + fastfind: add findwrite(), fix findread() FF_OFF omission + ftwalk: reimplement on top of fts + fnmatch,re_comp,regexp: reimplement on top of regex + basename,dirname,fmtmsg,fts,ftw,getdate,getsubopt,glob: add + hsearch,nftw,realpath,strftime,strptime,swab,tempnam: add + tsearch,wordexp: add + getcwd: cache last path for easy test +96-07-17 error: sfsync(NiL) ... write ... sfsync(sfstderr) + astconf: handle readonly *(DEV|DIR) vars +96-04-01 swapop: fix stupid return value bug + features/int.c: fix int_swap generation bug + regnexec,regrexec: fix unsigned underflow init error + ls.h: fix iblocks() to be in units of LS_BLOCKSIZE +96-02-29 magic: space before function is definition with no call + hash: drop hash_info from public interface + hash: OBSOLETE hashlast() + hash: add Hash_root_t.Hash_last_t to public interface + add strsearch() and strnsearch() to complement strlook() + add hashkey.h for keyword->long hash + pathpath: pathpath(0,0,"",0) disables $0 $_ $PWD relative search + sfio: sfstrtod+sfhdr update + regex: fix REG_LENIENT to map BRE \[+?|] to ERE [+?|] + change _std_malloc iffe test so it doesn't hang on alpha + sfhdr.h: features/sfio generates _lib_cvt instead of _i386_cvt + ast_hdr.h: add va_copy(a,b) to copy va_list b to a + getopt: fix stupid getopt() -> optget() bug + sfvprintf: %h? now downcasts + regex: handle strto?l() errno in regcomp() + sfstrtod: _Sfstrtod_already_defined -> _STUB_sfstrtod + ast_std.h: hide valloc() and ignore <strings.h> + sfkeyprintf: pass phony va_list for '2' + regex: change HIT var type from int to size_t in special() + ast.h: add EXIT_STATUS(x) to convert wait() status to sh exit status +96-02-14 regex: add _ to \<...\> isalnum test + regex: fix BM inner loop breakout + features/types: size_t is signed on some systems! => _ast_size_t + sfio: sfrd discipline peek optimization + vmalloc: vmalloc.h malloc family macro upgrade + tokopen: fix newline bug for non-restore open + sfio: no inline for gcc until it emits for -g too +96-02-12 sfio: internal upgrade +96-02-09 regex: Boyer-Moore boundary fix + vmalloc: snarf latest +96-02-06 regex: add regrecord() and regrexec() for Boyer-Moore record filtering + regex: rearrange regnexec() args to match buffer,count arg style +96-01-31 stk: add STK_NULL to stk.h and stk.c + regex: privatize regex.h and fix min re length computation + workaround lazy strdup() implementations in features/lib _std_malloc + fix stkclose() to free(stream) -- purify missed because of sfio links + unused var cleanup + port/mnt.c must include <ls.h> to get <ast_fs.h> + add SF_FINAL to sfio and stk + sfio reads now on natural block boundaries + add #!!! <level> <message> !!! to tokline() + add REX_BM pre-filter to regcomp/regnexec +96-01-22 add regcomp env.paren overflow checks +96-01-11 add Doug McIlroy's regex (converted to C from C++ by gsf) + AT&T Research now + sfgetr optimization + regex buglets +96-01-05 tweak magic.tab for win32 +95-12-25 add !(...) -> (...)! to fmtre() + nt tweaks -- functions with no header proto must be defined extern +95-11-24 version 4.1 + add mnt.h mntopen mntread mntclose + convert fmtfs to mnt.h + add RE_LEFTANCHOR and RE_RIGHTANCHOR + gcc inlines must also have global library function instantiation! + add hashview() + fix strtape() internal buffer flow + fix mntread() fs/dir transposition for uts mnttab +95-10-31 change features/unistd.c includes to break limits-param cycle + add cdt from kpv + sfio snarf from kpv + add [ht]search for _WIN32 +95-10-11 clarify PARANOID pathcheck() warning + fix procopen() LIB_SPAWN environ bug with setenviron() cache + fix setenviron() bug that forgot to reset environ if == 0 + add %Z '\0' output format to sfkeyprintf() + sfio snarf for sfvprintf fix + allow multiple hashscan() with scope caveat + add comp/fakelink.h to synthesize a few symlink text patterns + add !<xxx> magic to misc/magic.tab + add FTW_TOP to inhibit recursion (for ftw side effects on top level) + add memfatal() common malloc fatal exception message + add dos \r\n test to misc/magic.c/cklang() + sftmp() O_EXCL+random to avoid collisions + pathtemp() uses sftmp() randomizing + features/fs uses SF_APPENDWR + sftmp() uses pathtemp() -- don't worry, its not circular + a few more _WIN32 compatibility additions + realloc fixed to use VM_RSCOPY|VM_RSMOVE instead of obsolete 1 + add hashlook(tab, oldname, HASH_RENAME, newname) + a few more tweaks to satisfy port warnings + add _SFIO_INLINE_PRIVATE to provide real function too + fix <dirent.h> installation test + oops object / shared library compat with _sfgetl2 _sfgetu2 +95-09-11 add getopt() compatibility + add fstat,lstat,mknod,stat fixes for _x versions in sys/stat.h + add getconf CONFORMANCE - posix for things that aren't ast default + sfio_t.h: #ifndef _SFIO_H #include "sfio.h" #endif + snarf vmalloc from kpv +95-08-11 fix malloc bug in magic + update linux and bsd 386 magic entries + error_info.auxilliary returns new level, |=ERROR_OUTPUT if msg done + drop fnmatch from strmatch for sparc (solaris) until it collates +95-07-17 fix port/astconf universe initialization + fix misc/optget opt_info.nopt initialization + drop tmset() TZ=... because it only worked when TZ=... was ignored +95-05-09 mongo <ast.h> namespace cleanup + drop > 2 year old obsolete interfaces + sfvprintf.c fix for (char:8 short:16 int:32 long:64) architectures + TMP_MAX back into conf.tab + pathbin() and pathshell() now use astconf() + fix pathtemp() to not cache getenv("TMPDIR") + fix ftwalk() metaphysical to handle non-dirs too + initialize *_info = { 0 }; for ancient ld semantics (NeXT) + fix magic() to do vmfree() + astconf(X_OK) must prefix lines with "getconf" + use <wchar.h> and wctype in strmatch() if available + _lib_utime_now checks utime(path,0) + _lib_poll_notimer checks poll(x,0,timeout) + add another _lib_utime_now check to port/touch.c + fix dd_buf cast in dir/opendir.c + split getconf.h into conftab.h and conftab.c for :READONLY: + use mbtowc() only if MB_LEN_MAX>1 + sfio char* -> Void_t* cleanup + handle old syntax in misc/magic.c + sigdata.c holds readonly signal strings + pathcheck() does AT&T checks for tools matching PARANOID - yuk + unused var cleanup + deprecate hash_info in favor of hashlast() + fix bad conf.sh ksh integer interactions + dll cleanup + magic.c falls back to malloc for now + add environ to <ast.h> -- C library global data syms are *RESERVED* + sfhdr.h memccpy(1,2,3,size_t) prototype +95-04-01 version 4.0 + convert to vmalloc + allow sigcritical() nesting mismatch to work around vfork() bug + add strexpr() primitive for streval() with user handle (like ftwalk) + add <magic.h> and magic.c file command magic interface + update magic mail message entry + fix keyprintf() invisible char count nesting bug + add sfstrnew(SF_READ|SF_WRITE) for alternate sfstropen() modes + sfstrnew(SF_READ) but reading requires sfseek(), sfreserve() + add conf.tab and conf.sh to nail C/POSIX limits/unistd macros + add getconf() string interface to *conf* + _DLL_INTERMEDIATE_DATA for systems that require indirect globals + _DLL for building shared libraries with _DLL_INTERMEDIATE_DATA + vecfile() restricted to S_ISREG() + add spawnveg() for job control + convert procopen() PROC_PGRP(id) to spawnveg() + fmterror() returns error text given errno (strerror() does same) + fmtsignal() returns signal text given errno (strsignal() does same) + {sig_name,sig_text,SIG_MAX} -> sig_info.{name,text,sigmax} + liberror("",...) omits [%s library] prefix + update features/signal.c table + add vmdisc() and change vmnewof() to use vmresize() + fix conf.sh to allow refs to previously defined limits + fix undefined entries in getconf() + magic data in magic.tab + fix stropt() pointer cast + vmalloc() exception handler replaces nomalloc() + merge sigdata.c into fmtsignal.c -- sun link needs function w/ data! + sftmp() bug fix + drop local <unistd.h> even with _POSIX_SOURCE + fix vmstrdup() macro arg miscount + fix conf.sh to handle enum'd symbolic constants in unistd.h + drop malloc() et.al. prototypes from vmalloc.h + fix sfvprintf() %d argument reference + add OSF/1 AES symbol(s) to conf.tab + determine standards prefix from conf.tab + add _CS_SHELL to conf.tab + getpath() default is confstr(_CS_PATH) + getshell() default is confstr(_CS_SHELL) + unify keyprintf user function args (should have learned by now!) + add quad type to magic + add astfeature() to unify universe style dynamic features + add ftwflags() to determine FTW_* flags from astfeature() +95-03-11 fix stropt() to not modify its *const* arg + handle "'\ quotes and chresc() in stropt() values + , treated like :space: between stropt() options + fix procopen() fd dup to ignore self-dups + add library id[] to misc/state.c + add ftwalk(FTW_METAPHYSICAL) for posix -H + sfvprintf() now handles balanced () in %() + add tmfmt() with buffer size check to replace tmform() + add fmttime() calling tmfmt() to fit fmt*() mold + add <keyprintf.h> and keyprintf() to support %(...)? in commands + add Hash_table_t for size==0 in stropt() + add EXTTYPE extended header to tar.h +95-02-14 sfmove() buffer size overflow fix + add _SFSTDIO_H to sfio.h + rename setenv() to setenviron() -- posix finally decided + rename <option.h> opt_* to opt_info.* + update features/unistd.c for _SC_* and _PC_* posix additions +95-01-19 (char*)uchar cast in fmtesc() + fix hash bucket memory leak in hashlook() [via John Mocenigo] + update strings/strtape() + fix optget()/optjoin() to handle leading + + add ALIGN_ prefix to <align.h> identifiers +95-01-11 change tm/*.c tmset(0) to tmset(tm_info.zone) to keep user setting + fix tmform() %Z null pointer dereference +95-01-01 add this RELEASE file + fix strperm() to properly handle "644 file" + fix tokline() to return last '\0' terminated line in string + fix tokscan() to properly handle \\n splice + add fmtesc() to complement stresc() + add LS_NUMBER to fmtls() + drop spurious optusage() ' ' + +:::::::: libcmd :::::::: + +12-02-14 rm.c: --force ignores no file operands specified +12-01-10 b_* (int, char**, void*) => (int, char**, Shbltin_t*) +11-08-27 pids.c: add getsid() iffe test +10-08-16 chmod.c: add -l alias for { -h --symlink } +11-08-16 chgrp.c: change lchmod() ref to lchown() +11-05-03 cp.c: do not delete src if mv to dest fails -- doh +11-03-28 chmod.c,chgrp.c: fix --symlink logic +11-03-26 rm.c: don't eaccess() check symlinks! +11-01-27 date: add { -R, --rfc-2822, -T, --rfc-3339=type } +11-01-03 chgrp.c: --symlink => --physical +10-12-10 rm.c: fix not-writable logic +10-12-01 tee.c: add iterrupt logic for slow open(1) -- needs to be generalized +10-11-30 chgrp.c: add -N,--numeric to bypass name lookup +10-10-20 cp: add --timestamps (preserv timestamps and permissions) +10-10-20 ln: fix 'cannot replace existing file' logic +10-10-10 cp,mv: add --remove-destination +10-08-11 cp.c,expr.c: use conformance("standard",0) test +10-08-11 cut.c: use mbnsize() instead of mblen() (for ast C.UTF-8) +10-07-28 chgrp.c,chmod.c,cksum.c: fts_path for diagnostics, not fts_accpath! +10-06-14 rm.c: fix -rfu logic +10-06-12 paste.c: repeat after me: do not modify argv[i] +10-06-01 sync with ast api 20100601 +10-05-09 tail.c: fix -0f bug that inially listed the entire file +10-05-06 basename.c: add { -a,--all -s,--suffux=suffix } from BSD +10-04-12 cat.c: fix -v bug that dumped core and make consistent with cmp --print-chars +10-04-11 cmp.c: add --print-bytes, --count=n, --differences=n +10-04-08 vmstate.c: add { method flags } vars for Vmstat_t.mode +10-04-08 mkdir.c: fix check for { S_ISUID S_ISGID S_ISVTX } after successful mkdir(2) +10-04-01 stty.c: add --fd=fd option +10-03-23 tail.c: fix -f large initial offset bug that didn't copy all data +10-03-07 tail.c: sfsync(sfstdout) after all -f done, fix -f partial line +10-03-05 mktemp.c: add --regress=seed for testing +10-03-05 vmstate.c: add +10-01-26 tail.c: -f sleep(1) only if no progress from last round of checks +10-01-20 fts_fix.[ch]: use <fts_fix.h> instead of <fts.h> (see fts_fix.c) +10-01-20 cp.c: free(state) if called from old shell +09-12-10 join.c: <wctype.h> for iswspace()! +09-12-04 cmd.h: fix CMD_DYNAMIC logic +09-12-04 cut.c: handle -d mb +09-12-03 mkdir.c: add --verbose +09-11-30 cat.c,date.c,cksum.c: drop setlocale() call already done by optget() +09-11-30 join.c: handle -t mb +09-11-28 wclib.c: { -w -L } mb independent of -m +09-11-28 paste.c: handle -d mb +09-11-28 uniq.c: handle -s mb +09-11-28 cksum.c: FTS_SEEDOTDIR by default +09-09-09 fds.c: add --unit=fd +09-08-25 tail.c: initialize Tail_t.fifo=0 !! +09-08-15 tail.c: fix fifo logic +09-08-11 wc.c: add setlocale(LC_CTYPE,"C") cleanup, add utf8 optimzations +09-08-10 uniq.c: replace -c 1..9999 sfsprintf() with inline conversion +09-08-01 join.c: fix empty field null pointer deref +09-07-23 pathchk.c: add -P,--path and -a,--all +09-07-02 chgrp.c,chmod.c,cksum.c: fts_flags() default only if not --recursive +09-06-19 cmd.h,cmdinit.c: add ERROR_CALLBACK for ERROR_NOTIFY main() callback +09-06-19 mktemp.c: --unsafe now checks and prints path but does create +09-06-19 tee.c: add ERROR_CALLBACK for tee_cleanup() sfio discipline pop +09-06-18 rm.c: handle interrupts during interactive query +09-06-18 cp.c: handle interrupts during interactive query +09-05-25 tail.c: fix old style option logic to handle --invalid-long-option +09-05-24 tail.c: -r == +1r +09-05-01 mktemp.c: handle foo/prefix, add -p dir and -u +09-03-31 cat.c: handle --no* options +09-03-15 tail.c: fix --timeout termination logic +09-03-03 tee.c: clean up sfio disciplines on error +09-03-03 cat.c: fix -v|-e|-n|-B interaction bugs +09-02-14 tail.c: fix VSC failures +09-02-14 join.c: fix VSC failure +09-02-02 uniq.c: document -number == -fnumber, +number == -snumber +09-02-02 tail.c: fix usage[] for negative offsets, add sun -b +09-02-02 mktemp.c: add +09-02-02 features/utsname: UWIN _UNAME_os_DEFAULT => UWIN +09-01-31 dirname.c: add experimental { -f -r -x } for pathpath(3) +09-01-05 cmp.c: fix EOF diagnostic to conform to posix +09-01-03 mkfifo.c: fix --mode=mode logic +08-12-07 date.c: add %[_][EO]K for [space pad] [full|long] iso docs +08-11-10 stty.c: check for -t grouping so -tostop != -t -ostop +08-10-15 rm.c: handle 'rm -f x x' => exit 0 +08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead +08-06-17 shcmd.h: move to libast +08-04-24 uniq.c: add optget() 'n' option for -1 => -f1 +08-04-24 getconf.c: clarify diffs between "name - value" and "name = value" +08-04-01 cut.c: add write error check +08-04-01 paste.c: fix --noserial stream vector access bug +08-04-01 pids.c: add ls/ps style --format=format +08-04-01 stty.c: fix off2 unitialized reference +08-03-28 chgrp.c: add --before=file +08-03-14 pids.c: add +08-03-11 chgrp.c: fix -m to use uid:gid as lookup key +08-02-11 Makefile: add -lmd possibly required by sumlib.o -- hack alert +08-01-30 expr.c: fix <=0 type that broke substr * 1 * -- wow +07-12-13 cp.c: fix builtin state reinitialization +07-11-29 rev.c: honor multibyte locales +07-11-27 cp.c: open non-existent destination with O_EXCL +07-11-27 stty.c: add -t,--terminal-group to list tty pgrp +07-11-27 cksum.c: --silent -s => -S, -s == -x sys5 for gnu compatibility +07-11-11 tee.c: drop ancient bsd compatibility "-" operand => SIGINT +07-10-29 cksum.c: add SUM_LEGACY for -r +07-10-12 cp.c: plug usage string memory leak by using per-builtin state +07-09-21 cksum.c: add sumprint() default scale arg, --scale, --bsd for solaris +07-09-10 chmod.c: add --show,-n +07-07-27 wclib.c: bias <wchar.h> checks for modern unix +07-07-17 cat.c: fix --squeeze-blank to reduce multiple blank lines to *one* +07-05-20 cmd.h: handle msvc's balk at if(0)0=0; +07-05-20 cksum.c: #include <modex.h> +07-05-11 cmd.h: add _CMD_CONTEXT_OK() to verify >= 20070511 context +07-05-09 fds.c: handle ipv6 sockets +07-05-09 cmd.h: <shbltin.h> : cmdquit() => sh_checksig(context) +07-04-25 mkdir.c: force (S_ISVTX|S_ISUID|S_ISGID) after mkdir(2) +07-04-24 procrun.c: add -last intercept => sh_run() and whence -q +07-04-19 uname.c: name operands first checked for CS_NAME, then NAME +07-03-28 date.c: add --unelapsed=scale, -U: fmtelapsed() => strelapsed() +07-03-25 wclib.h: iswspace() requires <wctype.h>! +07-03-11 tty.c: add sysV --line-number, -l +07-02-26 Makefile: sumlib.o: direct extract from +lsum (vcodex someday) +07-02-24 Makefile: tweak cmdext.h action for --mam bootstrap +07-02-09 Makefile: { cmdext.h cmdlist.h } depend on *.c list! +07-02-09 Makefile: +lsum to bring in static -lsum (no dynamic right now) +07-02-07 cksum.c: move from src/cmd/std with ftwalk => fts +07-02-07 getconf.c: handle /bin == /usr/bin in defer logic +07-01-26 chmod.c: don't FTS_FOLLOW if !FTS_PHYSICAL +07-01-23 cut.c: Cut_t variable dimension list[] must be last member +07-01-22 uname.c: fix -h typo that clobbered astconf() state -- ouch +07-01-02 fmt.c: fix buffer splice off by one bug -- what else +06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro +06-11-21 cp.c: fix 06-10-31 const dot[] readonly assignment +06-11-15 cp.c: fix 06-10-31 ln -s enoent bug +06-11-11 getconf.c: let astconf() handle "undefined" vs. "" +06-11-11 getconf.c: fix deferred getconf path search +06-11-11 fmt.c: handle two char { \t \n } in --usage ouput +06-10-31 global edit to eliminate most non-const static data0 +06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h> +06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } +06-10-31 join.c: tone down /tmp usage vi SFSK_DISCARD +06-10-31 cp.c,rm.c: update to <fts.h> to accomodate non-static data +06-10-29 date.c: "...%H%..." => "...%H" "%..." to avoid SCCS conflict +06-10-26 fds.c: handle sctp +06-10-18 tail.c: fix invalid suffix infinite loop +06-10-11 chgrp.c,cp.c: add sfstruse() error checks +06-10-10 tee.c: add --linebuffer, -l +06-10-06 getconf.c: preserve native getconf(1) known variable behavior +06-10-04 sync.c: add (thanks to Roland Mainz) +06-10-04 getconf.c: add -v specification => run native getconf(1) +06-09-28 stty.c: static setmode() => set() for darwin.i386 +06-09-27 head.c: handle -1c => -c1 +06-09-19 pathchk.c: pathconf() => astconf() +06-09-11 tail.c: handle compatibility corner cases +06-09-08 date.c: add output write error diagnostic +06-09-04 tail.c: fix initial position for -n0, no args => no -f +06-08-28 uniq.c: add -D,--all-repeated +06-08-25 wc.c,wclib.c: add -L,--longest-line,WC_LONGEST +06-08-24 wc.c,wclib.c: implement -m and WC_MBYTE +06-08-24 rmdir.c: -sp applies to every message, add gnu -e +06-08-23 rmdir.c: add solaris --suppress, -s +06-08-23 mkdir.c: don't add 0300 to -p final dir mode +06-07-17 cut.c: handle last line with no newline +06-07-17 cut.c: --output-delimiter == --line-delimiter +06-06-25 chmod.c: mask -c output with S_IPERM +06-05-09 uname.c: add -o; change -a to match linux +06-05-03 date.c: add --last -L to list last of multiple time args +06-02-14 tail.c: fix -f bug that lost fast stream data +06-02-11 getconf.c: exit 1 if name invalid -- duh +06-01-28 cp.c,rm.c: fix astquery() 'q' to return and not exit() +05-08-11 fmt.c: fix -o to handle raw --usage strings +05-05-17 cat.c,head.c: disable EPIPE error messages +05-04-14 chgrp.c: -f means all non-syntax error messages +05-04-11 fds.c: add from old internal open(1) +05-04-09 cmdext.h,cmdlist.h: generate from source -- about time +05-03-24 features/symlink: verify { lchmod lchown } implementations +05-03-07 date.c: add --listzones to list the time zone table +05-02-14 chmod.c: add --reference=file +05-01-11 cat.c: restore output stream to binary mode on exit +04-12-15 cp.c: add --preserve high resolution time support +04-12-08 date.c: add high resolution time support +04-12-01 cmp.c: fix %6I*ld => %6I*d -- doh + fmt.c: handle "\n\n operands \n\n" + head.c: handle -cN -nN, N > 4Gb +04-11-22 cmp.c: handle >2G chars/lines +04-11-18 fold.c: add --prepend=text, --append=text +04-10-31 tail.c: use SF_LOCKR macro +04-10-28 tail.c: use strtol() for old stype [+-]number[suffix] -- doh +04-10-22 cp.c: check rename() errno==ENOENT to retain destination +04-10-11 fmt.c: fix -o,--optget sublist bugs + tail.c: use strton() for number conversion +04-10-08 pathchk.c: add empty path and -p - first component char +04-10-01 fmt.c: add -o,--optget concatenated usage string format + stty.c: context is ERROR_INTERCATIVE + rm.c: restore 3d before exit +04-09-24 pathchk.c: fix docs +04-09-14 date.c: add %| and %& --parse docs +04-08-27 cp.c: add FTW_DC check -- duh +04-08-01 fmt.c: handle last char != '\n' +04-07-22 date.c,uname.c: access() => eaccess() +04-07-01 fmt.c: handle large input lines -- ouch +04-06-11 id.c: fix -r to output something! +04-05-27 expr.c: fix `:' op subexpression output +04-04-15 chmod.c: follow symlink for relative mode +04-04-12 Makefile: add STDCHMOD (for osf.alpha) +04-03-19 tail.c: handle -f sfreserve() large chunk failure +04-02-29 cp.c: decouple -f and -i for standard CONFORMANCE + cp.c: mv now attempts rename() before remove()+rename() + date.c: -f format or +format disables system clock set +04-02-14 cp.c: add -F --fsync to call fsync(2) for each copied file +04-01-05 head.c: -s now uses opt_info.number for >2Gb skip +03-09-18 tail.c: add --log +03-09-11 rm.c: add --unconditional +03-08-11 fold.c: add --delimiter=c to break at c +03-07-28 features/time: change settimeofday() test to 2nd arg of (void*)0 + expr.c: add {match,substr,index,length,quote} +03-07-15 fmt.c: fix trailing space bug +03-06-20 uname.c: fix -p constant string overwrite +03-06-04 stty.c: add undef to control assignment docs +03-05-31 uname.c: add -f and sysinfo()/confstr() compatibility via astconf() +03-05-27 rm.c: fix inappropriate "/.." append path overflow + cut.c: snarf from dgk +03-05-18 rm.c: check st_nlink to verify progress w.r.t. ftwalk/fts +03-05-15 join.c: fix stealth -v2 bug (thanks ahs) +03-05-04 wc.c: drop trailing space for `wc -l < file' +03-03-21 date.c: add %Q/recent/distant/ docs +03-02-19 date.c: fix %+|!flag docs +02-11-14 update for cmdinit() 4th arg and ERROR_NOTIFY for interrupt cleanup +02-10-02 date.c: tmform() => tmfmt() +02-09-30 date.c,uname.c: change execv() calls to procrun(): exec|exit => bad +02-09-06 wclib.c: fix 1 char-at-a-time miscount bug +02-08-19 chgrp.c: convert to use <cdt.h> +02-07-23 join.c: fix comm snarf typo +02-04-05 date.c: add %u +02-01-24 stty.c: ifdef a few more macros for uts (yes, its still running) +01-12-14 date.c: clarify %z doc +01-10-31 mkdir.c: mkdir() on existing dir could fail with errno!=EEXIST + uname.c: add execve() loop check for unknown options +01-10-29 tail.c: SF_SHARE on only if not reading through EOF +01-10-11 getconf.c: fix usage typos +01-09-11 cp.c,cmd.h: handle . in argv[0] + cp.c: add O_BINARY to all open() calls +01-09-06 tail: input streams must be SF_SHARE -- duh +01-07-16 stty: fix cntl() macro for CC_NATIVE!=CC_ASCII +01-05-31 date: fix /bin/date fallback logic + stty: fix a few mismatched flags, -a and -g option logic + stty: tone down sane to modify current settings rather than from zero +01-05-01 uname: -i => -h, add sol.sun4 -i, add sgi -R, punt to /usr/bin/uname +01-04-17 date,rm: add +01-03-07 cp: fix readonly string mod on "." +01-01-23 cp: `cp foo' => `cp foo .' only for CONFORMANCE!=standard +00-12-01 cut: multibyte support +00-10-31 mkdir: handle races by checking EEXIST +00-09-20 cp: copy argv to stack before modifying in place +00-05-18 add setlocale(LC_ALL,"") +00-04-30 join: drop weird opt_info.argv reference +00-03-17 expr: add == operator -- duh + cp,ln,mv: delay pathcanon() on destination to verify `cp a b/.' + getconf: use astgetconf for proper message control + ERROR_translate: dictionary update +00-03-08 tail: handle multiple -f files +00-03-07 fmt: add +00-03-07 dirname: handle PATH_LEADING_SLASHES as documented + tail: accept + options +00-02-14 chmod: --ignore-umask to ignore umask(2) in symbolic expressions + chmod,chgrp,cp: use FTS_NOSEEDOTDIR for correct path construction + cat: fix -n (was ignored, wow) +00-01-27 getconf: add "-a" and "-v spec" for sol7.* compatibility +99-09-09 join: fix -j1 vs. -j 1, add --ignorecase +99-06-22 paste: defualt delim in writable string +99-06-16 cat: fix --dos-ouput typo +99-06-11 cp: tighten chown() diagnostics +99-06-08 expr: nothing for NULL string bug fix +99-05-21 paste: fix missing newline columnize bug +99-05-20 mv: do not check for `mv foo foo' since rename() handles it +99-05-01 cmp,comm,cp/mv/ln,expr,fold,getconf,head: long options + join,logname,paste,pathchk,tail,tee: long options +99-04-10 uname: long options, stdize -a + chmod,head,tail,rev: long options + cut: long options, pass regression test 02 +99-04-07 cat: long options, fix O_TEXT modes +99-01-11 tail: fix +n + join: another ggs/psm bug + join: all 1 and/or 2 to be unseekable +99-01-01 cp: fix -p + chmod: drop -l option because of clash with l (lock) mode +98-12-25 cat: add -T to sfopen(,,"rt") +98-11-11 chgrp,chmod: cannot open file stream => not found + join: fix another ggs/psm bug; thanks guys +98-10-20 cp: fix cp -rp to update dir times too +98-09-22 join: fix ggs null field bug +98-08-11 join: fix last regression test bug +98-05-29 join: add jp->common to handle boundary conditions +98-03-11 cat,cp,rev,tee: fix sfmove() error checks +98-03-01 join: fix bug that emitted records more than once after eof + cp: fix sfmove() error check +98-02-14 cp: -R physical, -[HLP], -r getconf(PATH_RESOLVE) +98-01-11 cp: check sfclose() return value +98-01-07 chown,chgrp,chmod: use fts for -R + mkdir: fix -p default mode +97-12-07 mkdir: fix umask() reset +97-11-11 chown,chgrp: proper interpretation of -h,-l for lchown() + chown,chgrp: only chown() if uid or gid change +97-10-31 mkdir: do umask right +97-08-11 cmdinit: clear opt_info.index to allow multiple calls + cp,ln,mv: add +97-07-17 join: fix a few more -a bugs +97-05-31 expr: optget() only if CONFORMANCE==standard +97-04-01 join: fix a few bugs that make it work! +96-12-25 head: sfset(sfstdin,SF_SHARE,1) + Makefile: add -last to cmd lib list + drop function __IMPORT__ +96-08-11 tail: check for truncated file and rewind for -f +96-04-08 update <cmd.h> +96-02-29 uname: -a like std, -l for everything + id: add -a (default) +96-02-14 wc: speed up inner loop newline breakout +96-01-30 unused var cleanup +96-01-01 AT&T Research now + pathchk: handle getcwd(0,0) error + expr: switch to <regex.h> +95-11-11 add expr.c + fix cut exit code and -s optimization +95-10-11 add extern b_* to cmd.h + add void* context 3rd arg to b_main() +95-05-09 add getconf + cat -u avoids mmap + add chown|chgrp -m uid|gid map file + add chown|chgrp -P for systems with lchown(2) + chown|chgrp -P => lstat() too! + chmod|chown|chgrp -HLP +95-04-01 version 1.2 + add rmdir +95-02-14 fix mkdir -p symlink bug + fix mkdir '/' skip bug that went one too far + +:::::::: libcoshell :::::::: + +12-02-22 coinit.c: handle non-identifier export var names +11-12-13 cowait.c: handle sfpoll() error return on interrupt +11-11-21 cowait.c: poll before blocking read to weed out killed jobs (no 'x' message) +11-08-30 codata.c,coopen.c: drop macro "..." catenation for old cc +10-08-11 coinit.c: force _BLD_DLL for environ intercept +10-06-01 sync with ast api 20100601 +10-05-19 cokill.c: do cowait(co,co,0) to drain pending messages +10-05-15 coshell.h,coopen.c: add CO_ORPHAN for PROC_ORPHAN +10-05-11 coopen.c: add PROC_ORPHAN for CO_SHELL +10-05-10 coopen.c: no atexit() for CO_SHELL +10-04-15 first ksh93u local job pool tests work (service daemon tbd) +10-04-14 cowait.c: add 3rd cowait() arg timeout; 0 Coshell_t* operates on all open coshells +10-04-10 coshell.h: add CO_SHELL for shell using coshell! +09-12-09 coexport.c: add runtime CO_ENV_EXPORT hook that avoids changing environ +08-10-28 coopen.c: close write side of parent msgfd -- doh +08-04-28 coexec.c: check for fd 1,2 equivalence before CO_SERIALIZE 2>&1 +07-10-29 coshell.h,coexec.c: fix procrun()/system() intercept logic +07-08-15 add CO_SEPARATE,CO_MODE_SEPARATE for separate shell+wait per action +07-04-09 Makefile: $(CC.PIC) to allow archive to be pulled into other dlls +06-08-22 coshell.h: procrun => coprocrun, system => cosystem +06-08-09 coshell.h: export CO_ENV_MSGFD for COSHELL=coshell +06-08-02 coexec.c: Cojob_t.flags&CO_SERVICE for service requests +06-08-02 cokill.c: cokill() signal==0 => kill CO_SERVICE jobs +06-07-27 coexec.c: drop server cowait() that bypassed caller +06-06-21 coexec.c: add non-block cowait() to drain responses +06-06-11 fix service intercept cleanup +06-05-24 add service=name:init lightweight service intercepts +05-04-19 cowait.c: beef up invalid message tests and diagnostics +05-04-11 drop fixed CO_MSGFD for $_coshell_msgfd +05-04-07 coexec.c: fix !_lib_fork&&_map_spawnve close-on-exec redirection +04-09-22 cowait.c: remove CO_SERIALIZE temporaries after listing -- duh +04-09-01 co*: add CO_SERIALIZE +04-07-22 system.c: access() => eaccess() +04-02-11 coinit.c: fix CO_CROSS PATH initialization +02-10-30 coclose.c: fix reference-after-free bug in coclose() +02-01-31 codata.c,coopen.c: fix CO_MSGFD parameterization +02-01-24 coopen.c: fix small memory leak +01-10-26 coopen.c: hung sfclose(fp) -> close(sffileno(fp)) -- wow +01-09-11 coinit.c: fix coident[] for ancient bsh that die on `test == 1' + coinit.c: and fix coident[] to weed out buggy ksh88i trap on exit +01-05-31 co*: add CO_CROSS, expose CO_DEVFD +01-04-23 coquote: add state.type to avoid getenv() overwrite on some systems +01-01-01 cokill: killjob => cokilljob, killshell => cokillshell +00-12-18 coinit: CO_OSH ? "${!-$$}" : "${!:-$$}" +00-10-25 codata: $ZSH_VERSION is not ksh +00-02-14 procrun,system: system(3) returns wait() status (not shell status) +99-11-19 co*: add CO_OSH for bsdi lack of times(1) + coexec: CO_IGNORE for all but real ksh +98-06-22 coinit: quote cd path arg + +:::::::: libsum :::::::: + +12-02-29 sum-sha2.c: bitcount[] order reversed to allow a single noalias buffer copy +09-09-28 sumlib.c: use simple (faster) method name match function +08-06-05 sum-lmd.c: align context to largest int +08-05-01 sumlib.c: add some -lmd verification checks +08-02-11 sum-lmd.c,features/sum: add wrapper for solaris -lmd +07-10-29 sum.h,sumlib.c: add SUM_LEGACY for legacy output format +07-09-21 sum-sha1.c: reinstate Steve Reid's public domain implementation +07-07-26 sumlib.c: drop GPL sum-sha1.c +05-02-14 sumlib.c: split into sum-*.c +05-02-14 sum-sha2.c: add SHA { 256 384 512 } +04-02-29 Makefile: compile with $(CC.PIC) for codexlib/sum $(CC.DLL) +03-12-16 add { crc prng } generic methods and maps[] to these methods +03-12-16 sum.h,sumlib.c: add sumdata() +03-09-29 sumlib.c: fix FNV to use ^ instead of + +03-04-28 sumlib.c: drop md5 `zeroize' for performance + sumlib.c: add FIPS 180-1 SHA-1 + +:::::::: libdll :::::::: + +11-10-11 dll_lib.c: add { dllnames() dll_lib() } +10-10-20 dllscan.c: version arg "-" => 0 +10-10-19 dllplug.c: fix bug that wiped out dlopen() error message +10-10-19 dllplug.c: un-localize lookup names (happens with cut and paste) +10-10-19 dllscan.c: still no code for implicit libs missed by dlopen() +10-08-02 dllplug.c: fix local path dllcheck() call +10-05-28 dllplug.c: add dllplugin() with dllcheck() version check +10-05-28 dllcheck.c: add dllcheck() to do plugin_version() checks +10-05-28 dllerror.c: add dllerror(int retain) for dll*() and dl*() messages +09-11-17 dllscan.c: handle name[-.]version in dlsopen() +09-04-15 dllopen.c: add, use dllopen() internally to wrap dlopen() +08-05-12 dllscan.c: LIBSUFFIX==.dylib => default plugin version match 0.0 +06-10-11 dllscan.c: check sfstruse() return values -- doh +06-01-25 dllplug.c: add errorf() library message for dlopen() error +05-02-14 dllscan.c: "" || "-" => NiL +04-10-01 dllfind.c: drop ksh "builtin" workaround + dllscan.c: directory prefix in name limits search to dir and siblings +04-07-22 dllscan.c: access() => eaccess() +04-01-30 dllfind.c: dllplug(error_info.id) then dllplug(0) +04-01-28 dllscan.c: update for new plugin scheme: lib/foo/bar.xxx + dllplug.c: add dllplug() for plugin dllfind() +03-03-12 dllfind.c: dlopen() with RTLD_GLOBAL|RTLD_PARENT defaults +03-02-11 dllscan.c: change LIBPATH to <dir>[:<env>[:<pat>]][,...] +03-01-08 dllscan.c: hack version logic again -- is consistency rocket science? +03-01-07 dlfcn.c: fix darwin.ppc dlopen/dlsym/dlclose +02-11-18 dllfind.c: add path,size args (with backwards compatibility checks) +02-11-15 dllfind.c: check for ./path if '.' in path but no '/' +02-08-30 dllfind.c: fix a bug that returned uninitialized value on not found +02-08-28 dllscan.c: handle and display bin as a sibling dir +02-07-31 dllscan.c: add dllsopen,dllsread,dllsclose + dllfind.c: use dllsopen,dllsread,dllsclose +02-07-26 dllfind.c: add dllinfo() +02-06-27 dllnext.c: define _GNU_SOURCE to enable RTLD_NEXT +02-03-17 dllfind.c: fix dll prefix search (for cygwin) +02-01-11 features/dll: include <dlfcn.h> only if _hdr_dlfcn&&_lib_dlopen +01-10-31 dlfcn.c: change hp.pa dlopen() prototype (<dlfcn.h> but no -ldl!) +01-09-25 dllfind: add LIBSUFFIX +01-07-17 dllfind: do at least one dlopen() to prime dlerror() +01-05-29 dlopen: fix dlopen(0,0) for HP +01-04-20 dllfind: use getconf HOSTTYPE LIBPATH LIBSUFFIX +01-02-14 features/dll: fix unbalanced ' quote and ancient hostinfo reference +00-01-26 dlllook: add -- dlsym() with `_' weak prefix fallback +99-04-01 features/dll: drop <stdio.h> -- iffe protos printf +99-03-19 static=1 for all but win32.* +98-06-01 dllfind: fix version search +98-03-11 features/dll: probe for _DLL_RLD_SYM +98-03-01 dllnext: fix to work! +98-01-23 -ldl test moved to lib0ast +98-01-11 update for astconf("LIBPATH") + add dllnext(flags) to uncover next layer + dllfind() and dllnext() in separate files (for 3d) +97-10-11 move from libast so libast can link static diff --git a/lib/package/ast-ksh.html b/lib/package/ast-ksh.html new file mode 100644 index 0000000..4bcc35d --- /dev/null +++ b/lib/package/ast-ksh.html @@ -0,0 +1,5346 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> +<META name="generator" content="mm2html (AT&T Research) 2012-01-11"> +<META name="description" content="ast-ksh package"> +<META name="keywords" content="software, package"> +<TITLE> ast-ksh package </TITLE> +<META name="author" content="gsf+dgk+kpv"> +<STYLE type="text/css"> +div.FI { padding-left:2em; text-indent:0em; } +div.HI { padding-left:4em; text-indent:-2em; } +dt { float:left; clear:both; } +dd { margin-left:3em; } +</STYLE> +</HEAD> +<BODY bgcolor=white link=slateblue vlink=teal > +<TABLE border=0 align=center width=96%> +<TBODY><TR><TD valign=top align=left> +<!--INDEX--><!--/INDEX--> +<P> +<P><CENTER><FONT color=red><FONT face=courier><H3><A name="ast-ksh package">ast-ksh package</A></H3></FONT></FONT></CENTER> +The AT&T Software Technology ast-ksh package from AT&T Research +contains ksh and support libraries. This is the minimal set of +components needed to build ksh. +Components in this package: +<P> +<P></P><TABLE border=0 frame=void rules=none width=100%><TBODY><TR><TD> +<TABLE align=center bgcolor=papayawhip border=0 bordercolor=white cellpadding=2 cellspacing=2 width=99% > +<TBODY> +<TR><TD align=left> +<A href="#ksh93">ksh93</A> </TD><TD align=left> libast </TD><TD align=left> libcmd </TD><TD align=left> libcoshell </TD><TD align=left> libdll </TD><TD align=left> libsum</TD></TR> +</TBODY></TABLE></TD></TR></TBODY></TABLE> +<P> +This package is a superset of the following package: ksh; you won't need this if you download ast-ksh. +The software is covered by this license: +<UL type=square> +<LI> +<A href="http://www.eclipse.org/org/documents/epl-v10.html">http://www.eclipse.org/org/documents/epl-v10.html</A> +</UL> +Individual components may be covered by separate licenses; +refer to the component source and/or binaries for more information. +<P> +A recent +<A href="#release change log">release change log</A> +is also included. +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh93">ksh93</A></H3></FONT></FONT></CENTER> +KSH-93 is the most recent version of the KornShell Language +described in +"The KornShell Command and Programming Language," +by Morris Bolsky and David Korn of AT&T Bell Laboratories, ISBN 0-13-182700-6. +The KornShell is a shell programming language, +which is upward compatible with "sh" (the Bourne Shell), +and is intended to conform to the IEEE P1003.2/ISO 9945.2 Shell and +Utilities standard. +KSH-93 provides an enhanced programming environment in +addition to the major command-entry features of the BSD +shell "csh". With KSH-93, medium-sized programming tasks can be +performed at shell-level without a significant loss in performance. +In addition, "sh" scripts can be run on KSH-93 without modification. +<P> +The code should conform to the IEEE POSIX 1003.1 standard and to the +proposed ANSI-C standard so that it should be portable to all +such systems. Like the previous version, KSH-88, +it is designed to accept eight bit character sets +transparently, thereby making it internationally compatible. +It can support multi-byte characters sets with some characteristics +of the character set given at run time. +<P> +KSH-93 provides the following features, many of which were also inherent +in KSH-88: +<UL type=square> +<LI> +Enhanced Command Re-entry Capability: The KSH-93 history +function records commands entered at any shell level and stores +them, up to a user-specified limit, even after you log off. +This allows you to re-enter long commands with a few keystrokes +- even those commands you entered yesterday. +The history file allows for eight bit characters in +commands and supports essentially unlimited size histories. +<LI> +In-line Editing: In "sh", the only way to fix mistyped +commands is to backspace or retype the line. KSH-93 allows you +to edit a command line using a choice of EMACS-TC or "vi" +functions. +You can use the in-line editors to complete filenames as +you type them. +You may also use this editing feature when entering +command lines from your history file. +A user can capture keystrokes and rebind keys to customize the +editing interface. +<LI> +Extended I/O Capabilities: KSH-93 provides several I/O +capabilities not available in "sh", including the ability to: +<UL type=circle> +<LI> +specify a file descriptor for input and output +<LI> +start up and run co-processes +<LI> +produce a prompt at the terminal before a read +<LI> +easily format and interpret responses to a menu +<LI> +echo lines exactly as output without escape processing +<LI> +format output using printf formats. +<LI> +read and echo lines ending in "\". +</UL> +<LI> +Improved performance: KSH-93 executes many scripts faster +than the System V Bourne shell. A major reason for this is +that many of the standard utilities are built-in. +To reduce the time to initiate a command, KSH-93 allows +commands to be added as built-ins at run time +on systems that support dynamic loading such as System V Release 4. +<LI> +Arithmetic: KSH-93 allows you to do integer arithmetic in any +base from two to sixty-four. You can also do double +precision floating point arithmetic. +Almost the complete set of C language operators are available +with the same syntax and precedence. +Arithmetic expressions can be used to as an argument expansion +or as a separate command. +In addition there is an arithmetic for command that works +like the for statement in C. +<LI> +Arrays: KSH-93 supports both indexed and associative arrays. +The subscript for an indexed array is an arithmetic expression, +whereas, the subscript for an associative array is a string. +<LI> +Shell Functions and Aliases: Two mechanisms - functions and +aliases - can be used to assign a user-selected identifier to +an existing command or shell script. +Functions allow local variables and provide scoping +for exception handling. +Functions can be searched for and loaded on first reference the +way scripts are. +<LI> +Substring Capabilities: KSH-93 allows you to create a +substring of any given string either by specifying the starting +offset and length, or by stripping off leading +or trailing substrings during parameter substitution. +You can also specify attributes, such as upper and lower case, +field width, and justification to shell variables. +<LI> +More pattern matching capabilities: KSH-93 allows you to specify +extended regular expressions for file and string matches. +<LI> +KSH-93 uses a hierarchal name space for variables. +Compound variables can be defined and variables can +be passed by reference. In addition, each variable +can have one or more disciplines associated with +it to intercept assignments and references. +<LI> +Improved debugging: KSH-93 can generate line numbers on execution +traces. Also, I/O redirections are now traced. +There is a DEBUG trap that gets evaluated before each command +so that errors can be localized. +<LI> +Job Control: On systems that support job control, including +System V Release 4, KSH-93 +provides a job-control mechanism almost identical to that of +the BSD "csh", version 4.1. +This feature allows you +to stop and restart programs, and to move programs between the +foreground and the background. +<LI> +Added security: +KSH-93 can execute scripts which do not have read permission +and scripts which have the setuid and/or setgid set when +invoked by name, rather than as an argument to the shell. +It is possible to log or control the execution of setuid and/or +setgid scripts. +The noclobber option prevents you from accidentally erasing +a file by redirecting to an existing file. +<LI> +KSH-93 can be extended by adding built-in commands at run time. +In addition, KSH-93 can be used as a library that can +be embedded into an application to allow scripting. +</UL> +Documentation for KSH-93 consists of an "Introduction to KSH-93", +"Compatibility with the Bourne Shell" and a manual page and a +README file. In addition, the "New KornShell Command and Programming +Language," book is available from Prentice Hall. + +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="release change log">release change log</A></H3></FONT></FONT></CENTER> +<PRE> + +All recorded changes follow. + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh93 changes">ksh93 changes</A></H3></FONT></FONT></CENTER> +<PRE> + +12-02-29 --- Release ksh93u+ --- +12-02-29 A bug which could lead to a core dump when more that four shared + libraries were added with the builtin command has been fixed. +12-02-29 Fixed a few bugs which caused SIGCHLD to be blocked preventing + background jobs from being reaped until a foreground job was run. +12-02-27 A bug in which sh -c for a simple command caused a fork() has been + fixed. +12-02-27 A timing bug on systems such as AIX that doesn't support vfork() + that could cause the exist status to get lost has been fixed. +12-02-22 A private file descriptor that was not close-on-exec for a command + substitution and has been fixed. +12-02-14 A bug in which ^Z did not stop a pipeline when the last component + was a shell built-in has been fixed. +12-02-14 getconf("PATH") used to initialize ed(1) path. +12-02-13 +In earlier version read from standard input would fail when called + from the KEYBD trap. Now read options -N, -n, and -t should work + when called from a KEYBD trap. +12-02-13 If FCEDIT is not set and fc is invoked without the -e option, + ed will be invoked if found instead of /bin/ed. +12-02-10 Another bug in the saving and restoring of IFS in a subshell + that caused a core dump has been fixed. +12-02-08 A bug in which .sh.fun disciplines could be cleared after a + function completes has been fixed. +12-02-08 A bug in job control in which the foregroup process group was not + set correctly after restarting a stopped pipeline has been fixed. +12-02-07 A bug in which numbers with leading zeros could be treated as + octal constants outside of ((...)) has been fixed. +12-02-06 A bug in arithmetic with compound variables containing multiple + array elements has been fixed. +12-02-02 A bug in the ulimit option table was fixed. +12-01-26 A bug in which a set command that did not change monitor could + effect the behavior of the monitor when monitor mode is on is fixed. +12-01-21 +You can now test whether the shell implements a math function using + typeset -f .sh.math.name, where name is the name of the function. +12-01-21 A bug in which typeset -L and typeset -R did not handle multibyte + characters correctly has been fixed. +12-01-20 A bug that could cause the shell to hang waiting for an incorrect + job pid has been fixed. +12-01-19 A memory leak which occured for a nested command subtiution has been + fixed. +12-01-17 A bug in which typeset -u PS1 could enable the uppercase attribute + for some other variables, for exampe, HISTFILE has been fixed. +12-01-16 A bug in which .sh.match was not correct after a substring match when + the replacement string contained a substring match has been fixed. +12-01-12 +Files that are sourced from profile files are now read and executed + one command at a time so that alias definitions take effect as they + do for profile files. +12-01-12 A bug in which whence -p would find a function if one existed and + there was no command of that name on PATH. +12-01-11 Change b_* prototype (int, char**, void*) => (int, char**, Shbltin_t*). +12-01-05 A bug in which read was not terminating for a signal that had a trap + set has been fixed. +12-01-01 A timing problem with >; has been fixed. +12-01-01 A macro expansion memory leak has been fixed. +11-12-26 A bug in array assignments of the form arr=( $arr[i] ...) in which + arr was not unset before the assignment has been fixed. +11-12-20 A number of code changes were made based on the results of errors + indicated by static code analysis. +11-12-13 In vi edit mode a lteral <TAB> can now be entered by preceding it + with a backshash. +11-12-13 When tab is entered for completion after a ' or ", the ' and " + characters are no longer deleted. +11-12-07 A bug in which a program in the current direcotry with a . in the + name could fail to execute when both PATH and FPATH end with :. has + been fixed. +11-12-07 I fixed a bug in which a variable expansion in a large here-document + could be expanded to a null string. +11-12-06 An optimization to read was added in the case the the read command + was redirected from a file. +11-12-06 Changes were made to make the line limit for read unlimited by + default. +11-12-05 A bug in which unsetting an array variable did not completely clear + the variable in some cases has been fixed. +11-12-02 +The printf alternative character # when applied to the %q format will + quote argument in a form suitable for a field in a .csv format file. +11-12-02 +A -S option was added to read to be able to read .csv format files. +11-11-28 A bug in which redirection of standard error in a function called from + command substitution caused standard error to be lost has ben fixed. +11-11-21 [[ (-n foo) ]] no longer requires a space before (. +11-11-11 The readonly attribute for a variable now applies to compound + assignments to that variable. +11-11-07 Changes were made to reduce the stack size to allow deeper function + recursion. +11-10-10 +Added alternate flag to printf %H for encoding of URI's. +11-10-10 A bug which could lead to a core dump when the shell was invoked + with more than twenty five open files has been fixed. +11-10-06 A bug in the scoping of name references in functions called by other + functions has been fixed. +11-10-05 A bug in which wait on a pid may return the exit status of an + earlier background job with that pid instead has been fixed. +11-09-22 A bug in which a read timed out with TMOUT did not always restore + the terminal state has been fixed. +11-09-21 An optimization that allowed the last command in a script to use + the same process id as the script has been eliminated. +11-09-21 Added letoctal option that enables the let command to recognize + octal constants starting with 0. +11-09-20 A bug in which ${var.} could cause a core dump has been fixed. +11-09-20 A bug with SHOPT_EDPREDICT when neither vi or emacs was enabled for + lines beginning with # when in a multibyte locale has been fixed. +11-09-20 A bug in emacs edit mode with SHOPT_EDPREDICT that would cause + history searches matching comments lines to generate predictions + has been fixed. Only user typed comment lines generate predictions. +11-09-20 A bug in emacs edit mode with a search that matches a comment line + that could cause a core dump has been fixed. +11-09-16 A bug in which a command name ending in .. could cause the shell to + abort has been fixed. +11-09-16 The characters ! + - % and @ in file names are no longer escaped with + file name completion. +11-09-13 The let command no longer treats numbers starting with 0 as octal + constants. +11-09-08 A bug in which printf "%R" could cause a core dump for invalid shell + patterns has been fixed. +11-08-09 With set -u, ${var#pattern} reported that var was unset for special + variables. +11-08-03 A bug in which the shell did not preserve the exit status for a + coprocess has been fixed. +11-08-02 A bug in the saving and restoring of IFS in command substitution that + caused a core dump has been fixed. +11-07-21 Modified the 10-08-27 bug fix so that background jobs started in for + and while loops created interactively generate completion messages. +11-07-20 I fixed a bug in here documents in which multi-byte characters that + crossed buffer boundaries were not processed correctly. +11-06-22 The shell compiler now supports process substitution. +11-06-22 +Added code to support process substitution on systems that do + not supply the /dev/fd directory. +11-06-21 Fixed extraneous jobs Done messages when builtin is at the end of a + pipeline. +11-06-20 Fixed two regression tests. +11-06-20 Fixed a bug introduced on last update. +11-06-14 A bug with pipefail in which the shell would wait for background + jobs to complete has been fixed. +11-06-09 A bug which caused the options.sh regression test to fail on OS390 + Linux has been fixed. The bug could also have affected other systems. +11-06-07 +A number of changes to support the still undocuments namespace option + have been added. +11-06-06 A bug in which command substitution of eval would hang when it had + standard error redirected to standard output has been fixed. +11-06-01 A bug in case statement fall through (;&) ignoring set -e was fixed. +11-06-01 A bug in which creating a left or right justified upper or lowercase + variable with an empty string has been fixed. +11-06-01 A bug in which the .paths directory wasn't read when a subshell was + executed before any other command has been fixed. +11-05-31 The shell now gives an error when a type variable is assigned to + an array instance when the array has been declared a compound variable + array. +11-05-31 A bug in which typeset -m of an array instance did not remove the + original instance has been fixed. +11-05-28 A bug in which typeset -m dest=src fails when src and are passed as + name references was fixed. +11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound + variable core dumps has been fixed. +11-05-28 Two bugs in the display of arrays of compound variables with print -v + have been fixed. +11-05-27 A bug with command substitution with the shift jis locale has been + fixed. +11-05-25 A bug in which unset -f foo, called within function foo could cause + the shell to core dump has been fixed. +11-05-24 A bug in unsetting arrays of compound variables that could lead to + a core dump has been fixed. +11-05-24 A scoping bug in with typeset -m for variables passed as references + has been fixed. +11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an + exception has been fixed. +11-05-03 Two more scoping bugs with name references and read -C were fixed. +11-05-03 A potential race condition which occurs when here-documents are + processed in asynchronous blocks has been eliminated. +11-05-02 Another scoping bug with name references defined in a function has + been fixed. +11-05-02 A bug in which the shell discards saved exit status of a job if it is + followed by a subshell execution has been fixed. +11-04-28 The shell now checks for numerical overflows with process ids. +11-04-28 Another scoping bug with compound variables defined by name references + inside a function has been fixed. +11-04-28 A bug which caused a core dump on 32 bit systems with the basic.sh + regression test has been fixed. +11-04-27 A scope binding error for name references has been fixed. +11-04-27 Assignment of compound variable to compound array element by name + is now working. +11-04-26 I fixed a bug with SHOPT_FIXEDARRAY compilation that could cause + an a core dump for not fixed arrays. +11-04-25 A bug in the references to two dimensional compound arrays has + been fixed. +11-04-20 A bug in which a name reference to a multidimentional index array + index, nameref x=foo[3][4], did not work correctly has been fixed. +11-04-18 Changes were added to allow fixed size arrays of variable sized + objects when the SHOPT_FIXEDARRAY compile option defined on 10-09-28. +11-04-18 A bug in which name references to array elements could fail has + been fixed. +11-04-15 +A compile option, SHOPT_2DMATCH, has been added which causes + .sh.match to be a two dimensional array after ${var//pat/str} + where the first dimension is the pattern number and the second is + the match instance. +11-04-11 A bug in which readonly var, where var is exported could cause var + to be unset has been fixed. +11-04-06 A tokenizer bug in which ${x/{3}(\d)/ } would cause in infinite + loop has been fixed. +11-04-05 A bug in which ${!x.} could cause a core dump has been fixed. +11-04-04 A bug in which cleaning out the history file could terminate before + keeping all the recent history events has been fixed. +11-03-29 A bug in which ${#array[@]} was 1 rather than 0 after issuing + typeset array[7] has been fixed. +11-03-29 The subscript out or range message for fixed arrays has been fixed. +11-03-29 A bug in which suspend could cause a core dump has been fixed. +11-03-24 For the showme option added 09-09-09, commands beginning with a ; + inside an arithmetic for loop, no longer produce syntax errors. +11-03-18 A bug in _WINIX ~domain/user expansion has been fixed. +11-03-16 A bug in the pipefail option which could cause a script to hang + has been fixed. +11-03-12 The shell no longer treats ${##pattern} as a syntax error. +11-03-11 A bug in typeset -u on systems that don't supply the towctrans() + function has been fixed. +11-03-11 A bug in which a compound assignment of the form var[sub]=(...) + would evaluate sub for each assignment has been fixed. +11-03-07 A bug in which reassigning a compound variable to an associative + array index could incorrectly increase the count of the number + of elements has been fixed. +11-03-04 +The tilde expansion on windows has been modified to handle user + names of the form domain/user so that ~domain/user now expands + to the home directory of that domain user. +11-03-03 A bug in which the width of the prompt was calculated incorectly + which cause the wrong line length for edit commands has been fixed. +11-03-02 A bug in which a global variables set from within a function inside + a subshell can leave side effects in parent shell has been fixed. +11-03-01 A bug in which whence -a could dump core when the first match + was due to : in PATH and the program was in the current directory. +11-02-28 A bug in emacs mode with SHOPT_EDPREDICT (added on 10-05-20) which + disabled prediction on a line starting with # when the cursor was not + at the end of line has been fixed. +11-02-28 The output format for compound variables with set has been fixed. +11-02-25 A bug which could lead to a core dump occurred when a shell script + without #! is invoked by name from a parent shell that has name + references defined and the script creates name references of the + same name. +11-02-21 The shell now fails with a syntax error when a here-document in a + command substition is not completed before the closing ), for + example, $( foobar <<! ) + here_doc + !. +11-02-18 A bug in which the value of $0 in a function defined by name() + was changed to name has been fixed. +11-02-17 A bug in which the declaration typeset var[100] did not work + correctly has been fixed. +11-02-15 A bug in which [[ -v sh.match ]] did not work correctly has been + fixed. + +11-02-08 --- Release ksh93u --- +11-02-08 A bug in which opening standard output after it has been closed with + exec 1>&- doesn't work has been fixed. +11-02-07 A bug on some systems for which a command subtitution could hang + has been fixed. +11-01-28 A bug in file name completion for files containing both multibyte + characters shell special characters has been fixed. +11-01-18 The .sh.match variable now shows elements that do not match as + as not set rather than an empty string. +11-01-18 A bug with typeset -m of an array into an element of an indexed + array has been fixed. +11-01-13 A bug in handling of arrays of compound variables inside ((...)) which + reported a syntax error been fixed. +11-01-10 A bug in arithmetic assignment operators of the form op= for array + variables when the same array was referenced on the left and the + right hand side with different indices has been fixed. +11-01-10 A bug in which the output of time was lost when { time...;} 2>&1 + occurred inside command substition has been fixed. +11-01-07 [[ -v sh.match[i] ]] was returning false when sh.match[i] was set. +11-01-05 Added and modified warning messages with sh -n. +11-01-02 Fixed bugs with typeset -l/-u/-M and arrays. +10-12-28 Fixed a bug with typeset -l/-u/-M values in arithmetic expressions. +10-12-26 Fixed a time parsing bug in sleep and localeconv() initialization. +10-12-23 Prevented the shell from generating a core dump when it sends itself + a termination signal because the last command terminated with that + signal. This prevents a core dump to be overwritten by the shell. +10-12-22 A bug in the expansion of ${A[@]} ${B[@]}, introduced in 10-12-01 + when A="" B=B has been fixed. +10-12-21 +Use MS_3D in b_vpath() for setting win32 WoW mount defaults. +10-12-17 A bug in the expansion of ${var:i:j} which caused a core dump when + i > ${#var} has been fixed. +10-12-16 +sleep now treats . as decimal point even in locales that use comma. +10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer + mapping as provided with wctrans(). +10-12-10 A bug in which typeset -l displayed namespaces as well as lower case + variables has been fixed. +10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline + whose right hand side is a builtin, and whose left hand side ends in + a simple command that has standard output redirected has been fixed. +10-12-06 A bug in hexfloat assignments when the right hand side is a string + variable starting with 0x has been fixed. +10-12-01 A bug in the expansion of ${$1+"$@"} which causes the last positional + parameter to disappear when it is empty has been fixed. +10-12-01 A number of changes were made to reduce the startup time. +10-11-29 When wait is interrupted by a signal that is caught, it now exits + with a non-zero exit status. +10-11-29 When a variable is used directly in an arithmetic expression, + leading zeros no longer cause the value to be treated as an + octal constant. This was true in previous versions for justified + variables. +10-11-29 An incorrect warning message was eliminated with the -n option for + arithmetic expressions with associative arrays. +10-11-29 Some changes were made to slightly reduces startup time. +10-11-24 A bug in which a name reference is make to arr[0] when arr is not + an array has been fixed. +10-11-23 If a type definition is made without a compound variable assignment it + produces an error message and no longer shows up as a defined type. +10-11-22 The handling of inside [...] for for shell and ~(E) patterns has + been fixed. +10-11-22 A patch was made to pfsh to handle an error case. +10-11-22 +Modified types defined in namespace so that they do not clash with + types in other namespaces. Types can be referenced using + .namespace.typename. +10-11-22 A bug which caused functions addressed as .namespace.funct to not + work has been fixed. +10-11-22 A bug in which if nr was a name reference to an unset associative + array subscript, then ${!nr} did not output the subscript correctly + has been fixed. +10-11-18 A bug in which shcomp -n was not processing double quotes correctly + has been fixed. +10-11-18 Fixed a bug in which typeset -T foo; typeset -T could cause a + core dump. +10-11-17 Fixed a bug in which the error message for set -u could come out + garbelled. +10-11-17 Modified the parser so that typeset -a var=(...) no longer checks + the first index for aliases and reserved words. +10-11-17 A bug in which a subshell command consisted of only a for or until + command has been fixed. +10-11-16 Fixed a bug in which typeset -u would display namespace variables + as well as upper case variables. +10-11-16 A bug which could cause a core dump when unsetting a type variable + when there are references to type elements has been fixed. +10-11-15 A bug which could cause a core dump when unsetting a compound + array variable when there are references to array subscripts has + been fixed. +10-11-15 A bug in which using typeset -m to move an indexed array instance + to another array could cause the array to display incorrectly has + been fixed. +10-11-12 A bug in which the unset discipline function for a type is called + when the type is initialized has been fixed. +10-11-12 The sequences \< and \> are now preserved after patterns containing + ~(E) in ${var/pattern/string} expansions. +10-11-11 A bug in typeset -m when the variables were compound arrary instances + has been fixed. +10-11-10 A bug in output of a compound variable with types containing types + has been fixed. +10-11-10 Fixed ``name=value export [-p]'' to list environment. +10-11-09 shtests resets SIGPIPE to SIG_DFL for all tests. +10-11-09 Fixed a bug in expansion of $"..." when used in assignments. +10-11-09 Fixed a getaddrinfo() memory leak that didn't call freeaddrinfo() + after an interrupt. +10-11-08 Modified the behavior of set -u so that the shell terminates with + error message when when var is unset with ${!var} and ${#var}. +10-11-02 Fix a bug in which a signal received while in a subshell could be + ignored. +10-10-26 Fix a bug where terminal interrupt was ignored while in vi/emacs + edit search mode. +10-10-26 Fix $'a b'c to expand to 'ac'. +10-10-26 Provide user defined round() if not in <math.h>. +10-10-26 Fix bug where $((undefined_function(1))) dumped core. +10-10-22 Provide user defined iszero() if not in <math.h>. +10-10-22 Fixed a bug with BGX compile option that could cause the shell to + hang. +10-10-22 Fixed a bug with user define math function on systems for which + char is unsigned. +10-10-21 A bug in which function autoloaded in a function leaves a file open + has been fixed. +10-10-20 Modified the behavior of set -u so that the shell terminates when + when var is unset with ${var op string} when op is #, % or /. +10-10-20 Fixed a bug with the AUDIT option in which the audit file was not + not close-on-exec. +10-10-20 +Made a number of changes and fixes for the NAMESPACE compile option + which as added on 10-06-09 but some problems still remain. +10-10-15 Fixed a bug in which arithmetic functions (added on 10-03-24) did + not work when the function definition was in the same compound + command in which the function was referenced. +10-10-13 A bug in which creating an associative array of compound variables + with no members as an element of a compound variable did not work + has been fixed. +10-10-08 A bug in which killing the last command in a function defined + with function name, terminated the calling script has been fixed. +10-10-08 A bug which could cause a core dump if IFS is unset inside a function + has been fixed. +10-10-07 +To reduce unwanted side effects, invoking typeset without the export + option and without an assignment now causes the variables to be unset + if the variable is inherited from the environment. +10-10-06 The closing brace for ${ command } is now a token no matter what + character follows it. +10-10-04 The change for $'...' expansion on 10-08-09 did not expand parameters + contained in the error message and this has been fixed. +10-10-04 A bug in which a declaration of indexed array (-a_ in a type + definition would be displayed as a compound indexed array (-C -a) + has been fixed. +10-09-30 The C99 math function ldexp has been added. +10-09-30 A bug with two dimensional arrays with expansion of the form + ${ref[0..5]} where ref is a nameref to array[i] has been fixed. +10-09-29 A bug in which an eval with redirections invoked from a dot script + would not restore the file has been fixed. +10-09-29 A bug in which loading a function from FPATH could leave a file + descriptor open has been fixed. +10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being + evaluation. It allows fixed sized indexed arrays be to defined + using "typeset array[dim1][dim2]...[dimn]". Fixed sized arrays + are used the same way indexed arrays are. Currently, only fixed + arrays of fixed objects (float, int, and justifies objects) are + supported. +10-09-22 A bug which could cause an exception when a function with static + variables was redefined has been fixed. +10-09-21 A bug in the processing of (command&) which created a job in the + parent process has been fixed. +10-09-21 A for loop optimization bug with arithmetic expression evaluation + has been fixed. +10-09-21 A bug in which a recursive function containing a pipeline could + lead to an exception fixed after 8 levels of recursion has been + fixed. +10-09-18 A bug in which the count of elements in an array was wrong leading + to an exception has been fixed. +10-09-13 A bug which occurred when both xtrace and showme options where + specified in which the xtrace option disabled showme has been fixed. +10-09-13 A bug in which creating a reference to an array variable with any + elements could cause subsequent array elements to be treated as + compound variables has been fixed. +10-09-09 A bug which caused ((c.ar[x][y])) to be treated as a syntax error + has been fixed. +10-09-08 A bug in the processing of references to multidimensional arrays + in arithmetic expressions has been fixed. +10-09-08 A bug in the handling of multi-dimensional arrays which caused + the number of elements in each dimension to be incorrect has + been fixed. +10-09-07 The change for messages on 10-08-09 did not handle message in + assignments and this has been fixed. +10-09-07 A bug in the indentation of compound variables in arrays when + output with print -v has been fixed. +10-09-07 A rare bug with indexed arrays when assigned a null string that could + cause a core dump has been fixed. +10-09-03 A number of changes were made for jobs pools. +10-08-31 typeset -p was modified to output name references after other + variables so that the output could be used as input. +10-08-31 A bug with typeset -p in which variables with attributes but + without attributes were not displayed correctly has been fixed. +10-08-27 +When running a subshell, the current pool is unset. +10-08-27 A bug in which jobs started from within for or while lists in + interactive shells could generate completion messages has been fixed. +10-08-25 Fixed a couple of bugs related to job pools. +10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of + those names are handled by the shell. +10-08-24 A bug in the running of a compiled dot script in which only the + first command was executed has been fixed. +10-08-23 A bug which sometimes caused a core dump with a configure script + has been fixed. +10-08-20 A bug in command substitution which caused a configure script to + hang has been fixed. +10-08-19 Eliminated unnecessary ; from output of compound variable with + typeset -p. +10-08-17 Fixed a bug in command substitution in which under certain + circumstances a file whose size is a power of 2 plus one, and the last + character was not a new-line, could cause memory corruption. +10-08-13 +Added static discipline functions to type similar to C++ static + class functions. +10-08-11 A bug in time when applied to a pipeline in which the shell did + not wait for all elements of the pipeline to complete has been fixed. +10-08-11 Restored sh_fmtq() quoting to not quote NAME= in NAME=VALUE. +10-08-09 +Modified the expansion of message strings, $"...", so that they + are expanded each time they are referenced rather than expanding + them when the script is compiled or read in. +10-08-06 +The process id for jobs in job pools is now of the form poolname.n + where n is the jobid in that pool. Commands that accept job names + or numbers now understand names in this format. +10-08-05 A bug in which an assignment from within an arithmetic expression + inside a function would create a local variable has been fixed. +10-08-04 A bug in the expanding of variables whose names contain multibyte + characters has been fixed. +10-08-04 A bug which caused an exception when processing scripts compiled + with shcomp -n has been fixed. +10-08-02 Tests using very small buffer sizes uncovered a number of bug most + connected with here documents which have been fixed. +10-07-27 The format modifier , used for digit grouping with d and f formats + has been documented. +10-07-26 cd '' now produces and error rather than changing to the current + directory. +10-07-26 A bug in multi-byte locales which the last character of a + multi-byte character is a or pattern character which could occur + when the character was the last character of a command substitution + has been fixed. +10-07-23 Another bug in the processing of ${var:offset;len} in multi-byte + locales when len is larger than the number of characters has been + fixed. +10-07-23 Many coding changes have been made to eliminate most of the uses + of global variables in the shell code. +10-07-22 Fixed a bug in which discipline functions were not being invoked + when it was invoked as ref.discipline where ref was a name reference + to an array instance. +10-07-22 Fixed a bug in which discipline functions were not being invoked it + was invoked on a two dimensional array, i.e., arr[5][9].discipline. +10-07-19 Fixed a buffering problem which occurred when running a script with + ssh and the parent ssh process is killed. +10-07-14 Modified the parser to treat ((...)) inside [[...]] as ( (...) ) to + that it is a nested (...). +10-07-09 A bug in the handling of process substitution inside command + substitution as part of a pipeline has been fixed. +10-07-07 A bug in the output for compound variables containing + multi-dimensional arrays has been fixed. +10-07-06 ksh now recovers from changes made by bash to the history file without + loosing history commands. +10-06-25 A bug in which a large here document containing command substitutions + of a dynamically loaded function that contained a here document + could get truncated has been fixed. +10-06-24 If after executing a script found in FPATH, if a function, builtin, + or type name corresponding to that script is not defined, the shell + now outputs an error message and returns value 126. +10-06-23 Floating point functions that happened to return integer values + were being treated as if the function returned integers so that + integer division could be used instead of floating point division. +10-06-22 Fixed a bug in earlier ksh93u in which an arithmetic assignment to a + variable in the global scope would instead create a local variable if + the variable had an attribute but did not have a value. +10-06-18 Modified trap handling so that if the same signal is received when + executing the handler, it is deferred until the handler completes. +10-06-16 Fixed a bug in which ulimit -v was setting the the cpu limit + on Linux. +10-06-14 +The command 'typeset -T' now generates the list of type definitions + in a format that can be used as input to the shell. +10-06-09 Put in patch from Solaris for output quoting with %q. +10-06-09 +Made changes to the NAMESPACE compile option so that it now seems + to work. With this option, namespace <name> { command;} will + run command in the namespace .name so that all variables and + functions created by command are accessible outside the name + space via .name.var and .name.fun. Variables and functions that + are not in the namespace are not modified when running command. +10-06-07 Change most internal interfaces to take Sh_t* argument. +10-06-03 +Types can be loaded on first reference by putting definitions in + PFPATH. +10-06-03 +The shell is now able to parse commands which use type statements + before the typeset -T command to define the type executes. +10-06-03 A bug in the quoting for name reference declarations which did + not properly handle [ and ] in subscripts for associative arrays. +10-06-02 A bug in which a discipline function defined by a type instance to + override the default was not being registered has been fixed. +10-06-02 A bug in which read -C of an associative array of compound variables + was not working has been fixed. +10-06-02 A bug in which the error message for an unset parameter with set -u + did not contain the name of the variable has been fixed. +10-06-01 A bug in typeset -m for moving an indexed array instance to a variable + has been fixed. +10-06-01 A bug in which caused memory to be freed twice when unset was called + for an indexed array that had get or set disciplines has been fixed. +10-06-01 A bug in which the %b format of printf was not preserving NUL bytes + with has been fixed. +10-06-01 A bug in the handling of name references to array variables in + arithmetic expressions has been fixed. +10-05-28 Fixed bugs in changing attributes for two dimensional arrays. +10-05-28 Eliminated a few unreferenced variables and a reference to + uninitialized memory. +10-05-27 Rewrote the subshell code to avoid using pipes an many cases. +10-05-24 Fixed a bug which cause an exception when both -l and -s were + specified with typeset -i. +10-05-21 Inputting of three dimensional indexed arrays with ( ( (...)...)...) + was not working and has been fixed. +10-05-21 A bug in which adding the attributes -Ai to a variable via a name + reference could cause the value to display incorrectly has been fixed. +10-05-21 A bug in which using $var inside ((...)) did not work when var was + a hex float variable. +10-05-20 +The compile option SHOPT_EDPREDICT has been added. When this option + is on, as you type a line beginning with a # the following characters + are treated as a shell pattern and cause matching lines from the + history file to be displayed as a numbered list as you type. + You can scroll up and down this list or you can use <ESC>nTAB + to make this the current line (n defaults to 1 of omitted) or + <ESC>n<cr> to execute. +10-05-20 A bug which caused an exception when multiple levels of composite + functions in arithemtic expressions has been fixed. +10-05-19 <<< with an empty string no longer gives an error. +10-05-19 A bug in arithmetic evaluation when a name reference to an array + instance was used has been fixed. +10-05-14 A bug in which the shell treats a valid index array assignment, + typeset -a x=(foo (x=3;y=4) bar) as a syntax error has been fixed. +10-05-13 A bug in creating name references to associative array variable + after a lookup of one of its elements has been fixed. +10-05-12 Two bugs in the handling of function static type variables in + subshells have been fixed. One could cause an exception and the + other would leave side effects in the parent shell. +10-05-10 A bug in which static variables in functions were not being saved and + restored properly when running subshells has been fixed. +10-05-05 A bug in which print -v did not work correctly when an operand was an + indexed array element referring to a compound variable has been fixed. +10-05-05 A change to improve performance by special casing empty string + assignments to avoid repeated malloc() and free(). +10-05-05 A bug in which creating a name reference to a non-existent associative + array element would create the array element has been fixed. +10-05-04 A bug in which name references to static variables in the static + scope were not found has been fixed. +10-04-30 Do not use socketpair() on systems that implement ioctl(I_PEEK) + on pipes. +10-04-29 +When the current job pool is set, coprocess are run in a job pool. +10-04-28 A type defined with a member foo that is an associative array without + elements followed by an expansion ${bar.foo[a]} and an assignment + bar.foo[a]=b, no longer indicates that ${#bar.foo[@]} has 0 members. +10-04-27 Another bug in which a nested command substitution could hang if it + generated too much data has been fixed. +10-04-26 A type defined with a member that is an indexed array without elements + would behave as if the 0th element of each instance was defined after + a non-zero element was specified and this has been fixed. +10-04-26 A bug in which types defined in a subshell were not undefined when + the subshell completed has been fixed. +10-04-23 For file completion in commmand line editing, file names starting + with # are now escaped so that they are not treated as comments. +10-04-23 A bug in which ${t.var:=value}, where t is an instance of a type + variable, could assign value to the type variable rather than to + the type instance has been fixed. +10-04-23 +Added &| which can be used in place of | to have portions of a + pipeline executed in the pool. +10-04-22 +The .sh.pool variable was added for use with job pools. +10-04-22 A bug in which a nested command substitution could hang if it + generated too much data has been fixed. +10-04-20 A bug which corrupted one byte of memory when read was called with + reads that did not use a delimiter has been fixed. +10-04-19 The display of a compound variable with an embedded array with + attributes was sometimes not working correctly and has been fixed. +10-04-16 A bug in which attributes were not be propagated to elements in + an associative array has been fixed. +10-04-15 A bug which caused scripts containing user defined math functions to + fail to compile with shcomp has been fixed. +10-04-15 +Job pools have been added with the SHOPT_COSHELL compilation option. + A job pool allows a collection of background jobs to run either locally + or remotely and to be managed as a unit. The command '& name ...' + creates or uses a named job pool for subsequent background jobs. + kill, wait, and jobs allow the pool name as operands. +10-04-14 A bug in which a coprocess connection could terminate prematurely + when running a nested subshell has been fixed. +10-04-12 +Enumeration constants can be used in arithmetic expressions with the + ==, != and = operators when the left hand side is an enum variable + and the right hand side is an enumeration constant. +10-04-07 A bug in which setting the trap on CHLD to ignore could cause + an incorrect exit status has been fixed. +10-04-06 A bug in which LINENO was not incremented for a here-document when + the here-document word was followed by a comment has been fixed. +10-04-06 The optimization that execs the last process of a script rather + than creating a new process has been removed when a trap on + interrupt has been set. +10-04-06 Unsetting the 'C', 'A' or 'a' typeset attribute now produces an + error message rather than generating an exception. +10-04-06 A bug in which .sh.name contained the subscript and .sh.subscript + was empty in some cases with discipline functions on array instances + has been fixed. +10-04-05 A bug in the edit modes where preceding the interrupt character with + the literal next character did not work has been fixed. +10-04-05 A bug in the creation of type instances of arrays which could cause + an exception has been fixed. +10-03-30 A bug in the display of a compound variable containing an indexed + array of compound variables has been fixed. +10-03-24 +Arithmetic functions can be defined using the shell function syntax, + 'function .sh.math.name x y z{...}' , where name is the function name + invoked within ((...)) and x y z are long double arguments passed + as name references. y and z are used for functions with two and + three arguments respectively. The value of the function is the value + of the long double .sh.value variable when the function returns. +10-03-24 A bug in which integer division was mistakenly used when the + numerator was a binary operator with the first operand floating + point and the second integer, e.g. (.1**3)/3, has been fixed. +10-03-24 The >; file operator was modified so that the temporary file is + created in the same physical directory as file. +10-03-23 A warning message was added to sh -n when $var was used inside + ((...)) instead of var. +10-03-19 fmin was added to the list of math function on the man page. +10-03-19 Fixed the return value for unalias when the alias did not + exist. +10-03-19 A bug in which the SHLVL variable exported the value it had on + input rather than the incremented value has been fixed. +10-03-19 A bug which causes whence -q to go into an infinite loop has been + fixed. +10-03-19 Removed space between Stopped message and (SIGTTIN) and (SIGTTOUT). +10-03-17 Modified profile shell execution so that when builtins that + correspond to executable have extended attributes, they are + executed by pfksh instead of being treated as built-ins. +10-03-16 A bug in whence -a which produced duplicate lines of output has + been fixed. +10-03-16 A bug in the handling of process groups in monitor mode for + command substitutions has been fixed. +10-03-15 Fixed a bug in which read -u[fd] could cause the shell to core + dump when fd was greater than open_max. +10-03-15 +Modified the shell I/O so that the shell will not fail if the + ulimit for open_max is increased as part of the script. +10-03-12 A bug in which a here-document containing command substitutions + that contained here-documents did not process correctly has been + fixed. +10-03-12 A bug in which the terminal is not restored to canonical mode + after read times out when in a multibyte locale with no edit mode + enabled has been fixed. + +10-03-05 --- Release ksh93t+ --- +10-03-05 A variable unset memory leak has been fixed and tests/leaks.sh + has been added to verify the fix. +10-03-04 Documentation, comment, and diagnostic spelling typos corrected. +10-02-14 Fix sh_getenv() initialization to cooperate with the 3d fs. +10-02-12 A bug in which the get discipline function was not invoked for + associative array subscripts for unset array elements has been fixed. +10-02-12 A bug which could occur if the last line of a script was an eval + that executed multiple commands has been fixed. +10-02-02 A buffer overflow in read and another in binary type base64 + encoding were fixed. +10-01-20 A bug in the evaluation of arithmetic expression in which the + subscript was evaluated twice for $((foo[x++]++)) has been fixed. +10-01-19 A workaround for a double-free of a trap in both a subshell and its + parent has been added. +10-01-18 A bug in type handling of typeset -H has been fixed. +10-01-15 The "adding empty subscript" warning now only emitted with -x set. +10-01-01 A bug in the parser in which '$((case i in i):;esac);:))' was not + parsed correctly was fixed. +10-01-01 A bug in the parser in which '$(( 2 , 3.6 ))' dumped core for locales + with radix char , and thousands separator . has been fixed. +09-12-28 A bug in the handling of SIGCLD on systems that generated SIGCLD + while blocked waiting for process to complete has been fixed. +09-12-24 ast setlocale() reworked to differentiate env var changes from user + override. +09-12-18 A bug with the SHOPT_BGX option set which disabled traps for signals + < SIGCHLD when a trap for a signal > SIGCHLD was set has been fixed. +09-12-18 A bug where [[ -v var ]] was incorrect for some variables (including + LC_* vars) has been fixed. +09-12-15 A bug that produced a syntax error when a multibyte character + straddled a buffer boundary has been fixed. +09-12-11 A bug where the subscript of an unset variable was not evaluated has + been fixed. +09-12-09 A bug where shcomp dumped core on certain syntax errors has been fixed. +09-12-07 A bug where a parent shell environment var reset in a subshell removed + the value in subsequent children of the parent shell has been fixed. +09-12-04 A bug in which in some cases a trap in a function executed in + a subshell could trigger twice has been fixed. +09-12-03 A bug in which SHLVL exported with some attributes could cause + the shell to abort at startup has been fixed. +09-12-02 A bug with pipefail in which the shell could hang waiting for the + writer to complete before the last reader command has been fixed. +09-11-30 A bug in which a trap could be inherited by the first element of + a pipeline when the command had more than 63 arguments that did + not contain any macro expansions has been fixed. +09-11-19 When read from a terminal was called from with a while or for loop, + and an edit mode was on, a backspace or erase no longer will + overwrite the prompt. +09-11-17 +Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2. +09-11-17 Inside a function, typeset foo.bar will bind foo to global variable + foo if local variable foo does not exist, instead of creating a + local variable. +09-11-17 "read -n1" from the terminal has been fixed to read exactly one character. +09-11-11 Job control now works for subshell commands, (...). +09-11-11 If set -e is on for an interactive shell errors in special builtins + now cause the shell to exit. +09-11-11 A bug in which an interrupt handler processed during the read builtin + when IFS did not contain a new line has been fixed. +09-11-09 A bug in which a variable that has been unset in a subshell and then + exported from that subshell does not show up in the environment + has been fixed. +09-11-02 ``,2'' is now a valid numeric constant for locales with + decimal_point=','. +09-11-02 A bug where "return" in .profile did not restore the shell state + has been fixed. +09-10-31 A bug that corrupted saved exit status when pids wrapped around has + been fixed. +09-10-26 A bug in { LANG LC_ALL LC_category } ordering has been fixed in -last. +09-10-16 A bug where notification to libast that the environment has changed + has been fixed. +09-10-12 A bug in which a function loaded in a subshell could leave side + effects in the parent shell has been fixed. +09-10-12 A bug in converting a printf %d operand to a number when the operand + contains multiple subscripts for the same variable has been fixed. +09-10-09 A bug in the handling of the escape character in directory prefixes + in command completion has been fixed. +09-10-09 $PATH processing has been changed to delay dir stat() and .paths + lookup until the directory is needed in the path search. +09-09-28 Call the ast setlocale() intercept on unset too. +09-09-24 A bug in which LANG=foo; LC_ALL=foo; unset LC_ALL; did not revert + LC_CTYPE etc. to the LANG value has been fixed. +09-09-17 A bug in which unsetting SVLVL could cause a script invoked by + name without #! to core dump has been fixed. +09-09-16 A bug in which a pipeline in a here-document could hang when the + pipefail option was on has been fixed. +09-09-09 A bug in the processing of line joining in here documents which + occurred when a buffer began with <escape><new-line> has been fixed. +09-09-09 +A leading ; with commands in a brace group or parenthesis group + no longer causes an error. It now is used for the "showme" option. +09-09-09 A bug in which a subshell containing a background process could + block until the background process completed has been fixed. +09-09-04 A bug in handing ${var[sub]}, where var is a nameref has been fixed. +09-09-03 A bug which caused an index array to have the wrong number of elements + when it was converted from a compound variable by adding an another + element has been fixed. +09-09-03 Specifying export for a compound variable now generates an error. +09-09-02 $"..." localizations strings are no longer recognized inside `...`. +09-09-01 A bug in the for loop optimizer in the handling of type static + variables has been fixed. +09-09-01 An error message is not displayed when * and @ are used as subscripts. +09-09-01 Several bugs in the processing for types that included an associative + array of another type has been fixed. +09-09-01 A bug in the tracing of [[ a < b ]] and [[ a > b ]] has been fixed. +09-08-26 The .sh.file variable was not being set for a script that was run + by name and didn't start with #! and this has been fixed. +09-08-25 A bug in which a function called to deeply from command substitution + did not display an error message has been fixed. +09-08-24 +When processing profiles, ksh93 now violates the POSIX standard and + treats &> as a redirection operator similar to bash. +09-08-23 A bug in the handling of the trap on SIGPIPE that could lead to a + memory fault has been fixed. +09-08-21 A bug in the handling of the comma operator in arithmetic expressions + that could cause a core dump on some systems has been fixed. +09-08-20 A bug in which a compound variable containing an array of a type + that doesn't have any elements now expands correctly. +09-08-19 A bug which disabled function tracing inside a function after + a call to another function has been fixed. +09-08-19 A bug in which initializing a compound variable instance to another + compound variable by name has been fixed. +09-08-18 A bug in which compound variable instances could be lost after + an instance that invoked a type method discipline has been fixed. +09-08-18 A bug in which a discipline function for a type applied to an + array instance when invoked in a function ignored the subscript + has been fixed. +09-08-18 A scoping error with variables in arithmetic expression with + type variables when reference with a name reference has been fixed. +09-08-10 Several memory leaks were fixed primarily related to subshells. +09-08-06 A bug in which setting the trap on CHLD to ignore could cause + a script to hang has been fixed. +09-07-08 A bug in the processing of name reference assignments when it + contained pattern expansions with quoting has been fixed. +09-06-22 +The default width for typeset -X has been changed so that there + should be no loss of precision when converting to a string. +09-06-19 A bug in the printing of array elements for binary variables with + printf %B has been fixed. +09-06-19 A bug which caused a core dump with trap DEBUG set with an array + assignment with no elements has been fixed. +09-06-19 A bug with read with typeset -b -Z<num> has been fixed. +09-06-19 Two bugs related to read -b for array variables has been fixed. +09-06-19 A bug with typeset for compound variables containing arrays of + compound variables has been fixed. +09-06-18 A bug in appending a compound variable to a an indexed array of + compound variables has been fixed. +09-06-18 A bug which occurs when appending a compound variable to an indexed + array element has been fixed. +09-06-18 Setting VISUAL to a value other than one ending in vi or emacs will + no longer unset the edit mode. +09-06-17 A bug in typeset -m when moving a local compound variable to a + global compound variable via a name reference has been fixed. +09-06-17 A bug in appending to nodes of an array of compound variables when + addressing them via nameref has been fixed. +09-06-17 A bug in typeset -p var, when var is an array of compound variables + in which the output only contained on array element has been fixed. +09-06-17 The prefix expansion ${!y.@} now works when y is a name + reference to an element of an array. +09-06-16 Traps on signals that are ignored when the shell is invoked + no longer display. Previously they were ignored as required but + would be listed with trap -p. +09-06-12 A bug in vi edit mode in which hitting the up arrow key at the + end of a line longer than 40 characters which caused a core dump + has been fixed. +09-06-11 A bug in which "eval non-builtin &" would create two processes, + one for the & and another for non-builtin has been fixed. +09-06-08 When var is an identifier and is unset, ${var} no longer tries to + run command substitution on the command var. +09-06-08 +Process substitution arguments of the form <(command) can now be + used following the < redirection operator to redirect from command. +09-05-13 A bug in which redirections of the form 2>&1 1>&5 inside command + substitution could cause the command substitution to hang has been + fixed. +09-05-12 To conform with POSIX, the -u option only checks for unset variables + and subscript elements rather than checking for all parameters. +09-05-12 A bug which could cause a core dump when a variable whose name + begins with a . was referenced as part of a name reference inside + a function has been fixed. +09-05-01 A bug that caused a core dump when SIGWINCH was received and + both vi and emacs mode were off has been fixed. +09-04-22 +Default alias compound='typeset -C' added. +09-04-15 A bug that caused ${...;} to hang for large files has been fixed. +09-04-08 A change was made in the -n option which printed out an incorrect + warning with <>. +09-04-07 The emacs edit command M-_ and M_. and the vi command _ was fixed + to handle the case there there is no history file. +09-04-05 A bug in handling new-lines with read -n has been fixed. +09-04-05 The ENV variable defaults the the file named by $HOME/.kshrc rather + then to the string $HOME/.kshrc. +09-03-31 A bug in which a nested command substitution with redirections could + leave a file descriptor open has been fixed. +09-03-24 +ksh now only uses the value of the _ variable on startup if it can + verify that it was set by the invoking process rather than being + inherited by some other ancestor. +09-03-24 +When ksh is invoked without -p and ruid!=euid, and the shell is + compiled without SHOPT_P_UID or ruid<SHOPT_P_UID, the shell now + enables the -p option. The previous version instead set the + euid to the ruid as it does for set +p. +09-03-24 +When SHOPT_P_UID is defined at compile time and the shell is started + without -p and ruid!=euid and ruid>=SHOPT_P_UID then euid is set + to ruid. A bug that did the wrong test (ruid<SHOPT_P_UID) was fixed. +09-03-17 +The sleep(1) builtin now accept and ISO 8601 PnYnMnDTnHnMnS + duration or date(1) compatible date/time operand. +09-03-10 If a variable that was left or right justified or zero-filled was + changed with a typeset statement that was left or right justified + or zero-filled, then the original justification no longer affects + the result. +09-03-10 A bug in the handling of traps when the last command in a script + is a subshell grouping command has been fixed. +09-03-03 A bug in which an expansion of the form ${!prefix@} could generate + an exception after the return from a function has been fixed. +09-02-02 A bug in restricted mode in which the value of ENV could be + changed from within a function has been fixed. +09-02-02 A bug in which an erroneous message indicating that a process + terminated with a coredump has been fixed. +09-02-02 The exit status when exit was called without an argument from + a signal handler was incorrect and has been fixed. +09-02-02 A bug in which a function autoloaded in a subshell could cause + a core dump when the subshell completed has been fixed. +09-02-02 A bug in which 2>&1 inside a command substitution wasn't working + correctly has been fixed. +09-02-02 A bug in the call stack of arithmetic function with 2 args + returning int has been fixed. +09-01-30 A bug in which 'eval print \$0' inside a function was giving the + wrong value for $0 has been fixed. +09-01-28 A bug in which a command substitution could return an exit status + of 127 when the pipefail option is enabled has been fixed. +09-01-26 ksh93 now generates an error message if you attempt to create + a global name reference to a local variable. +09-01-26 +The [[ -v var ]] operator was modified to test for array elements. +09-01-23 +The redirection operator <>; was added. It is similar to <> + except that if the command it is applied to succeeds, the file + is truncated to the offset at the command completion. +09-01-23 The default file descriptor for <> was changed to 1. +09-01-20 A bug in which the exit status specified in an exit trap was + not used when a process terminated with a signal has been fixed. +09-01-19 A bug in which a signal whose default action is to terminate + a process could be ignored when the process is running a sub-shell + has been fixed. +09-01-19 A bug in which sending SIGWINCH to a process that reads from a pipe + could cause a memory fault has been fixed. +09-01-16 +The -R unary operator was added to [[...]] and test to check whether + a variable is a name reference. +09-01-16 +The -v unary operator was added to [[...]] and test to check whether + a variable is set. +09-01-14 The unset built-in was modified to return 0 exit status when + unsetting a variable that was unset to conform with the POSIX + standard. +09-01-14 The unset built-in was modified to continue to unset variables + after encountering a variable that it could not unset to + conform to the POSIX standard. +09-01-14 The parameter expansion ${x+value} no longer expands the value of + the variable x when determining whether x is set or not. +09-01-13 A bug in which background jobs and pipelines that were not waited + for could, in rare instances, cause the shell to go into an infinite + loop or fail has been fixed. +09-01-06 A bug in indexed arrays of compound variables in which referencing + non-existent sub-variable in an arithmetic expression could cause + the sub-variable to be created has been fixed. +09-01-05 A bug in which the character did not escape extended regular + expression pattern characters has been fixed. +08-12-24 A bug in which killing the last element of a pipe did not cause + a write to the pipe to generate a SIGPIPE has been fixed. +08-12-19 A bug which could cause command substitution to hang when the + last element of a pipeline in a command substitution was a built-in + and the output was more that PIPE_BUFF. +08-12-18 A bug which occurs when a here documented marker embedded in a + command substitution occurs on a buffer boundary has been fixed. +08-12-17 A bug in the output of typeset -p for variables that had attributes + but did not have a value has been fixed. +08-12-16 A bug in which a name reference to a name reference variable that + references an array element has been fixed. +08-12-16 A bug in which a variable given both the -A and -C attribute along + with an initial assignment didn't work correctly has been fixed. +08-12-10 The [[ -t fd ]] test was fixed to handle fd>9. +08-12-10 A bug where function stack misalignment could cause a bus error + has been fixed. +08-12-09 Command completion was changed to use to quote special characters + instead of quoting the argument in single quotes. +08-12-07 A bug in typeset -m which occurred when the target node was an + associative array element has been fixed. +08-12-07 A timing bug on some systems (for example darwin), that could + cause the last process of a pipeline entered interactively to fail + with an "Exec format error" has been fixed. +08-12-04 +SHOPT_BGX enables background job extensions. Noted by "J" in + the version string when enabled. (1) JOBMAX=n limits the number + of concurrent & jobs to n; the n+1 & job will block until a + running background job completes. (2) SIGCHLD traps are queued + so that each completing background job gets its own trap; $! is + set to the job pid and $? is set to the job exit status at the + beginning of the trap. (3) sleep -s added to sleep until the time + expires or until a signal is delivered. +08-12-04 The sign of floating point zero is preserved across arithmetic + function calls. +08-12-04 A bug that caused print(1) to produce garbled stdout/stderr + output has been fixed. +08-12-04 A bug in which printf "%d "'<euro>'" did not output the + numerical value of the EURO symbol, 8354, has been fixed. +08-11-24 + /dev/fd* and /dev/std* redirections are first attempted with + open() to preserve seek semantics; failing that the corresponding + file descriptors are dup()'d. +08-11-20 A bug which could cause a core dump if a function compiled with + shcomp was found has been fixed. +08-11-20 A bug in which jobs were not cleared from the jobs table for + interactive shells when the pipefail option is on has been fixed. +08-11-11 A bug in which a field that was unset in a type definition and later + set for an instance could appear twice when displaying the variable + has been fixed. +08-11-11 A bug in which running a simple command & inside a function would + not return the correct process id has been fixed. +08-11-10 A bug in which the exit status of a command could be lost if the pid + was that of the most recent command substitution that had completed + has been fixed. +08-11-10 The maximum depth for subshells has been increased from 256 to 65536. +08-11-06 A bug which could cause a core dump when the _ reference variable was + used as an embedded type with a compound assignment has been fixed. + +08-10-31 --- Release ksh93t --- +08-10-31 Variable scoping/initialization bugs that could dump core were fixed. +08-10-24 The lexer now accepts all RE characters for patterns prefixed + with a ksh ~(...) option expression. +08-10-24 +For ${var/pat/sub} in sub expands to the text matched by pat. +08-10-18 A bug in array scoping that could dump core has been fixed. +08-10-10 read -n and -N fixed to count characters in multibyte locales. +08-10-10 A bug that mishandled _.array[] type references has been fixed. +08-10-09 +${.sh.version} now contains a concatenation of the following (after + 'Version') denoting compile time features: + A SHOPT_AUDIT + B SHOPT_BASH + L SHOPT_ACCT + M SHOPT_MULTIBYTE +08-10-09 A bug that caused subshell command substitution with redirection + to hang has been fixed. +08-10-08 Output errors, other than to stderr, now result in a diagnostic. +08-10-08 ksh93 now supports types that contain arrays of other types as + members. Earlier versions core dumped in this case. +08-10-05 A bug which caused the shell to emit a syntax error for an arithmetic + statement of the form (( var.name[sub] = value)) has been fixed. +08-10-01 A bug that caused subshell command substitution to hang has + been fixed. +08-09-29 When the -p export option of typeset is used with other options, + only those variables matching the specified options are displayed. +08-09-29 When the shell reads the environment and finds variables that are + not valid shell assignments, it now passes these on to subsequent + commands rather than deleting them. +08-09-29 A bug in the display of compound variables containing an indexed + array of compound variables has been fixed. +08-09-29 A bug in the display of compound variables containing an associative + array with a subscript containing a . in the name has been fixed. +08-09-26 A core dump in the subshell environment restore has been fixed. +08-09-24 $(...) has been fixed to properly set the exit status in $?. +08-09-23 $(<...) with IFS=$'n' has been fixed to retain all but the last + of multiple trailing newlines. +08-09-23 The -p option to typeset when used with other attributes, restricts + the output to variables with the specified attributes. +08-09-22 A bug that sometimes lost the exit status of a job has been fixed. +08-09-21 A bug that retained trailing command substitution newlines in + cases where the command caused the shell to fork has been fixed. +08-09-19 type, whence -v, and command -v were fixed to comply with POSIX + by writing 'not found' diagnostics to the standard error. +08-09-18 test and [...] were fixed to comply with POSIX in the case + of test '(' binop ')' where binop is a valid binary test operator. +08-09-16 +If a method discipline named create is specified when defining a + type, this function will be called when an instance is created. +08-09-15 +The variable _ is now set as a reference to the compound variable + when defining a compound variable or a type. +08-09-10 The shell now prints an error message when the type name specified + for an indexed array subscript is not an enumeration type. +08-09-10 A bug in which a subshell that spawned a background process could + loose output that was produced after the foreground completed + has been fixed. +08-09-10 A timing bug on some systems that could cause coprocesses started by a + subshell to not clean up and prevent other coprocesses has been fixed. +08-09-09 The typeset -m option is now able to rename array elements from + the same array. +08-09-09 The exit status of 2 from the DEBUG trap causes the next command + to be skipped. An exit value of 255 from a DEBUG trap called from + a function causes the function to return. +08-09-08 A bug in which a coprocess created in a subshell that did not + complete when the subshell terminated could prevent a coprocess + from being created in the parent shell has been fixed. +08-09-05 An assignment of the form name1=name2 where name1 and name2 + are both compound variables causes name1 to get a copy of name2. + name1+=name2 causes name2 sub-variables to be appended to name1. +08-09-05 A bug in which unsetting a compound variable did not unset all + the sub-variables has been fixed. +08-09-01 A bug in the subshell cleanup code that could cause SIGSEGV has + been fixed. +06-08-26 +The SHLVL variable which is an environment variable used by bash + and zsh that gets incremented when the shell starts. +08-08-25 +For an indexed array, a negative subscript now refers to offsets + from the end so that -1 refers to the last element. +08-08-24 An alignment error for shorts on 64 bit architectures has been fixed. +08-08-22 If oldvar is a compound variable, typeset -C newvar=oldvar creates + newvar as a copy of oldvar. +08-08-19 +The ALRM signal no longer cause the sleep builtin to terminate. +08-08-13 When used in an arithmetic expression, the .sh.version variable + now produces a number that will be increasing for each release. +08-08-11 A bug in which type instantiation with a compound assignment in + a dot script in which the type is defined has been fixed. +08-08-07 +The -m option has been added to typeset to move or rename a + variable. Not documented yet. +08-08-06 A bug in read when used in a loop when a prompt was specified + when reading from a terminal has been fixed. +08-08-01 A bug with the pipefail option in which a nested pipeline could + cause an asynchronous command to block has been fixed. +08-08-01 A for loop optimizer bug that treats .sh.lineno as an invariant + has been fixed. +08-07-30 A bug in which expanding compound variable that had a get discipline + from with a here document could cause a syntax error has been fixed. +08-07-18 A bug in which a nameref caused a local variable to be created + rather than binding to an existing variable in the global scope + has been fixed. +08-07-17 A bug which occurred when a nameref was created from within a + function that was part of a pipeline has been fixed. +08-07-14 +The compile option SHOPT_STATS was added. With this option the + compound variable .sh.stats keeps usage statistics that could help + with performance tuning. +08-07-10 +The output of set now always uses a single line for each variable. + For array variables, the complete set of values is now displayed. +08-07-09 +The typeset -C option can be used with arrays to indicate that + each element should default to a compound variable. +08-07-08 +The %B format now outputs compound variables and arrays. The + alternate flag # can be used to cause output into a single line. +08-07-03 When the window change signal, WINCH, is received, the current + edit line is redrawn in place. +08-07-01 A bug in the handling of shared variables when inside an embedded + type has been fixed. +08-06-29 A bug in multiline edit mode which occurred when the prompt length + was three characters or less has been fixed. +08-06-23 A bug in which the SIGCLD was not be triggered when background + jobs completed has been fixed. +08-06-23 _KSH_VERSION added as a name reference to .sh.version. +08-06-20 type now outputs 'special builtin' for special builtins. +08-06-19 A couple of bugs in multi-dimensional arrays have been fixed. +08-06-19 A bug in which a syntax error in a dot script could generated + a syntax error in the next subsequent command has been fixed. +08-06-17 Reduced the maximum function call depth to 2048 to avoid exceptions + on some architectures. +08-06-16 A bug in which printf "%B" could generate an exception when the + specified variable was not set has been fixed. +08-06-16 +When typeset -p is followed by variable names, it now displays + the attributes names and values for the specific names. +08-06-14 A bug that could effect the drawing of the screen from multiline + emacs or gmacs mode when walking up the history file has been fixed. +08-06-13 A bug in which a compound variable defined in a subshell could + have side effects into the parent shell has been fixed. +08-06-13 A number of bugs related to using .sh.level to set the stack from + for DEBUG traps have been fixed. +08-06-13 +The .sh.lineno variable has been added. When .sh.level is changed + inside a DEBUG trap, the .sh.lineno contains the calling line number + for the specified stack frame. +08-06-13 The .sh.level variable has been documented and now works. +08-06-11 +The -C option has been added to read for reading compound command + definitions from a file. +08-06-11 +The . command is now permitted inside a compound command definition. + The dot script can contain declaration commands and dot commands. +08-06-09 +Add -C option to typeset so that typeset -C foo, is equivalent + to foo=(). +08-06-09 Added -n warning message for typeset option orderings that are valid + with ksh88 but not valid with ksh93, for example Lx5. +08-06-09 A bug in which the return value for an assignment command containing + a command substitution with that failed was zero when the assignment + contained redirections has been fixed. +08-06-09 A bug in the quoting of $ inside a ERE pattern ~(E)(pattern) + has been fixed. +08-06-06 A bug when processing `` command substitution with the character + sequence \$' has been fixed. +08-06-02 +When defining a type, the typeset -r attribute causes this field + to be required to be specified for each instance of the type and + does not allow a default value. +08-06-02 Several bugs in which compound variables were modified by + subshells have been fixed. +08-05-22 +The ceil function has been added to the math functions. +08-05-21 A bug in which a name reference defined in a function and passed + as an argument to another function could cause an incorrect binding. +08-05-21 A bug in freeing compound variables that are local to functions + has been fixed. +08-05-19 +The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} + to expand to the value (or subscripts) for array between sub1 and + sub2 inclusive. For associative arrays, the range is based on + location in the POSIX locale. The .. must be explicit and cannot + result from an expansion. +08-05-15 The trap on SIGCLD is no longer triggered by the completion of + the foreground job as with ksh88. +08-05-14 A bug in the implementation of the editing feature added on + 07-09-19 in emacs mode has been fixed. +08-05-12 A bug in processing the test built-in with parenthesis has been + fixed. +08-05-12 The unset built-in now returns non-zero when deleting an array + subscript that is not set. +08-05-08 +Changing the value of HISTFILE or HISTSIZE will cause the old + history file to be close and reopened with the new name or size. +08-05-08 When FPATH is changed functions that were found via a path search + will be searched for again. +08-05-08 A parser bug in which reserved words and labels were recognized + inside compound indexed array assignment after a new-line has + been fixed. +08-05-07 A bug in getopts when handling numerical option arguments has + been fixed. +08-05-07 +The typeset -S option was added for variables outside type + definitions to provide a storage class similar to C static + inside a function defined with function name. When outside + type definitions and outside a function, the -S option cause + the specified variable so be unset before the assignment and + before the remaining attributes are supplied. +08-05-07 A bug that affected the cursor movement in multiline mode when + a character was deleted from near the beginning of the any + line other than the first. +08-05-01 In multiline edit mode, the refresh operation will now clear + the remaining portion of the last line. +08-05-01 A bug in computing prompt widths for the edit modes for prompts + with multibyte characters has been fixed. +08-05-01 A bug in the multiline edit mode which could cause the current + line to be displayed incorrectly when moving backwards from third + or higher line to the previous line has been fixed. +08-05-01 A bug in which options set in functions declared with the function + name syntax were carried across into functions invoked by these + functions has been fixed. +08-04-30 A bug which could cause a coprocess to hang when the read end + is a builtin command has been fixed. +08-04-30 +The emacs and vi editors have been modified to handle window + change commands as soon as they happen rather than waiting for + the next command. +08-04-28 A bug in which ${!x} did not expand to x when x was unset has been + fixed. +08-04-27 A bug in which the assignment x=(typeset -a foo=([0]=abc)) created + x.foo as an associative array has been fixed. +08-04-25 A bug in which $# did not report correctly when there were more + than 32K positional parameters has been fixed. +08-04-04 Choose the name _ as the sub-variable that holds type or instance + specific data used by discipline functions. +08-03-27 A bug in which the terminal group was not given back to the parent + shell when the last part of a pipeline was handled by the parent shell + and the other parts of the pipeline complete has been fixed. + The symptom was that the pipeline became uninterruptable. +08-03-25 A bug in restricted mode introduced in ksh93s that caused scripts + that did not use #! to executed in restricted mode has been fixed. +08-03-25 A bug in which the pipefail option did not work for a pipeline + within a pipeline has been fixed. +08-03-24 A bug in which OPTIND was not set correctly in subshells has + been fixed. +08-03-24 A bug which could cause a memory exception when a compound variable + containing an indexed array with only element 0 defined was expanded. +08-03-20 A bug in which ${!var[sub].*} was treated as an error has been fixed. +08-03-20 Associative array assignments of the form ([name]=value ...) + now allow ; as well as space tab and new line to separate elements. +08-03-18 A buffering problem in which standard error was sometimes + not flushed before sleep has been fixed. +08-03-17 A bug in which a signal sent to $$ while in a subshell would be + sent to the subshell rather than the parent has been fixed. +08-03-17 + A --default option added to set(1) to handle set +o POSIX semantics. + set --state added as a long name alias for set +o. +08-03-14 A bug in which using monitor mode from within a script could + cause the terminal group to change has been fixed. +08-03-10 The new ${...} command substitution will treat the trailing } + as a reserved word even if it is not at the beginning of a command, + for example, ${ date }. +08-03-10 If the name of the ENV begins with /./ or ././ then the + /etc/ksh.kshrc file will not be executed on systems that support + this interactive initialization file. +08-03-07 A bug in which ksh -i did not run the ENV file has been fixed. +08-03-07 A bug in which ulimit did not always produce the same output as + ulimit -fS has been fixed. +08-03-04 A bug in multiline mode in emacs and vi mode which could cause the + cursor to be on the wrong line when interrupt was hit has been fixed. +08-03-03 The change made in ksh93s+ on 07-06-18 in which braces became + optional for ${a[i]} inside [[...]] was restored in the case + where the argument can be a pattern. +08-03-03 A bug in which creating a name reference to an associative array + instance would fail when the subscript contained characters [ or + ] has been fixed. +08-02-29 +The redirection operator >; has been added which for non-special + files, generates the output in a temporary file and writes the + specified file only of the command has completed successfully. +08-02-15 A bug in ${var/pattern/string} for patterns of the form ?(*) and +(*) + has bee fixed. +08-02-07 A bug in which test \( ! -e \) produced an error has been fixed. +08-02-14 +The typeset -a option can now optionally be followed by the name + of an enumeration type which allows subscripts to be enumerations. +08-02-14 +The enum builtin which creates enumeration types has been added. +08-02-12 The backoff logic when there are no more processes has been fixed. +08-02-07 The -X option has been added to typeset. The -X option creates + a double precision number that gets displayed using the C99 %a + format. It can be used along with -l for long double. +08-01-31 The -T option to typeset has been added for creating typed + variables. Also the -h and -S options have been added to + typeset that are only applicable when defining a type. +08-01-31 The prefix expansion operator @ has been added. ${@name} + expands to the type of name or yields the attributes. +07-11-15 A bug in the macro expander for multibyte characters in which + part of the character contains a file pattern byte has been fixed. +07-10-03 A bug in which : was not allowed as part of an alias name has been + fixed. +07-09-26 A bug in which appending a compound variable to a compound variable + or to an index array didn't work has been fixed. +07-09-19 In both emacs and vi edit mode, the escape sequence \E[A (usually + cursor up, when the cursor is at the end of the line will fetch + the most recent line starting with the current line. +07-09-18 The value of ${!var} was correct when var was a reference to an + array instance. +07-09-18 The value of ${!var[sub]} was not expanding to var[sub] and this + was fixed. It also fixed ${name} where name is a name reference + to var[sub]. +07-09-18 +It is now legal to create a name reference without an initialization. + It will be bound to a variable on the first assignment. +07-08-30 +A discipline function can be invoked as ${x.foo} and is equivalent + to ${ x.foo;} and can be invoked as x.foo inside ((...)). +07-07-09 A bug in which typeset -a did not list indexed arrays has been + fixed. +07-07-03 +The command substitution ${ command;} has been added. It behaves + like $(command) except that command is executed in the current + shell environment. The ${ must be followed by a blank or an + operator. + +08-04-17 --- Release ksh93s+ --- +08-04-17 A bug in which umask was not being restored correctly after a + subshell has been fixed. +08-04-15 A bug in which sending a STOP signal to a job control shell started + from within a shell function caused cause the invoking shell to + terminate has been fixed. +08-04-11 A bug which caused $(exec > /dev/null) to go into an infinite loop + has been fixed. +08-03-27 A bug in which typeset -LZ was being treated as -RZ has been fixed. +08-03-06 A bug with ksh -P on systems that support the the profile shell, + in which it would exit after running a non-builtin has been fixed. +08-01-31 A bug in which command substitution inside ((...)) could cause + syntax errors or lead to core dumps has been fixed. +08-01-17 A bug in which discipline functions could be deleted when invoked + from a subshell has been fixed. +08-01-17 A bug in which a command substitution consisting only of + assignments was treated as a noop has been fixed. +08-01-17 A bug in which discipline functions invoked from withing a + compound assignment could fail has been fixed. +08-01-16 Incomplete arithmetic assignments, for example ((x += )), now + generate an error message. +08-01-16 A bug in which a set discipline defined for a variable before + an array assignment could cause a core dump has been fixed. +08-01-03 A bug in on some systems in which exit status 0 is incorrectly + returned by a process that catches the SIGCONT signal is stopped + and then continued. +07-12-13 A race condition in which a program that has been stopped and then + continued could loose the exit status has been fixed. +07-12-12 Code to check for file system out of space write errors for all + writes has been added. +07-12-11 A bug in the macro expander for multibyte characters in which + part of the character contains a file pattern byte has been fixed. +07-12-06 A bug in the emacs edit mode when multiline was set that output + a backspace before the newline to the screen has been fixed. +07-12-04 A bug in which using <n>TAB after a variable name listing expansion + in the edit modes would cause the $ to disappear has been fixed. +07-11-28 A bug in which setting IFS to readonly could cause a subsequent + command substitution to fail has been fixed. +07-11-27 A work around for a gcc 4.* C99 "feature" that could cause a job + control shell to go into an infinite loop by adding the volatile + attribute to some auto vars in functions that call setjmp(). +07-11-27 A bug in which the shell could read ahead on a pipe causing the + standard input to be incorrectly positioned has been fixed. +07-11-27 A bug in which compound variable UTF-8 multibyte values were not + expanded or traced properly has been fixed. +07-11-21 A bug where an unbalanced '[' in a command argument was not treated + properly has been fixed. +07-11-15 A bug in which compatibility mode (no long option names) getopts(1) + incorrectly set the value of OPTARG for flag options has been fixed. +07-11-15 A bug in which "hash -- name" treated "--" as an invalid name operand + has been fixed. +07-11-15 typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility. +07-11-15 A bug in which the umask builtin mis-handled symbolic mode operands + has been fixed. +07-11-15 Bugs in which shell arithmetic and the printf builtin mis-handled the + signs of { -NaN -Inf -0.0 } have been fixed. +07-11-15 +The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range + of signals, determined at runtime, are now supported. +07-11-15 A bug in which creating an index array with only subscript 0 created + only a simple variable has been fixed. +07-11-14 A bug in which appending to an indexed array using the form + name+=([sub]=value) could cause the array to become an associative + array has been fixed. +07-11-14 A bug in which typeset without arguments could coredump if a + variable is declared as in indexed array and has no elements has + been fixed. +07-11-14 A bug in which creating a local SECONDS variable with typeset in + a function could corrupt memory has been fixed. +07-11-14 A bug which could cause a core dump when a script invoked by name + from a function used compound variables has been fixed. +07-11-05 A bug in which printf %d "'AB" did not diagnose unconverted characters + has been fixed. +07-11-05 printf %g "'A" support added for all floating point formats. +07-11-01 A bug in which typeset -f fun did not display the function definition + when invoked in a subshell has been fixed. +07-10-29 The sleep builtin was fixed so that all floating point constants + are valid operands. +07-10-10 A bug in which the locale was not being restored after + LANG=value command has been fixed. +07-09-20 A bug in which a nameref to a compound variable that was local + to the calling function would not expand correctly when displaying + is value has been fixed. +07-09-19 A bug which cause cause a core dump if .sh.edchar returned + 80 characters or more from a keyboard trap has been fixed. +07-09-14 A bug in which could cause a core dump when more than 8 file + descriptors were in use has been fixed. +07-09-10 A bug in which creating a name reference to an instance of + an array when the array name is itself a reference has been fixed. +07-09-10 The file completion code has been modified so that after an = in + any word, each : will be considered a path delimiter. +07-09-06 A bug in which subprocess cleanup could corrupt the malloc() heap + has been fixed. +07-08-26 A bug in which a name reference to an associative array instance + could cause the subscript to be evaluated as an arithmetic expression + has been fixed. +07-08-22 A bug in which the value of an array instance was of a compound + variable was not expanded correctly has been fixed. +07-08-14 A bug which could cause a core dump when a compound assignment was + made to a compound variable element with a typeset -a attribute + has been fixed. +07-08-08 A bug in which a trap ignored in a subshell caused it to be + ignored by the parent has been fixed. +07-08-07 A bug in which the set command would generated erroneous output + for a variable with the -RZ attribute if the variable name had been + passed to a function has been fixed. +07-08-02 A bug in which read x[1] could core dump has been fixed. +07-08-02 A second bug in which after read x[sub] into an associative array + of an element that hasn't been assigned could lead to a core dump + has been fixed. +07-07-31 A bug in which a pipeline that completed correctly could have + an exit status of 127 when pipefail was enabled has been fixed. +07-07-09 +The SHOPT_AUDIT compile option has been added for keyboard logging. +07-06-25 In vi insert mode, ksh no longer emits a backspace character + before the carriage return when the newline is entered. +07-06-25 A bug in which pipefail would cause a command to return 0 + when the pipeline was the last command and the failure happened + on a component other than the last has been fixed. +07-06-25 A bug in the expansion of ${var/pattern/rep} when pattern or rep + contained a left parenthesis in single quotes has been fixed. +07-06-18 The braces for a subscripted variable with ${var[sub]} are now + optional when inside [[...]], ((...)) or as a subscript. +07-05-28 A bug in brace expansion in which single and double quotes did + not treat the comma as a literal character has been fixed. +07-05-24 The -p option of whence now disables -v. +07-05-23 Several bug fixes in compound variables and arrays of arrays + have been made. +07-05-15 A bug in which the %B format of printf was affected by the + locale has been fixed. +07-05-14 A bug in which was not removed in the replacement pattern with + ${var/pattern/rep} when it was not followed by or a digit has + been fixed. +07-05-10 A bug in which ksh -R file core dumped if no script was specified + has been fixed. it not displays an error message. +07-05-07 Added additional Solaris signals to signal table. +07-04-30 A bug in which a pipeline with command substitution inside a + function could cause a pipeline that invokes this function to + hang when the pipefail option is on has been fixed. +07-04-30 +Added -q to whence. +07-04-18 A small memory leak with each redirection of a non-builtin has + been fixed. +07-03-08 A bug in which set +o output command line options has been fixed. +07-03-08 A bug in which an error in read (for example, an invalid variable + name), could leave the terminal in raw mode has been fixed. +07-03-06 A bug in which read could core dump when specified with an array + variable with a subscript that is an arithmetic expression has + been fixed. +07-03-06 Several serious bugs with the restricted shell were reported and + fixed. +07-03-02 If a job is stopped, and subsequently restarted with a CONT + signal and exits normally, ksh93 was incorrectly exiting with + the exit status of the stop signal number. +07-02-26 +M-^L added to emacs mode to clear the screen. +07-02-26 A bug in which setting a variable readonly in a subshell would + cause an unset error when the subshell completed has been fixed. +07-02-19 +The format with printf uses the new = flag to center the output. +07-02-19 A bug in which ksh93 did not allow multibyte characters in + identifier names has been fixed. +07-02-19 A bug introduced in ksh93 that causes global compound variable + definitions inside functions to exit with "no parent" has been fixed. +07-02-19 A bug in which using compound commands in process redirection + arguments would give syntax errors <(...) and >(...) has been fixed. +07-01-29 A bug which caused the shell to core dump which can occur when a + built-in exits without closing files that it opens has been fixed. +07-01-26 A bug in which ~(E) in patterns containing that are not inside () + has been fixed. + +06-12-29 --- Release ksh93s --- +06-12-29 A bug in which the value of IFS could be changed after a command + substitution has been fixed. +06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on + systems that provide getaddrinfo(3). +06-12-19 +A -v option was added to read. With this option the value of + the first variable name argument will become the default value + when read from a terminal device. +06-11-20 A bug in which "${foo[@]:1}}" expands a null argument (instead of + no argument), when foo[0] is not empty has been fixed. +06-11-16 The discipline functions have been modified to allow each subscript + to act independently. Currently the discipline function will not + be called when called from a discipline function of the same variable. +06-11-14 A bug which could cause a core dump if a file descriptor for + an internal file was closed from with a subshell has been fixed. +06-10-30 +The redirections <# pattern, and <## pattern have been added. + Both seek forward to the beginning of the next line that contains + the pattern. The <## form copies the skipped portion to standard + output. +06-10-26 +On systems that support stream control transport, the virtual file + name /dev/sctp/host/port can now be used to establish connections. +06-10-26 +The printf modifier # when used with d produces units in thousands + with a single letter suffix added. The modifier # when used with + the i specification provides units of 1024 with a two letter suffix. +06-10-24 The value of $! is now set to the process id of a job put + into the background with the bg command as required by POSIX. +06-10-23 A bug in which the value of $! was affected by a background + job started from a subshell has been fixed. +06-10-23 A bug in ${var:offset:len} in multibyte locales has been fixed. +06-10-15 +The remaining math functions from C99 were added for any system + that supports them. +06-10-13 The klockwork.com software detected a few coding errors that + have been fixed. +06-10-12 A bug when skipping over `...` with ${x:=`...`} when x is set + has been fixed. +06-10-11 A bug in process floating constants produced by the %a format + of printf has been fixed. +06-10-06 A bug in which IFS was not being restored correctly in some + cases after a subshell has been fixed. +06-10-06 A bug in which pipefail was not detecting some failures in + pipelines with 3 or more states has been fixed. +06-10-03 A bug in the processing of >(...) with builtins which could + cause the builtin to hang has been fixed. +06-10-03 A bug in the for loop optimizer which causes >(...) process + substitution to be ignored has been fixed. +06-09-17 +The -a option was added to typeset for indexed arrays. This + is only needed when using the ([subscript]=value ...) form. +06-09-06 +The showme option was added. Each simple command not beginning + with a redirection and not occurring with in the while, until, if, + select condition can be preceded by a semi-colon which will + be ignored when showme is off. When showme is on, any command + preceded by a colon will be traced but not executed. +06-08-16 +As a new feature, a leading ~(N) on a pattern has no effect + except when used for file expansion. In this case if not + matches are found, the pattern is replaced by nothing rather + than itself. +06-08-11 A bug in the expansion of ${.sh.match[i]:${#.shmatch[i]}} has + been fixed. +06-08-10 +The read builtin options -n and -N have been modified to treat + the size as characters rather than bytes unless storing into a + binary (typeset -B) variable. +06-07-27 +When the here document operator << is followed directly by a # + rather than a -, the first line of the here-document determines + how much whitespace is removed for each line. +06-07-26 A bug in the C-shell history (enabled with set -H) in which the + history event !$ was not processed has been fixed. +06-07-21 A bug on some systems in which assigning PATH on a command line + would not take effect has been fixed. +06-07-20 Add ksh93 and rksh93 as allowable names for ksh binaries. +06-07-20 Removed the SHOPT_OO compilation option which was only partially + implemented. +06-07-20 The ability to use egrep, grep, and fgrep expressions within + shell patterns has been documented. +06-07-17 A bug with arithmetic command expressions for locales in which + the comma is a thousands separator has been fixed. +06-07-13 +The default HISTSIZE was increased from 128 to 512. +06-07-13 A multibyte problem with locales that use shift codes has been fixed. +06-06-23 A number of bug fixes for command, file, and variable completion + have been mode. +06-06-20 +Floating point division by zero now yields the constant Inf or -Inf + and floating functions with invalid arguments yield NaN. +06-06-20 +The floating point constants Inf and NaN can be used in arithmetic + expressions. +06-06-20 +The functions isinf(), isnan(), tanhl() have been added for + arithmetic expressions. +06-06-13 Internal change to use ordering for variables instead of hashing + to speed up prefix matching. +06-06-13 A window between fork/exec in which a signal could get lost + and cause a program to hang has been eliminated +06-06-13 A bug in edit completion with quoted strings has been fixed. +06-06-07 The restricted options can now be enabled by set as well as on + the command line. Once set, it can not be disabled. +06-06-04 Modified built-in binding so that for systems for which /bin + and /usr/bin are the same, a builtin bound to /bin will get + selected when either /bin or /usr/bin is scanned. +06-06-04 +Added literal-next character processing for emacs/gmacs mode. + This change is not compatible with earlier versions of ksh93 + and ksh88 when the stty lnext is control-v. The sequence + escape-control-v will display the shell version. +06-05-31 +Modified emacs and vi mode so that entering a TAB after a partial + TAB completion, generates a listing of possible completions. + After the second TAB, a number followed by a TAB will perform + the completion with the corresponding item. +06-05-19 +Modified arithmetic so that conversions to strings default to + the maximum number of precision digits. +06-05-16 Bug fixes for multibyte locales. +06-05-10 The =~ operator was added to [[...]] and [[ string ~= ERE ]] + is equivalent to [[ string == ~(E)ERE ]]. +06-04-25 A bug in the vi edit mode which could cause the shell to core dump + when switching from emacs mode. +06-04-17 A bug in which using LANG or LC_ in assignment lists with builtins + did not restore the localed correctly has been fixed. +06-04-04 A bug in which discipline functions could not be added to variables + whose names started with .sh has been fixed. +06-03-28 +The -s option to typeset was added to modify -i to indicate short + integers. +06-03-28 A bug in which variables assignment lists before functions + defined with function name were not passed on the functions + invoked by this function has been fixed. +06-03-28 A bug in which name references defined within a function defined + with function name could not be used with compound variables has + been fixed. +06-03-27 A bug in which read <&p (print >&p) would cause the coprocess input + (output) pipe to close before reading from (after writing to) + it has been fixed. +06-02-28 A bug in which stopping a job created with the hist builtin command + would create a job that could not be restarted has been fixed. + +06-01-24 --- Release ksh93r --- +06-01-24 A bug in which running commands with standard output closed would + not work as expected has been fixed. +06-01-23 A bug in which print -u<n> could fail when file descriptor <n> was + open for writing has been fixed. +06-01-19 The ?: arithmetic operator fixed to work when the operation after + the colon was an assignment. +05-12-24 A bug which could lead to a core dump when elements of a compound + variable were array elements, i.e. foo=(bar=(1 2)), has been fixed. +05-12-13 An arithmetic bug in which x+=y+=z was not working has been fixed. +05-12-13 An arithmetic bug in which x||y was returning x when x was non-zero + rather than 1 has been fixed. +05-12-07 +The aliases for integer and float have been changed to use attributes + -li and -lE to handle long long and long double types. +05-12-07 +The histexpand (-H) option has been added which allows C-shell + style history expansions using the history character !. +05-12-07 +The multiline option was added which changes that way the edit + modes handle lines longer than the window width. Instead of + horizontal scrolling, multiple lines on the screen are used. +05-12-05 The whence builtin now returns an absolute pathname when the + command is found in the current directory. +05-11-29 A bug which caused ksh -c '[[ ! ((' to core dump rather than + report a syntax error has been fixed. +05-11-29 A bug when reading fixed length records into typeset -b variables + which caused a zero byte to terminate the value has been fixed. +05-11-22 +The ability to seek to an offset within a file has been added + with the new I/O redirection operators, <# and >#. Currently, + these redirection operators must be followed by ((expr)) + but in a future release, it should be able to used to seek forward + to the specified shell pattern. In addition $(n<#) expands to the + current byte offset for file descriptor n. +05-11-22 +The .sh.match array variable is now set after each [[ ... ]] + pattern match. Previously it was only set for substring matches. +05-10-17 A bug in which the library path variable could be prefixed + with a directory when a .path file was not encountered in + the directory of the executable has been fixed. +05-09-15 A for/while loop optimizer bug in which $OPTIND was not + correctly expanded has been fixed. +05-09-05 A bug in which a history command that invoked a history + command could go into an infinite loop has been fixed. +05-08-31 +In the case that IFS contains to adjacent new-lines so that + new-line is not treated as a space delimiter, only a single + new-line is deleted at the end of a command substitution. +05-08-19 +When a tilde substitution expands to the / directory and is + followed by a /, it is replaced by the empty string. +05-08-16 A bug in which n<&m did not synchronize m has been fixed. +05-08-16 A bug in which process substitution ( <() and >() ) was not + working within for and while loops has been fixed. +05-07-24 A bug in which the pattern ~(E)(foo|bar) was treated as a syntax + error has been fixed. +05-07-24 A bug in completion with <n>=, where n was the one of the + previous selection choices has been fixed. +05-07-21 A bug with multibyte input when no edit mode was specified which + caused the input line to shift left/right has been fixed. +05-06-24 A race condition which could cause the exit status to get lost + on some fast systems has been fixed. +05-06-21 A bug in which nested patterns of the form {m,n}(pat) would cause + syntax errors has been fixed. +05-06-21 A bug in the macro expander has been fixed which could cause a + syntax error for an expansion of the form ${x-$(...)} when + x is set and the command substitution contained certain strings. +05-06-08 +On systems for which echo does not do System V style expansions, + the -e option was added to enable these expansion. +05-06-08 A bug in which ${var op pattern} to not work when inside an + arithmetic expression has been fixed. +05-05-23 +An extension to shell patterns that allows matching of nested + groups while skipping over quoted strings has been added. +05-05-18 A bug in which the line number for errors was not correct for + functions loaded from FPATH has been fixed. +05-04-18 A bug in which the exit status $? is not set when a trap triggered + by the [[...]] command is executed has been fixed. +05-04-08 +Redirection operators can be directly preceded with {varname} + with no intervening space, where varname is a variable name which + allows the shell to select a file descriptor > 10 and store it + into varname. +05-04-08 +SHOPT_CMDLIB_BLTIN=1 now includes <cmdlist.h> generated table. +05-04-07 +[[ -o ?option ]] is true if "option" is a supported option. +05-04-05 A bug in handling file completion with spaces in the names + has been fixed. +05-03-25 +The SIGWINCH signal is caught by default to keeps the LINES and + COLUMNS variables in sync with the actual window size. +05-03-25 +Building ksh with SHOPT_REMOTE=1 causes ksh to set --rc if stdin is + a socket (presumably part of a remote shell invocation.) +05-03-25 +Building ksh with SHOPT_SYSRC=1 causes interactive ksh to source + /etc/ksh.kshrc (if it exists) before sourcing the $ENV file. +05-03-25 +{first..last[..incr][%fmt]} sequences added to brace expansions + when braceexpand is enabled. +05-03-03 A bug where a SIGCHLD interrupt could cause a fifo open to fail has + been fixed. +05-02-25 A bug in which a builtin command run in the background could + keep a file descriptor open which could cause a foreground + process to hang has been fixed. +05-02-24 A bug where builtin library commands (e.g., date and TZ) failed to + detect environment variable changes has been fixed. +05-02-22 +The read builtin and word splitting are now consistent with respect + to IFS -- both treat IFS as field delimiters. +05-02-22 +The read builtin no longer strips off trailing delimiters that + are not space characters when there are fewer variables than fields. +05-02-17 A builtin bug on systems where dlsym(libcmd) returns link-time + bindings has been fixed. +05-02-12 A bug in which the lib_init() function for .paths BUILTIN_LIB + libraries was not called has been fixed. +05-02-06 A bug on some systems in which moving the write end of a co-process + to a numbered file descriptor could cause it to close has been fixed. +05-02-06 A bug in the vi-edit mode in which the character under the cursor + was not deleted in some cases with the d% directive has been fixed. +05-02-06 A bug where external builtin stdout/stderr redirection corrupted + stdout has been fixed. +05-02-04 A bug where times formatting assumed CLK_TCK==60 has been fixed. + +05-01-11 --- Release ksh93q --- +05-01-11 A bug in the integral divide by zero check has been fixed. +05-01-11 +The -l option has been added to read /etc/profile and + $HOME/.profile, if they exist, before the first command. +05-01-11 An argument parsing bug that caused `kill -s x -- n' to fail has + been fixed. +05-01-11 +The .paths file, introduced in ksh93m, which can appear in + any directory in PATH, now allows a line of the form 'BUILTIN_LIB=.' + When a command is searched for this directory, and the full path + matches the path of the built-in version of the command (listed + by the 'builtin' command) then the built-in version of the command + is used. When ksh is built with SHOPT_CMDLIB_DIR=1 then all libcmd + functions become builtins with the '/opt/ast/bin/' directory prefix. +05-01-10 A bug in which a nameref to a compound name caused a core dump has + been fixed. +05-01-09 A bug in which some SIGCHLD interrupts (from child processes exiting) + caused a fatal print/echo error diagnostic has been fixed. +04-12-24 A bug in which some SIGCHLD interrupts (from child processes exiting) + corrupted the internal process/job list, sometimes causing the shell + to hang, has been fixed. +04-12-01 A bug in which typeset -Fn truncated less than n digits for large + numbers has been fixed. +04-11-25 A bug in which standard error could be closed after a redirection + to /dev/stderr has been fixed. +04-11-17 A bug in which an expansion of the form ${array[@]:3} could expand + to ${array[0]} when ${array[3]} was not set has been fixed. +04-10-22 +The -E or -orc command line option reads ${ENV-$HOME/.kshrc} file. +04-10-22 +`-o foo' equivalent to `+o nofoo', `-o nobar' equivalent to `+o bar'. + `--foo' equivalent to `-o foo', `--nofoo' equivalent to `+o foo' +04-10-05 +The .paths file, introduced in ksh93m, which can appear in + any directory in PATH, now allows a line of the form + 'BUILTIN_LIB=libname'. When a command is searched for this directory, + the shared library named by libname will first be searched for a + built-in version of the command. +04-09-03 <<< here documents now handle quotes in the word token correctly. +04-08-08 +The maximum size for read -n and and read -N was increased from + 4095 to 32M. +04-08-04 +printf %q was modified so that if an no operand was supplied, no + no output would be generated rather than a quoted empty string. +04-08-01 +The -n and -N options of the read builtin has been modified + when reading variables with the binary attribute so that the + data is stored directly rather than through assignment. +04-08-01 +The shcomp command has been modified to process alias commands + under some conditions. +04-07-31 +The .sh.match variable added in ksh93l, now works like other + indexed arrays. +04-07-08 A loop optimizer bug which occurs when typeset is used in + a for or while loop inside a function has been fixed. +04-06-24 +The number of subexpressions in a pattern was increased to 64 + from the current number of 20. +04-06-17 +The -t option to read was modified to allow seconds to be + specified as any arithmetic expression rather than just + an integral number of seconds, for example even -t 'sin(.5)' + is now valid. +04-06-16 Two small memory leak problems were fixed. +04-06-15 A bug in ${var/pattern/"string"} which occurred when string + contained pattern matching characters has been fixed. +04-05-08 printf $'%d produced an erroneous error message and has + been fixed. +04-05-24 A bug in which an associative array without any elements could + cause a core dump when a script with an associative array with + the same name was declared in a script invoked by name has + been fixed. +04-05-11 A bug in which an exec statement could close the script that + is being processed in a script that is run by name causing + a failure has been fixed. +04-04-28 +If the first character of assignment to an integer variable was 0, + the variable had been treated as unsigned. This behavior was + undocumented and has been removed. +04-04-05 A bug in which the positioning of standard input could be incorrect + after reading from standard input from a subshell has been fixed. +04-03-30 A bug in the for loop optimizer which in rare cases could cause + memory corruption has been fixed. +04-03-29 +The preset alias source='command .' has been added. +04-03-29 A bug introduced in ksh93p on some systems in which invoked by + name with #! on the first line would not get the signals handling + initialized correctly has been fixed. +04-03-29 A bug introduced in ksh93p in which a HUP signal received by + a shell that is a session group leader was not passed down to + its children has been fixed. + +04-02-28 --- Release ksh93p --- +04-02-28 +The ability to apply an append discipline to any variable has + been added. +04-02-14 A bug in which the exportall option (set -a) would cause incorrect + results for arrays has been fixed. +04-02-02 A bug in which an exported array would pass more than + the first element to a script invoked by name has been fixed. +04-02-02 A bug on some systems in which name=value pairs preceding a script + invoked by name was not getting passed to the script has been fixed. +04-01-20 A bug in which an unset discipline function could cause a core + dump on some systems has been fixed. +04-01-12 A bug in which a continue or break called outside a loop from + inside a function defined with name() syntax could affect + the invoking function has been fixed. +04-01-08 If a command name begins with ~, only filename completion will be + attempted rather than pathname completion using the builtin editors. +04-01-08 A bug in the vi edit mode in which the wrong repeat count on + multiple word replacements with the . directive has been fixed. +04-01-06 Backspace characters are now handled correctly in prompt strings. +04-01-06 +The getopts builtin has been modified to accept numerical + arguments of size long long on systems that support this. +04-01-06 A bug in which unsetting all elements of an associative array + would cause it to be treated as an indexed array has been fixed. +03-12-15 A bug in which a quoted string ending with an unescaped $ would + delete the ending $ in certain cases has been fixed. +03-12-05 A bug in which the shell could hang when set -x tracing a command + when an invalid multibyte character is encountered has been fixed. +03-12-05 On some systems, if the KEYBD trap is set, then commands that use + the meta key were not processed until return was hit. This + has been fixed. +03-12-05 A problem which occurred when the login shell was not a group + leader that could cause it to fail has been fixed. +03-12-05 A problem in which a shell could core dump after receiving a signal + that should cause it to terminate while it was in the process + of acquiring more space has been fixed. +03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc + for interactive shells. +03-11-21 A bug introduced in ksh93o in which the DEBUG trap could get + disabled after it triggered has been fixed. +03-11-04 A bug in which using arithmetic prefix operators ++ or -- on a + non-lvalue could cause a core dump has been fixed. +03-11-04 A bug in which leading zeros were stripped from variable + expansions within arithmetic computation to avoid being treated + as octal constants when they should not have, has been fixed. +03-10-08 A bug introduced in ksh93o in which a large here document inside + a function definition could get corrupted has been fixed. +03-09-22 A bug in which the .get discipline function was not being + called when a string variable was implicitly referenced from + within a numerical expression has been fixed. +03-09-22 A bug in which a script without a leading #! could get executed + by /bin/sh rather than the current shell on some systems has + been fixed. +03-09-12 +To improve conformance with ksh88, leading zeros will be ignored + when getting the numerical value of a string variable so that + they will not be treated as octal constants. +03-09-03 +The builtin kill command now processes obsolete invocations + such as kill -1 -pid. +03-09-02 The restriction on modifying FPATH in a restricted shell (sh -r) + has been documented. +03-09-02 +The restricted shell (sh -r) has been modified to disallow + executing command -p. +03-08-07 A bug in which the KEYBD trap was not being invoked when + characters with the 8th bit set has been fixed. +03-08-02 A parser bug introduced in ksh93o which caused the character + after () in a Posix function definition to be skipped + when reading from standard input has been fixed. +03-08-01 A bug in which "${foo#pattern}(x)" treated (x) as if it were + part of the pattern has been fixed. +03-08-01 +The command -x option has been modified so that any trailing + arguments that do expand to a single word will be included + on each invocation, so that commands like command -x mv * dir + work as expected. + +03-07-20 --- Release ksh93o+ --- +03-07-20 A bug in which could cause memory corruption when a posix + function invoked another one has been fixed. +03-07-15 A bug in which a file descriptor>2 could be closed before + executing a script has been fixed. +03-07-15 A parsing error for <() and >() process substitutions inside + command substitution has been fixed. +03-07-15 A parsing error for patterns of the form {...}(...) when + used inside ${...} has been fixed. +03-07-15 An error in which expanding an indexed array inside a compound + variable could cause a core dump has been fixed. +03-07-15 A bug in which on rare occasions a job completion interrupt + could cause to core dump has been fixed. +03-06-26 A bug in which process substitution embedded within command + substitution would generate a syntax error has been fixed. +03-96-23 A bug in which ${@:offset:len} could core dump when there + were no arguments has been fixed. +03-96-23 A bug in which ${X[@]:offset:len} could core dump when X + was unset has been fixed. +03-06-22 +The -x option was added to the command builtin. If this + option is on, and the number of arguments would exceed ARG_MAX, + the command will be invoked multiple times with a subset of + the arguments. For example, with alias grep='command -x grep, + any number of arguments can be specified. +03-06-14 A bug in which could cause a core dump on some systems with + vi and emacs editors with the MULTIBYTE option has been fixed. +03-06-06 A bug in which the shell could core dump when a script was + run from its directory, and the script name a symlink to a file + beginning with .., has been fixed. +03-06-05 A bug in which the shell could core dump when a child process + that it is unaware of terminates while it is calling malloc() + has been fixed. +03-06-02 +An option named globstar (set -G) has been added. When enabled, + during pathname expansion, any component that consists only of ** is + matches all files and any number of directory levels. +03-05-30 A bug in which the PATH search could give incorrect results when + run from directory foo and PATH contained .:foo:xxx has been fixed. +03-05-29 +Some changes were made to the code that displays the prompt in edit + mode to better handle escape sequences in the prompt. +03-05-27 I added = to the list of characters that mark the beginning of + a word for edit completion so that filenames in assignments + can be completed. +03-05-20 A bug in which read -N could hang on some systems when reading + from a terminal or a pipe has been fixed. +03-05-19 A bug in which the output of uname from a command substitution + would go to the standard output of the invoking command when + uname was invoked with a non-standard option has been fixed. +03-05-19 A job control bug which would cause the shell to exit because + it hadn't take back the terminal has been fixed. The bug + could occur when running a function that contained a pipeline + whose last element was a function. +03-05-19 A job control timing bug introduced in ksh93o on some systems + which could cause a pipeline to hang if the first component + completed quickly has been fixed. +03-05-13 +The read builtin has been modified so that the builtin editors + will not overwrite output from a previous incomplete line. +03-05-13 A bug in which the name of an identifier could have the string + .sh. prefixed to it after expanding a variable whose name begins + with .sh. has been fixed. +03-05-13 A bug in the expansion of $var for compound variables in which + some elements would not be output when the name was a prefix + of another name in the compound variable has been fixed. +03-05-08 The last item in the ksh93o release on 03-01-02 has been + altered slightly to preserve the leading 0's when the + preceding character is a digit. Thus, with typeset -LZ3 x=10, + $(( 1$x)) will be 1010 whereas $(( $x) will be 10. +03-04-25 A bug in which if x is a name reference, then nameref y=x.foo + did not follow x has been fixed. + +03-03-18 --- Release ksh93o --- +03-03-18 +A -N unary operator was added to test and [[...]] which returns + true if the file exists and the file has been modified since it + was last read. +03-03-18 +The TIMEFORMAT variable was added to control the format for + the time compound command. The formatting description is + described in the man page. +03-03-06 +A -N n option was added to read which causes exactly n bytes + to be read unlike -n n which causes at most n bytes to be read. +03-03-03 +Three new shell variables were added. The variable .sh.file + stores the full pathname of the file that the current command + was found in. The variable .sh.fun names the current function + that is running. The variable .sh.subshell contains the depth + of the current subshell or command substitution. +03-03-03 +When the DEBUG trap is executed, the current command line after + expansions is placed in the variable .sh.command. The trap + is also now triggered before each iteration of a for, select, + and case command and before each assignment and redirection. +03-02-28 +Function definitions are no longer stored in the history file so + that set -o nolog no longer has any meaning. +03-02-28 +All function definitions can be displayed with typeset -f not + just those stored in the history file. In addition, typeset +f + displays the function name followed by a comment containing the + line number and the path name for the file that defined this function. +03-02-28 A bug in which the value of $LINENO was not correct when executing + command contained inside mult-line command substitutions has been + fixed. +03-02-19 +Since some existing ksh88 scripts use the undocumented and + unintended ability to insert a : in front of the % and # parameter + expansion operators, ksh93 was modified to accept :% as equivalent + to % and :# as equivalent to # with ${name op word}. +03-02-14 A bug which could cause a core dump when reading from standard + error when standard error was a pty has been fixed. +03-02-14 +The shell arithmetic was modified to use long double on systems + that provide this data type. +03-02-09 A bug in which a function located in the first directory in FPATH + would not be found when the last component of PATH was . and the + current directory was one of the directories in PATH has been fixed. +03-02-07 +The trap and kill builtin commands now accept a leading SIG prefix + on the signal names as documented. +03-02-05 A bug in the expansion of ${var/$pattern}, when pattern contained + \[ has been fixed. +03-02-05 A bug in which .sh.match[n], n>0, was not being set for substring + matches with % and %% has been fixed. +03-01-15 A bug in which getopts did not work for numerical arguments specified + as n#var in the getopts string has been fixed. +03-01-09 A bug in which using ${.sh.match} multiple times could lead to + a memory exception has been fixed. +03-01-06 A bug in the expansion of ${var/pattern/$string} in the case that + $string contains \digit has been fixed. +03-01-02 +A -P option was added for systems such as Solaris 8 that support + profile shell. +03-01-02 For backward compatibility with ksh88, arithmetic expansion + with ((...)) and let has been modified so that if x is a zero-filled + variable, $x will not be treated as an octal constant. + +02-12-05 --- Release ksh93n+ --- +02-11-30 A bug that can show up in evaluating arithmetic statements that + are in an autoloaded function when the function is autoload from + another function has been fixed. +02-11-30 An optimization bug in which an expansion of the form ${!name.@}, + which occurred inside a for or a while loop, when name is a name + reference, has been fixed. +02-11-18 A bug in which modifying array variables in a subshell could leave + side effects in the parent shell environment has been fixed. +02-11-18 A memory leak when unsetting an associative array has been fixed. +02-11-14 +The code to display compound objects was rewritten to make + it easier for runtime extensions to reuse this code. +02-11-14 +A change was made to allow runtime builtins to be notified when + a signal is received so that cleanup can be performed. +02-10-31 +User applications can now trap the ALRM signal. Previously, + the ALRM signal was used internally and could not be used + by applications. +02-10-31 A bug in which signals received while reading from a coprocess + for which traps were set was not handled correctly has been fixed. +02-10-31 A bug in which a file opened with exec inside a subshell could + be closed before the subshell completed has been fixed. +02-10-21 A bug in which setting PATH or FPATH inside a function might not + take effect has been fixed. +02-10-21 A bug which could cause a core dump when a local SECONDS variable + is defined in a function has been fixed. +02-10-15 A bug in which the associate array name operator ${!array[@]} + could return the same name multiple times has been fixed. +02-10-15 A bug in which the zero'th element of an associative array was + not getting set when an assignment was made without a subscript + specified has been fixed. + +02-09-30 --- Release ksh93n --- +02-09-30 +The maximum indexed array size was increased to 16Megs. +02-09-30 A bug which could cause a core dump when changing attributes + of associative array has been fixed. +02-09-30 A bug in which exporting an array variable would not export the + 0-th element has been fixed. +02-09-30 A bug in which an array assignment of the form a=($a ...) would unset + 'a' before the right hand side was evaluated has been fixed. +02-09-27 A bug in which the error message for ${var?message} when var was + null or unset did not contain the variable name var has been fixed. +02-09-27 A bug in which closing file descriptors 0 through 2 could + cause a subsequent here document to fail has been fixed. +02-09-14 A bug in whence which occurs when the specified name contained + a / has been fixed. +02-09-14 A bug in the parser for strings of the form name$((expr))=value + has been fixed. +02-09-14 A for loop optimization bug in which the number of elements in + an array was treated as an invariant has been fixed. +02-09-09 A bug in which redirection or closing of a file descriptor between + 3 and 9 could cause a subsequent here document to fail has been + fixed. +02-09-09 A bug in which a background job was not removed from the job list + when a subshell completed has been fixed, for example (prog&). +02-09-03 A bug in which an assignment of the form name=(integer x=3) + could be interpreted as an array assignment rather than a + compound variable assignment has been fixed. +02-08-19 A command completion bug which occurred on file systems that + are case insensitive has been fixed. +02-08-19 A bug which could lead to an exception on some systems (for + example FREEBSD) which occurred when setting PATH has been fixed. +02-08-11 A bug in arithmetic rounding in which a value input as a decimal + string would output as a rounded version of the string has + been fixed. +02-08-11 A bug in which the last character could be deleted from shell + traces and from whence when called from a multibyte locale + has been fixed. +02-08-01 A bug which could cause a core dump to occur when a shell script + is executed while a coprocess is running that has closed the + output pipe has been fixed. +02-08-01 A bug in which command completion in multibyte mode could + corrupt memory for long command lines has been fixed. + +02-06-17 --- Release ksh93n- --- +02-06-17 A bug in which user defined macros could cause a core dump in + with MULTIBYTE mode has been fixed. +02-06-17 A bug in which printf format specifiers of the form %2$s were causing + a core dump has been fixed. +02-06-17 A bug in which setting stty to noecho mode did not prevent the + echoing of characters by ksh when emacs or viraw mode + was enabled has been fixed. +02-06-17 A bug in which background job completion could cause the sleep + builtin to terminate prematurely has been fixed. +02-06-17 A bug in which the shell could core dump if getopts was called + when the OPTIND variable contained a negative value has been fixed. +02-06-10 +The edit mode prompt has been modified to handle escape sequences. +02-06-10 A bug which occurred for interactive shells in which the builtin + cat command was used in command substitution on a file whose + size was larger than PIPE_BUF has been fixed. +02-06-10 A bug in which the trap on ERR was not being processed when + set inside a function has been fixed. +02-06-07 A bug in which function definitions could cause the history count + to be decremented by one (and even become negative) has been fixed. +02-06-05 A bug in read in which share mode could be enabled has been fixed. +02-05-28 A bug which could occur when the last command of a script was + a case statement and the action selected ended in ;& instead of ;; + has been fixed. +02-05-23 A bug with unary + introduced in ksh93k has been fixed. +02-05-07 A bug in substitutions of the form ${var/pattern/string} in which + a backslash was inserted in the replacement string when it contained + a special pattern character has been fixed. +02-05-01 A bug in the emacs edit mode which occurred in versions compiled + for multibyte character sets which occurred when a repeated search + was requested after a long line had been returned for the previous + search has been fixed. +02-04-02 +vi and emacs edit modes were modified so that tab completion is + disabled when invoked from the read built-in. + +02-03-26 --- Release ksh93m+ --- +02-03-26 A bug in which was not handled correctly when used in file + expansion has been fixed. +02-02-18 A bug in which lines beginning with a # were deleted from here + documents when the here-document delimiter was followed by + a comment has been fixed. +02-12-06 An optimization bug in which ${!x[@]) was treated as invariant in + a for loop has been fixed. +02-02-06 A bug in which the ERR trap is not cleared for a script invoked + by name from within a function has been fixed. +02-01-08 A bug in which a shell script executed from within a subshell + could cause this script to have an invalid pointer leading + to a memory fault has been fixed. +02-01-07 +Added here documents of the form <<< word (as per zsh) which + is equivalent to << 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} occurred in the + same word has been fixed. +02-01-07 +A compilation option, CMDLIB_BLTIN in the file OPTION, has + been added. When this options is set, all commands implemented + in libcmd become shell builtin commands by default. +02-01-07 A bug in which builtin foo, where foo is already a builtin + would result in the builtin foo getting removed has been fixed. +02-01-07 A bug which the shell executed a command found in the current + directory when PATH have no valid directories has been fixed. +01-11-28 The value of $? was not being set when called with exit. +01-11-28 If the last command was of the form (...) and a trap on EXIT or + ERR was set, and the command inside () modified the trap, then + the original trap wasn't executed. +01-11-26 +The value for 0 is now preceded by the base number when + the base was not 10. +01-11-26 +The default has compilation mode has been changes so that + viraw mode will always be on. + +01-10-31 --- Release ksh93m --- +01-10-31 A for loop optimizer bug for subshells contained withing for + loops has been fixed. +01-10-16 typeset without arguments no longer outputs variable names + that do not have any attributes that are set. +01-10-16 A bug introduced in ksh93l in which assignments specified with + the exec built-in were not being expanded properly has been + fixed. +01-10-11 An optimization bug in which ${!x) was treated as invariant in + a for loop has been fixed. +01-10-11 Unsigned integer variables in bases other than 10 are printed now + expand in that base with the base prefix. +01-10-10 A number of typos in the self generating man pages for shell + built-ins have been fixed. +01-10-04 The self generated man pages for hist and fc were not working + correctly and have been fixed. +01-10-03 Yet another optimizer bug in which shell patterns were + treated as invariants has been fixed. +01-09-27 Two bugs relating to multibyte history searches and to find + have been fixed. +01-09-27 A bug introduced in ksh93k in which the PATH searching was + not restored after running a command with an assignment list + has been fixed. +01-09-26 A bug in which a zero filled field was treated as octal when + converted to integer has been fixed. +01-09-26 Yet another bug in the optimization of for loops related to + recursive functions with break or continue statements has been fixed. +01-09-25 +The exponentiation operator ** was added to the shell arithmetic + evaluation. It has higher precedence than * and is left + associative. +01-09-25 The code was modified to use the ast multibyte macros + and functions for handing multibyte locales. +01-09-25 +The expansion ${parameter:offset:length} now handles negative + offsets which cause offsets to be measured from the end. +01-09-25 Some spelling errors in the documentation were corrected. +01-09-24 +The /dev/tcp/host/port and /dev/udp/host/port now allow + the ports to be specified by service name. +01-09-24 +The change staring with ksh93g in which the the appropriate + library path variable is prepended with a corresponding library + directory has been modified. With the new method, only the + library path defined in the file named .paths in the directory + where the executable is found will be modified. See the + man page for more details. +01-09-23 +The .fpath file (see ksh93h) is no longer looked for in each + directory on the path to locate function directories. The + file named .paths is used instead. +01-09-23 A bug in which IFS was not being restored after being changed in + a subshell has been fixed. +01-09-16 +With the vi and emacs edit modes, after a list of command + or functions is generated with = or M-= respectively, + any element from the list can be pasted on the command line + by preceding the = or M-= with a numeric parameter specifying + the position on the list. +01-09-16 A bug in ksh93l caused command completion not to find aliases + and functions. Command listing from the edit mode was presented + in reverse order. This has been fixed. +01-09-13 Another bug in the optimization of for loops related to subshells + when traps were set has been fixed. +01-09-07 A change in ksh93l caused brace expansion to stop working + and this has been fixed. +01-09-04 A bug introduced in ksh93k in which an arithmetic statement + within a function that used name references did not follow the + reference has been fixed. +01-09-04 A bug introduced in ksh93l in which export -p did not prefix + each export with the word export has been fixed. +01-08-29 A bug in multibyte input which occurred when a partial multibyte + character was received has been fixed. +01-08-29 A bug introduced in ksh93l which could cause a core dump + when an assignment list containing PATH is specified inside + command substitution has been fixed. +01-08-09 Another bug in the optimization of for loops in ksh93l caused + errors in recursive functions using local variables that + contained for loops has been fixed. +01-07-27 A bug in which IFS would be unset after a command substitution + inside a here document has been fixed. +01-07-26 To conform to the POSIX standard, if you invoked ksh name, + and name does not contain a /, it will first try to run + one in the current directory whether it is executable or not + before doing a path search for an executable script. Earlier + versions first checked for an executable script using the + PATH variable. +01-07-23 A bug in which unset -f invoked in a subshell could unset a + function defined in the parent has been fixed. +01-07-16 A bug in the optimization of for loops in ksh93l caused + name references to be treated as invariants has been fixed. +01-07-09 A bug in which a discipline function applied to a local variable + could cause a shell exception has been fixed. Discipline + functions can only be specified for global variables. + +01-06-18 --- Release ksh93l --- +01-06-18 A bug in assigning integers larger than can be represented as + long integers to floating point variables has been fixed. +01-06-18 A bug in the handling of unsigned integers (typeset -ui) has + been fixed. +01-06-04 The evaluation of the PS1 prompt no longer effects the value + of the $? variable. +01-06-01 A small memory leak from subshells has been fixed. +01-05-22 A bug in which attributes for variables that did not have + values would be lost after a subshell has been fixed. +01-05-22 +The %R format has been added to convert a shell pattern into + an extended regular expression. +01-05-22 +The escape sequences \, <JOIN>X, \C[.collating-element.], and + \x{hex} have been added to ASCII-C strings and to printf format + strings. +01-05-20 +Patterns of the form {n}(pattern) and {m,n}(pattern) are now + recognized. The first form matches exactly n of pattern whereas, + the second form matches from m to n instances of pattern. +01-05-20 +The shell allows *-(pattern), +-(pattern), ?-(pattern), + {m,n}-(pattern}, and @-(pattern) to cause the minimal + match of pattern to be selected whenever possible rather + than the maximal (greedy) match. +01-05-20 +The character class [:word:] has been added to patterns. + The word class is the union of [:alnum:] and the character _. +01-05-20 +Inside (...) pattern groups, the character is now treated + specially even when in an enclosing character class. The + sequences, \w, \d, \s are equivalent to the character classes + word, digit, and space respectively. The sequences \W, \D, + and \S are their complement sets. +01-05-20 +The shell now recognizes pattern groups of the form + ~(options:pattern) where options or :pattern can be omitted. + Options use the letters + and - to enable and disable options + respectively. The option letters g (greedy), i (ignore case) + are used to cause maximal matching and to cause case + insensitive matching respectively. If :pattern is also + specified, these options are only in effect while this + pattern is being processed. Otherwise, these options remain + in effect until the end of the pattern group that they are contained + in or until another ~(...) is encountered. These pattern groups + are not counted with respect to group numbering. +01-05-14 When edit completion, expansion, or listing occurs in the + middle of a quoted string, the leading quote is ignored when + performing the completion, expansion, or listing. +01-05-14 A small memory leak from subshells has been fixed. +01-05-10 A bug in which open files were not restored after a subshell + that had used exec to replace a file has been fixed. +01-05-10 +Redirection to a null file name now generates an error message. +01-05-09 The shell now rejects some invalid parameter substitutions that + were previously processed in undefined ways. +01-05-09 A bug in which the output of select was not flushed before the + read when input did not come from the terminal has been fixed. +01-05-08 A bug in which job ids would not be freed for interactive shells + when subshells ran built-ins in the background has been fixed. +01-05-08 +The FPATH variable now requires an explicit . to cause the + current directory to be treated as a function directory. +01-05-08 A bug in read -n when echo mode was disabled has been fixed. +01-05-07 A bug in which function definitions could be listed as part + of the history has been fixed. +01-04-30 +This release uses a new and often much faster pattern matcher than + earlier releases. +01-04-30 +An optimizer now eliminates invariant parameter expansions from + for while and until loops. +01-04-30 +The variable .sh.match is set after each pattern match (# % or /) + in a variable substitution. The variable .sh.match is an + indexed array with element 0 being the complete match. + The array is only valid until the next subsequent pattern + match or until the value of the variable changes which ever + comes first. +01-04-30 +A self generating man page has been added to shcomp. Also, + shcomp now stops compiling when it finds an exit or exec + command and copies the remainder so that it can be used + for standard input. +01-04-30 +The shcomp command was modified so that it can work in an + EBCIDIC environment and that binary scripts are portable + across environments. +01-04-30 A bug in the handling of a trailing : in PATH has been fixed. +01-04-30 A bug in which the builtin version of a command would get invoked + even though the full pathname for the command was specified + has been fixed. +01-04-30 A bug in which read would loose the last character when + reading the last line of a file that did not contain a new-line + character has been fixed. +01-04-23 A bug on some systems in which in vi mode the end of file + character and end of line character could be swapped has + been fixed. +01-04-23 A bug on some systems in which invoking a shell script that + did not have execute permission could set the exit value to + 127 rather than 126 has been fixed. +01-04-20 A bug in which read -n from a pipe would block if fewer than + n characters was received has been fixed. +01-04-09 A bug in which invalid patterns, for example, ) by itself, + was not treated as a string has been fixed so that if i=')', + then [[ $i == $i ]] is true. +01-04-09 +The shell arithmetic now interprets C character constants. +01-04-09 A bug in which a non-zero return from a function defined + with the function reserved word did not trigger the ERR + trap or exit with set -e has been fixed. +01-04-02 A bug on some systems, in which characters above 127 were + not displayed correctly in vi or emacs edit mode has been fixed. +01-04-02 A bug on some systems, introduced in the 'k' point release, in + which the erase character in viraw mode was moving the cursor + to the left without erasing the character has been fixed. +01-04-02 On some systems the wcwith() function was returning a wrong + value for characters and caused characters to be displayed + incorrectly from the shell edit modes. A work around for + this problem has been added. +01-03-26 A bug in which valid scripts could produce syntax errors + when run with locales that considered characters such as "'" + to be space characters has been fixed. +01-03-20 A bug in which an syntax error in an arithmetic expression + entered interactively could cause the shell to go into + an infinite loop outputting the error message has been fixed. +01-03-10 +ksh93 accepts -l as a synonym for -L in test on systems for + which /bin/test -l tests for symbolic links. +01-03-10 A bug in parsing scripts in which { and } are used in place of + in and esac in case statements embedded in compound commands + has been fixed. Use of { and } for in and esac is obsolete. +01-03-06 A bug in which an argument of the form foo=bar was not + being passed correctly to a traced function whose name + was foo has been fixed. +01-03-02 Using $(trap -p name) did not print the name of the current + trap setting for trap name. +01-02-26 Exported floating point variables gave incorrect results + when passing them to ksh88. This has been fixed. +01-02-25 A race condition in which a coprocess which completed too quickly + would not allow subsequent coprocesses to start has been fixed. +01-02-25 The 'g' format specifier is now handled by printf. It had + inadvertently been omitted. +01-02-20 The + was not being displayed during an execution trace + with the += assignment operator. +01-02-19 The error message which occurs when the interpreter name + defined on the #! line does not exist is more informative. +01-02-19 A bug in which $0 would not be set correctly when a + script with #! was invoked by full pathname from the + directory of the script has been fixed. +01-02-19 A shell script did not always pick up tty mode changes + made by external commands such as stty which could + effect the behavior of read. +01-02-19 The -u, -g, and -k unary tests did not give the correct + results when used with negation and this has been fixed. + +01-02-05 --- Release ksh93k+ --- +01-02-05 The sequence \<newline> inside $'...' was not incrementing + the line count and this has been fixed. +01-02-05 +Modified expansion of "${@-}" so that if no arguments are set + it results in null string rather than nothing. +01-02-02 memory leak problem with local variables in functions fixed. +01-01-25 +allow arithmetic expressions with float%int and treat them + as ((int)float)%int rather than as an error. +01-01-19 read -n1 was not working and has been fixed. +01-01-17 +ksh now handles the case in which a here document in command + substitution $() is terminated by the trailing ). Previously, + a new-line was needed at the end of the delimiter word. +01-01-02 A bug in which a KEYBD trap would cause a multi-line token + to be processed incorrectly has been fixed. +00-12-10 +Arithmetic integer constants can now have L and U suffices. +00-12-10 A bug in the processing of arithmetic expressions with compound + variables when the -n option is on has been fixed. +00-12-08 A bug in M-f and M-b from emacs mode has been fixed. This + bug only occurs when ksh93 is compiled without MULTIBYTE enabled. +00-11-29 A bug in which jobs -p would yield 0 for background + jobs run in a script has been fixed. +00-11-21 A bug in integer arrays in which the number of elements is + incorrect when the ++ operator is applied to a non-existing + element has been fixed. For example, integer x; ((x[3]++)). +00-11-20 A timing bug in which the shell could reset the terminal + group to the wrong value in the case that the a new process + changes the terminal group during startup has been fixed. + +00-10-27 --- Release ksh93k --- +00-10-27 Using tab for completion now works only when applied + after a non-blank character at the end of the current line. + In other case a tab is inserted. +00-10-27 A bug in the emacs edit mode for ^X^E has been fixed. + The ^X^E sequence is supposed to invoke the full editor + on the current command. +00-10-18 A bug in which expansions of the form ${var//pattern/string} + did not work correctly when pattern was '/' or "/" has + been fixed. +00-10-18 +The output format for indexed arrays in compound variables + has been modified so that it can be used as input. +00-10-18 Assignments with name references (typeset -n) will now + implicitly unreference an existing name reference. +00-10-17 A bug the += append operator when a single array element + is appended to a variable that is not an array has been fixed. +00-10-16 A bug in which the SIGCONT signal was being sent to + each process will kill -0 or kill -n 0 has been fixed. +00-10-12 +The arithmetic evaluation portion has been rewritten to + perform a number of optimizations. +00-10-10 A bug in which name prefix matching ${!name.*} was not + checking name to see if it was a name reference has been fixed. +00-09-26 A bug in the multibyte version in which the width of for + non-printing characters was not correct has been fixed. +00-09-12 +Made changes to get multibyte editing work on UWIN for windows +00-09-12 A bug in which multibyte characters would be displayed incorrectly + has been fixed. +00-08-08 Removed build dependency on iswprint() and iswalph(). +00-07-20 In some cases the read builtin would read more than a single + line from a pipe on standard input and therefore leave the seek + position in the wrong location. +00-07-05 +If the directory / is on the path, a / will not be inserted + between the directory and the file name during path searching + to avoid searching // for systems that treat this specially. +00-06-26 A bug in which on rare occasions wait could return before all + jobs have completed has been fixed. +00-06-21 A bug in which backspace did not work correctly during the + R replace directive in vi-mode has been fixed. +00-06-12 +Added variable name completion/expansion/listing to the set of + completions. Variable name completions begin with $ or "$ followed + by a letter. +00-05-09 --- Release ksh93j --- +00-05-09 Modified command substitution to avoid using /tmp files when + run on read-only file systems. +00-04-17 +Modified printf to handle '%..Xc' and '%..Xs' options where X + is not an alpha character. Previous versions core dumped with this. +00-04-10 +Changes to multibyte editing code were made to use standard + ISO C functions rather than methods devised before the standard. +00-04-09 Add %H options to printf to output strings with <"'&\t> properly + converted for use in HTML and XML documents. +00-04-07 +Modified getopts builtin to handle <.>..</.>< >in usage string</ > + by invoking specified function. +00-04-04 Added self generating man pages for bg, fc, fg, disown, jobs, + hist, let, ., and ulimit. +00-03-30 +The append operator += has been added and can be used + for all assignments, strings, arrays, and compound variables. +00-03-30 +Code was modified in several places to support automatic + generation of C locale dictionaries. +00-03-28 A bug in which the set and trap commands invoked with --name + type arguments would terminate the invoking script has + been fixed. +00-03-27 A bug in which the library path variable was not updated + correctly on some systems as described in the 'g' point + release has been fixed. +00-03-07 printf now returns a non-zero exit status when one of + its arguments cannot be converted to the given type. +00-03-05 The return value and error message for a command that + was found on the path but was not executable was set + incorrectly. +00-03-05 A prototype for ioctl() was removed from the vi edit mode. + +00-01-28 --- Release ksh93i --- +00-01-28 +Most of the built-in commands and ksh itself are now + self documenting. Running command --man will produce + screen output. Running command --html produces the + man page in html format. +00-01-28 +The getopts builtin can process command description + strings to produce man pages. +00-01-28 A bug in which a script could terminate when getopts + encountered an error when invoked inside a function + has been fixed. +00-01-28 When a symbolic link was specified as the name of + the script to invoke by name, the value of $0 was + set to the real file name rather than the link name + in some cases and this has been fixed. +00-01-28 A bug in which the precision given as an argument + to printf was not working has been fixed. + +99-03-31 --- Release ksh93h --- +99-03-31 +The PATH search algorithm has been modified to look + for a file named .fpath in each bin directory and if + found, to search for functions in this directory if + it cannot find the command in that directory. +99-03-31 +When performing pathname expansion, the shell checks + to see whether each directory it reads is case sensitive + or not, and performs the matching accordingly. +99-03-31 +The %T format for printing formatted date/time. +99-03-31 +The emacs and vi modes now handle arrow keys when + they use standard ANSI escape sequences. +99-03-31 +The TAB key can be used for completion in emacs and viraw mode. +99-03-31 A bug in setting .sh.editchar during the KEYBD trap + for the MULTIBYTE option was fixed in release ksh93h. +99-03-31 A bug in shcomp for compilation of unary operators with [[...]] + has been fixed. +99-03-31 A bug in which the value of $? was changed when executing + a keyboard trap has been fixed. +99-03-31 The handling of SIGCHLD has been changed so that the + trap is not triggered while executing trap commands + to avoid recursive trap calls. +99-03-31 A bug in which a local variable in a function declared readonly + would generated an error when the function went out of + scope has been fixed. +99-03-31 A bug in which \<new_line> entered from the keyboard + with the KEYBD trap enabled has been fixed. +99-03-31 The error message for a misplaced ((, for example print ((3), + was often garbled and has been fixed. +99-03-31 A bug in the KEYBD trap in which escape sequences of the form + <ESC>[#~ were not being handled as a unit has been fixed. +99-03-31 A bug in which ksh would consider expressions like [[ (a) ]] + as syntax errors has been fixed. +99-03-31 A function defined as foo() without a function body + was not reported as a syntax error. +99-03-31 A bug in which ksh could run out of file descriptors when + a stream was repeatedly opened with exec and read from + has been fixed. + +98-04-30 --- Release ksh93g --- +98-04-30 +The pipefail option has been added. With pipefail + enabled, a pipeline will not complete until all + commands are complete, and the return value will + be that of the last command to fail, or zero if + all complete successfully. +98-04-30 +The name-value pair library uses the cdt library rather + than the hash library. This change should be transparent + to applications. +98-04-30 +On the U/WIN version for Window 95 and Windows NT, + when a directory beginning with a letter followed by + a colon is given to cd, it is assumed to be an absolute + directory +98-04-30 +When an executable is found on a given path, + the appropriate library path variable is prepended + with a corresponding library directory. +98-04-30 A bug in which a name reference could be created to + itself and later cause the shell to get into an infinite + loop has been fixed. +98-04-30 A bug in shcomp relating to compound variables was fixed. +98-04-30 A bug introduced in ksh93e in which leading 0's in -Z + fields caused the value to be treated as octal for arithmetic + evaluation has been fixed. +98-04-30 A bug when a name reference with a shorter name than + the variable it references was the subject of a compound + assignment has been fixed. +98-04-30 A bug which in which assignment to array variables in + a subshell could effect the parent shell has been + fixed. +98-04-30 read name?prompt was putting a 0 byte at the end of the + prompt on standard error. +98-04-30 A bug in [[ string1 > string2 ]] when ksh was run with -x + has been fixed. +98-04-30 A bug in which the escape character was not processed + correctly inside {...} when brace expansion is enabled + has been fixed, for example {\$foo}. +98-04-30 A bug in line continuation in here-documents has been + fixed. +98-04-30 The default base when not specified with typeset -i is + 10 in accordance with the documentation. Previously, + the value was determined by the first assignment. +98-04-30 A parsing bug in which a # preceded alphanumeric + characters inside a command substitution caused + a syntax error to be reported has been fixed. +98-04-30 A bug in which a decimal constant represented as 10#ddd + where ddd was more than five digits generated a syntax + error has been fixed. +98-04-30 A bug in here document expansion in which ${...} expansions + were split across buffer boundaries has been fixed. +98-04-30 +The sh_fun() function now takes third argument which + is an argument list for the invoked discipline function + or built-in. +98-04-30 +A callback function can be installed which will give + notification of file duplications and file closes. +98-04-30 When ksh is compiled on systems that do not use fork() + current option settings where not propagated to sub-shells. + +97-06-30 --- Release ksh93f --- +97-06-30 +Hostnames in addition to host addresses can be given in + /dev/tcp/host/port virtual file names. +97-06-30 File name completion and expansion now quotes special + characters in file names from both emacs and vi edit modes. +97-06-30 An empty for list behave like a for list with null expansions. + It produces a warning message with sh -n. +97-06-30 +The code has been modified to work with EBCDIC as well as ASCII. +97-06-30 A bug which would cause the secondary prompt to be + displayed when a user entered a literal carriage + return has been fixed. +97-06-30 A bug which caused ksh read -s name to core dump was + fixed. +97-06-30 A bug with the expansion of \} and \] inside double + quoted strings that also contained variable expansions + has been fixed +97-06-30 Changes in the ksh93e point release caused autoload + functions invoked from within command substitution + to fail. This has been fixed. +97-06-30 A bug in the processing of here-documents that could + prevent variable substitution to occur after $(...) command + substitution for long here documents has been fixed. +97-06-30 A bug caused by a race condition that could cause SIGTERM + to be ignored by a child process has been fixed. +97-06-30 A bug which prevented the startup of a coprocess immediately + after killing a running coprocess has been fixed. +97-06-30 ulimit foobar, where foobar is not an arithmetic + expression, now gives an error message as it did with ksh88 + instead of setting the file size limit to 0. +97-06-30 A bug which could cause an interactive shell to terminate when + the last process of a pipeline was a POSIX function was fixed. +97-06-30 A bug which could cause command substitution of a shell script + to core dump has been fixed. +97-06-30 A security hole was fixed in suid_exec. +97-06-30 Arithmetic functions such as pow() that take more than + one argument, did not work if arguments other than the + first contained parenthesized sub-expression. +97-06-30 The error message from a script containing an incomplete + arithmetic expression has been corrected. +97-06-30 A bug which caused a core dump on some machines when + the value of a name reference contained a positional + parameter and the name reference was not defined inside + a function has been fixed. +97-06-30 Arithmetic expressions now correctly handle hexadecimal + constants. +97-06-30 A bug in which integer variables could be expanded + with a leading 10# when declared with typeset -i + multiple times has been corrected. +97-06-30 A bug in which IFS wasn't correctly restored when + set within command substitution has been fixed. +97-06-30 The _ character is now considered as part of a word + with the M-f and M-b emacs directives as it was in ksh88. +97-06-30 A bug in brace pattern expansions that caused expressions + such as {foo\,bar,bam} to expand incorrectly have been fixed. + + +96-07-31 --- Release ksh93e --- +96-07-31 +The math functions, atan2, hypot, fmod, and pow were added. +96-07-31 +When a shared library is loaded, if the function lib_init() + is defined in the library, it is invoked the first time that + the library is loaded with builtin -f library. +96-07-31 The k-shell information abstraction database option, KIA, + has been revamped. +96-07-31 Empty command substitutions of the form $() now work. + whence -v foo now gives the correct result after calling + builtin -d foo. +96-07-31 A bug in right to left arithmetic assignment for which + the arithmetic expression (( y = x = 1.5 )) did not + yield 1 for y when x was declared typeset -i was fixed. +96-07-31 printf has been fixed to handle format containing + and/or 145 correctly. In addition, characters following + %b in the format string are no longer displayed when + the operand contains <JOIN>. +96-07-31 A bug in printf that could cause the %E format to + produce unnormalized results has been fixed. +96-07-31 A bug which causes some arithmetic expressions to be + incorrectly evaluated as integer expressions rather + that floating point has been fixed. +96-07-31 Functions defined inside a subshell no longer remain + defined when the subshell completes. +96-07-31 The error message from sh -c ';echo foo' has been + corrected. +96-07-31 The format for umask -S has been changed to agree + with the specification in the POSIX standard. +96-07-31 A bug that caused side effects in subscript evaluation + when tracing was enabled for subscripts using ++ or -- + has been fixed. +96-07-31 To conform to the Posix standard getopts has been changed + so that the option char is set to ? when it returns with + a non-zero exit status. +96-07-31 The handling of \} inside ${name...} has been fixed so + that the quotes the }. +96-07-31 A bug that caused the read builtin to resume execution + after processing a trap has been fixed. +96-07-31 [[ -s file ]] has been fixed so that if file is open + by ksh, it is flushed first. +96-07-31 In some cases attributes and sizes for non exported + variables weren't being reset before running a script. +96-07-31 The value of TMOUT was affected by changes make to + it in a subshell. +96-07-31 The jobs command did not reflect changes make by + sending the CONT signal to a command. +96-07-31 The error message for ksh -o unknown was incorrect. +96-07-31 Functions invoked as name=value name, did not use + values from the calling scope when evaluating value. +96-07-31 A bug in which the shell would reexecute previously + executed code when a shell script or coprocess was + run in the background has been fixed. +96-07-31 A bug in which an empty here-document would leave + a file descriptor open has been fixed. +96-07-31 A bug in which $(set -A array ...) would leave a + side effect has been fixed. +96-07-31 A discipline function for a global variable defined + within a function defined with the function keyword, + incorrectly created a local variable of the same name + and applied the discipline to it. + +95-08-28 --- Release ksh93d --- +95-08-28 The character was not handled correctly in replacement + patterns with ${x/pattern/replace}. +95-08-28 A bug with read in which the line did not end with + a new-line has been fixed. +95-08-28 A bug in file name generation which sometimes + appended a . for filenames that ended in / has + been fixed. +95-08-28 +If a process is waited for after a status has + been returned by a previous wait, wait now + returns 127. +95-08-28 A bug with hist (fc) -e which prevented a command + to re-executed after it had been edited has been fixed. +95-08-28 A bug which prevented quoting from removing the meaning + of unary test operators has been fixed. +95-08-28 A bug with typeahead and KEYBOARD traps with the + MULTIBYTE option set has been fixed. +95-08-28 +Builtin functions can take a third argument which is + a void*. +95-08-28 The nv_scan() function can restrict the scope of a walk + to the top scope. + +95-04-31 --- Release ksh93c --- +95-04-31 The expansion of "$@" was incorrect when $1 was the null + string. +95-04-31 A bug which could incorrectly report a syntax error in + a backquoted expression when a $ was preceded by \\ + has been fixed. +95-04-31 A bug which prevented the shell from exiting after + reporting an error when failing to open a script + has been fixed. +95-04-31 A bug that could lead to memory corruption when a + large here document that required parameter or command + substitution was expanded has been fixed. +95-04-31 A bug that could cause a core dump on some systems + after ksh detected an error when reading a function + has been fixed. +95-04-31 A bug which could cause a coprocess to hang when + reading from a process that has terminated has been fixed. +95-04-31 A bug which caused a script to terminate when set -e + was on and the first command of and && or || list + failed has been fixed. +95-04-31 A bug with here documents inside $(...) when the delimiter + word is an identifier has been fixed. +95-04-31 A bug which caused $0 to display the wrong value when + a script was invoked as an argument to the . command + and the eval command has been fixed. +95-04-31 A bug that could cause the built-in sleep to hang + has been fixed. +95-04-31 A bug introduces in 12/28/93b which caused the backslash + to be removed when it was followed by digit inside double + quotes in some instances has been fixed. +95-04-31 A bug which could cause a core dump if ksh was invoked with + standard input closed has been fixed. +95-04-31 A bug which could cause a core dump if typeset -A was + specified for an existing variable has been fixed. +95-04-31 Variables that were unset but had attributes such as readonly + and export were not listed with readonly, export and typeset. +95-04-31 Several problems with signals have been fixed. +95-04-31 A bug which prevented ulimit -t from working has been fixed. + Also, a bug in which failed ulimits could cause a core dump + has also been fixed. +95-04-31 A bug in expansion of the form ${name/#pattern/string} and + ${name/%pattern/string} has been fixed. +95-04-31 A bug which caused read -r on a line that contained only + blanks to get a non-null value has been fixed. +95-04-31 A bug introduced in the 'a' point release in which + ${x='\'} expanded to when x was unset has been fixed. +95-04-31 A bug which prevented a trap on EXIT from being executed + when the last command in a script was a function invocation + has been fixed. +95-04-31 A bug which caused an interactive shell ignore input when + standard error was redirected to a file with exec, + and then restored with exec 2>&1 has been fixed. +95-04-31 An interactive shell turns on monitor mode even when + standard error has been redirected to a file. +95-04-31 A bug which could cause standard input to be incorrectly + positioned for the last command of a script has been fixed. +95-04-31 A bug in the edit modes which allowed walking back in + the history file for more than HISTSIZE commands has + been fixed. +95-04-31 A bug which could cause a core dump if variable TMPDIR was + changed between two command substitutions has been fixed. +95-04-31. A bug which prevented a trap on EXIT from being cleared + has been fixed. +95-04-31 A bug fixed for the v directive in vi MULTIBYTE has been + fixed. +95-04-31 Code to for IFS handling of multibyte characters has + been added. +95-04-31 The displaying of multibyte strings in export, readonly, + typeset, and execution traces has been fixed. +95-04-31 Variables inside functions are now statically scoped. + The previous behavior was never documented. +95-04-31 Variables inside functions are now statically scoped. + The previous behavior was never documented. +95-04-31 A few changes have been made to the name-value library + that affect built-ins that use disciplines. The + changes allow disciplines to be shared by variables + and should make it possible to add new disciplines + without recompilation. +95-04-31 +The name-value library interface has undergone significant + change for this revision. See the new nval.3 man page. + +94-12-31 --- Release ksh93b --- +94-12-31 +Variables inside functions are now statically scoped. + The previous behavior was never documented. +94-12-31 +If IFS contains two consecutive identical characters belonging + to the [:space:] class, then this character is treated as + a non-space delimiter so that each instance will delimit + a field. For example, IFS=$'\t\t' will cause two consecutive + tabs to delimit a null field. +94-12-31 +The getopts command has a -a name option that specifies a + name that will be used for usage messages. +94-12-31 A bug which caused unset RANDOM to dump core has been + fixed. +94-12-31 A bug which prevented return for terminating a profile + or ENV file has been fixed. +94-12-31 A bug which prevented standard input from being + directed to /dev/null for background jobs when + monitor mode was turned off has been fixed. +94-12-31 Statements of the form typeset -options var[expr]=value + did not perform substitutions on expr as expected. +94-12-31 A bug which prevented the shell from sending a HUP + signal to some background jobs that were not disowned + has been fixed. +94-12-31 A bug which allowed a script to trap signals that are + ignored at the time that the shell was invoked by exec + has been fixed. +94-12-31 A bug which could cause a core dump when a discipline + function was unset within a discipline was fixed. +94-12-31 The typeset builtin now accepts a first argument of + + or - for compatibility with ksh88. +94-12-31 For compatibility with ksh88, the results of expansions + of command arguments will treat the extended character + match characters ()|& as ordinary characters. +94-12-31 A bug which caused read to fail on a file that was + open for read/write with <> when the first operation + was print or printf has been fixed. +94-12-31 When a job is suspended, it is put on the top of + the job list as required by the POSIX standard. +94-12-31 The value of OPTARG when an option that required + an argument but didn't have one was incorrect in the + case the the option string began with a :. +94-12-31 A bug which caused the terminal to get into a bad + state with some KEYBD traps in vi-mode has been fixed. +94-12-31 A bug which caused an invalid trap to cause a script + to terminate, rather than just return an error, has + been fixed. +94-12-31 Backreferencing sub-expressions in patterns and replacement + strings now works. +94-12-31 A bug in chmod which caused the -R option to fail has + been fixed. +94-12-31 +More signal names have been added for Solaris + +94-06-30 --- Release ksh93a --- +94-06-30 An expansion bug which causes portions of a word after + a $((...)) expansion that contains a nested $var expansion + to be lost has been fixed. +94-06-30 A bug that caused a core dump when a script that did not + have PWD set and did a cd inside command substitution + has been fixed. +94-06-30 A bug which caused a core dump on some machines when + the LANG variable was assigned to has been fixed. +94-06-30 A bug which incorrectly handled set disciplines that + performed arithmetic evaluation when the discipline + was called from the arithmetic evaluator has been fixed. +94-06-30 A bug caused by an EXIT trap inside a function that + was executed in a subshell was fixed. +94-06-30 If foo is a function, and not a program, then command foo + now reports that foo isn't found rather than invoking foo. +94-06-30 The previous version incorrectly listed -A as an + invocation option. The -A option is only for set. +94-06-30 A bug was fixed which caused ksh to loop when execution trace + was enabled and the PS4 prompt required command substitution. +94-06-30 A bug which could cause the job control switch character + to be disabled when a script that enabled monitor mode + terminated was fixed. +94-06-30 A bug in the macro expansion global replacement operator //, + when the pattern began with a [ or +( has been fixed. +94-06-30 A bug which prevented ~ expansion from occurring when + it was terminated with a colon inside an assignment + has been fixed. +94-06-30 A bug in the dot command which prevented autoload functions + from working has been fixed. +94-06-30 A bug which caused a variable to be unset if the + its value were expanded inside a set discipline has + been fixed. +94-06-30 Whence -a now longer reports that a defined function + is undefined. +94-06-30 A bug on some systems in which $0 would be incorrect + in scripts invoked by name has been fixed. +94-06-30 Here documents with an empty body now work. +94-06-30 A bug which disabled argument passing and resetting + of options for a script invoked by name inside a + function has been fixed. +94-06-30 A bug in which an EXIT trap set the caller of a function + would be executed if a command called inside a function + was not found has been fixed. +94-06-30 A bug which allowed a script to trap signals that are + ignored at the time that the shell was invoked has + been fixed. +94-06-30 A bug which caused 2<&1- when applied to a shell built-in + to leave standard input closed has been fixed. +94-06-30 A bug which caused the shell to incorrectly parse + $() command substitutions with nested case statements + has been fixed. + + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libast changes">libast changes</A></H3></FONT></FONT></CENTER> +<PRE> + +12-03-10 misc/optget.c: HELP_index for "PLUGIN" too +12-02-29 include/shcmd.h: PLUGIN_VERSION 20111111 for cdt disc/meth change +12-02-29 comp/spawnveg.c: fix sigcritical() to include waitpid() for internal child +12-02-29 malloc.c: make __malloc_hook initialization thread safe +12-02-24 comp/iconv.c: fix winix UTF-8 vs UCS-2 over-conversion +12-02-24 astsa/*.h: clean up header guards +12-02-24 astsa/astsa.omk: clean up standalone old make makefile interactions +12-02-21 misc/cmdarg.c: fix bug that set argv[0] +12-02-10 sfvprintf.c: fix 1 byte too long buffer access +12-02-07 malloc.c/features/vmalloc: add gnu __malloc_hook tests +12-02-06 vmmopen.c: fix ALIGN vs sys/param.h macro conflict +12-02-02 astlicense.c: add license.component for component-specific licenses +12-01-31 spawnveg.c: fix transient bug that made invalid setpgid() call +12-01-27 pathpath.c: fix buffer size math when internal allocation requested +12-01-24 malloc.c: fix _vmkeep() bug that did not return previous state +12-01-23 malloc.c: add VMALLOC_OPTIONS=break to try sbrk() block allocator first +12-01-21 astlicense.c: option style only overrides default license.type +12-01-18 malloc.c: disable multiple regions for tracing or !vmbest or ASO_SIGNAL +12-01-12 sfpkrd.c: add __sun I_PEEK+rsh runtime workaround +12-01-10 shcmd.h: void* => Shbltin_t* +12-01-10 tmxdate.c: handle { n>=1000 } TM_PARTS +11-12-21 plug up some meory links -- thanks mhlavink +11-12-21 vmprivate.c: enclose VM_NONMEM exception in CLRLOCK(vm,0) ... SETLOCK(vm,0) +11-12-13 aso: in -lposix for uwin, not -last -- just like vmalloc +11-12-13 sfpoll.c: all streams SF_IOINTR => don't ignore EINTR +11-12-13 sfdcslow.c: set SF_IOINTR +11-12-09 malloc.c: add _vmkeep() for setlocale() intercept _SYS_setlocale_free_OK +11-12-04 sfio: _Sfmaxr=0 (unlimited) by default; use ulimit -M|-d or SFIO_OPTIONS +11-12-01 aso: sync to new api +11-11-11 optget.c: move .TH to the top for --nroff to get our macros first +11-11-11 aso,cdt,vmalloc: resync with kpv +11-11-11 cdt: preserve bits and Dt_link_t for CDT_VERSION < 20111111 +11-10-24 sfvprintf.c: %.-ns truncate from left to n chars +11-10-21 sfvprintf.c: fix %0s (no width) core dump +11-10-10 aso: add _WIN32 support +11-09-26 vmalloc: sync with kpv +11-08-29 features/{dirent,wchar,wctype}: eliminate #include with no header +11-08-25 #pragma prototyped tweaks -- sun4 is dead, long live sun4 +11-08-25 ftwalk.c: FTS_SLNONE => FTW_SL +11-08-11 features/wchar: fix #include _nxt_wchar for K&R C +11-08-04 optget.c: tweak --html rendering +11-07-24 mime.c: add %(default)[st] default if arg == "" +11-07-21 setlocale.c: fix debug locale to treat "<<" as two single byte chars +11-06-14 spawnveg.c: pgid -1: new session -2: setpgrp()&&tcsetpgid() +11-06-14 pathprog.c: add darwin _NSGetExecutablePath +11-05-14 features/common,features/align.c: { _X86_ _X64_ } conditionals for generic uwin +11-05-13 tm/tminit.c: tweak tzname[] prototype +11-05-09 astlicense.c: add ". file" parent-relative include and depth 4 input stack +11-05-05 cmdarg: update to cmdopen_20110505 api +11-05-03 sfio/sfclose.c: make sure close() errors propagate to sfclose() return value +11-04-20 port/astlicense.c: add { id name } keys +11-04-15 fmtdev.c: fix to work for non-{blk,chr} special +11-04-12 stk: change size args to size_t and stseek() offset to ssize_t +11-04-12 sfio: sync with kpv to optimize large SF_STRING sfputr() buffer allocation +11-03-28 misc/fts.c: fix FTS_SLNONE logic to set it when it should! +11-03-17 misc/stk.c: fixed bug that could delete an active stack frame +11-03-10 sfio/sfvprintf.c: add %0<width>s to preserve <width> trailing chars in string arg +11-03-09 misc/magic.c: add %d...%s where if %d==1 then %s=="" else %s=="s" +11-03-09 misc/magic.tab: add windows ico +11-02-08 misc/stk.c: change STK_FSIZE to (1024*sizeof(char*)) for 64 bit normalization +11-02-02 sfio/sfmode.c: don't call sfsetbuf() on unbuffered stream to make it unbuffered +11-02-02 features/wchar: handle hp.ia64 va_list interactions +11-02-02 comp/omitted.c: fix mismatch between stat() vs _stat() +11-01-31 std/wctype,features/wctype: add to handle <wchar.h> interactions +11-01-28 add -lw for ancient sunos +11-01-28 include/magic.h,misc/magic.c: add MAGIC_ALL +11-01-27 tm/tmxfmt.c,tmpoff.c: %_z for SHH:MM +11-01-25 features/wchar: change <wctype.h> <wchar.h> ordering +10-12-24 sfstrtof.h: fix thousand grouping bug that did not check last group +10-12-21 pathkey.c: add win32 { /32 /64 } preroot to hash +10-12-09 pathprog.c: handle intermediate path != '* and fix invalid pathpath() call +10-12-01 astconf.c: fix look.standard undefined variable reference +10-12-01 sfset.c: SF_LINE|SF_WCWIDTH => no need for sfsetbuf() to call isatty() +10-12-01 sfsetbuf.c: cache /dev/null <dev,ino> to cut down /dev/null stat()'s +10-12-01 optget.c: delay dictionary initialization until needed +10-11-30 malloc.c: drop { VMDEBUG VMETHOD VMPROFILE VMTRACE } env checks +10-11-30 port/astconf.c: eliminate esaccess() calls for OP_universe checks +10-11-24 regcomp.c: [[=]=]] must at least match itself in non-C locales +10-11-23 glob.h,glob.c: add GLOB_GROUP => REG_SHELL_GROUP +10-11-20 glob.c: handle mode switches across / +10-11-19 regcomp.c: REG_SHELL => REG_CLASS_ESCAPE +10-11-16 vmalloc.h: add VMFL tracing to vmstrdup() +10-11-16 ast.h: simplify VMDEBUG _BLD_DEBUG and VMFL logic +10-11-12 tm/tmlocale.c: ast TM_* extensions default to C locale +10-11-10 regex/regnexec.c,vmalloc/vmstat.c: eliminate strict-aliasing puns +10-10-20 misc/translate.c: change debug translation to drop " in (a,b,c,"d") +10-10-10 misc/glob.c: drop ancient D_FILENO(d)!=0 test and trust readdir() +10-10-06 misc/translate.c: fix "debug" locale logic +10-10-04 misc/magic.c: fix magic() skip check to honor the continuation +10-10-04 regex/regcoll.c: add wchar_t* args to regcollate(), drop ucs name lookup +10-09-28 comp/setlocale.c: add utf8_wctomb() +10-09-28 string/chresc.c,regex/regcoll.c: fix \S[.X.] (\C[.X.] never worked!) +10-09-24 string/chresc.c: \Cc for control c, \S[.X.] for collating symbol X +10-09-24 string/chresc.c: { <JOIN>c \ } deprecated +10-09-22 regex/regcomp.c: fix off-by-one collation class allocation bug +10-09-20 regex/regclass.c: fix CTYPES off-by-one bug +10-09-14 comp/conf.sh: const int conf_elements, prefix_elements; +10-09-08 add features/sizeof => ast_sizeof.h +10-08-31 comp/getopt[l].c: export functions for dlls +10-08-25 port/lc.c: add features/locale check for canonical UTF-8 spelling +10-08-20 include/ast.h: add export plugin_version() prototype +10-08-20 comp/conf.tab: add SF_BUFSIZE +10-08-11 misc/conformance.c: conformance(0,0) => "standard" +10-08-11 misc/conformance.c: check ast_env_serial for dynamic astconf() changes +10-08-11 port/lcgen.c: remember to fudge Table_t.count for synthesized entries +10-08-04 include/ast.h,comp/setlocale.c: add { debug C.UTF-8 } mbalpha() mbwidth() +10-08-02 misc/translate.c: add NLSPATH message cache check +10-07-29 string/fmtint.c: fix nasty bug that rendered "1000" as "1" +10-07-27 setlocale,lsgen,localeconv: handle C vs C_EU decimal thousands sep +10-07-26 misc/optget.c: fix interaction with nested plugin/builtin calls +10-06-29 string/strtoi.h: strton() multiplier 1 => power of two suffix +10-06-28 features/wchar: handle systems that require __va_list => va_list +10-06-28 comp/conf.tab: another PID_MAX tweak -- default to 99999 for most +10-06-28 port/astconf.c: lone "CONFORMANCE = standard" => all defaults standard +10-06-25 misc/optget.c: avoid sfprints() call during initialization +10-06-01 features/api, ast_api.h: formalized forwards/backwards api compatibility +10-06-01 _AST_API=20100601: add size_t args for all path*() output buffers +10-06-01 comp/setlocale.c: handle C.UTF-8 test locale +10-06-01 include/mc.h: add size_t to mcfind() for result buffer (internal api) +10-06-01 use strlcpy() instead of strncpy() +10-05-28 include/ast_version.h: add AST_PLUGIN_VERSION for dllplugin() +10-05-28 include/shcmd.h: add SH_PLUGIN_VERSION for dllplugin() +10-05-28 misc/conformance.c: add conformance(3) +10-05-28 misc/optget.c: add [(id1|id2)...] conformance("id1|id2",0) conditionals +10-05-25 include/sfhdr.h: adjust SF_NMAP according to _ptr_bits +10-05-25 include/shcmd.h: add sh_builtin() macro for lib_init() table initialization +10-05-21 misc/optget.c: --html \bfoo::bar([[:digit:]][[:upper:]]*) => foo-bar.html +10-05-15 include/proc.h,misc/procopen.c: add PROC_ORPHAN +10-05-09 misc/optget.c: add --???MAN[section] --???SECTION +10-05-07 sfio,stdio: fix all snprintf() variants to handle buf==0 and/or n==0 +10-05-04 string/fmtesc.c: add mb iswsoace() and iswcntrl() quoting checks +10-05-03 fix LC_MESSAGES catalog lookup bugs, check for $set==3, accept $set==1 +10-04-30 string/chresc.c: add chrexp() for FMT_EXP_* +10-04-30 string/stresc.c: add strexp() for FMT_EXP_* +10-04-30 string/chresc.c: fix \uXXXXY bug that consumed Y +10-04-22 misc/optget.c: check for html entities in <A name="..."> +10-04-22 misc/getcwd.c: add features/syscall check for SYSGETCWD() { linux solaris } +10-04-22 string/stresc.c: wide chars absent locale guidance default to UTF-8 +10-04-12 port/mnt.c: favor bsd getfsstat() over getmntinfo() +10-04-11 string/strtoi.h: k (1000) and ki (1024) now differentiated +10-04-10 misc/recstr.c: fix 'd[delimiter]' parse +10-04-08 include/vmalloc.h,vmalloc/vmstat.c: add Vmstat_t.mode region mode bits +10-04-05 misc/fts.c: drop 1997-01-07 fts_open()=0 is one file and stat() fails +10-04-05 misc/optget.c,optlib.h: add Optpass_t.release for --nroff .TH +10-04-02 misc/optget.c: fix $'[-n?..]' --version bug +10-04-02 regex/regcomp.c: ~(X) => REG_EXTENDED|REG_AUGMENTED, ~(PU) instead of ~(U) +10-03-24 misc/procopen.c: add PROC_FD_CTTY(fd) +10-03-24 path/pathtemp.c: fix pointer => int casts +10-03-15 regex/regcache.c: fix 1 byte buffer overflow (didn't count trailing ) +10-03-08 features/tvlib: fix utimensat probe to include all macros/structs +10-03-07 features/lib: change stream_peek to test pipes only +10-03-07 string/strelapsed.c: fix next char return overrun +10-03-06 tm/tvtouch.c: use runtime fallback if utimensat() fails with ENOSYS +10-03-05 path/pathtemp.c: add pfx /seed for regression testing +10-03-04 vmalloc/vmwalk.c: add user supplied handle arg +10-03-04 path/pathtemp.c: properly handle mktemp()-style *+(X) templates +10-03-03 include/ast_getopt.h: remove NULL guard - _AST_GETOPT_H now handles it +10-02-24 comp/getopt.h: fix ast_std.h interactions +10-02-24 vmalloc/malloc.c: empty { VMALLOC_OPTION VMDEBUG ... } => no debug! +10-02-02 string/base64.c: fix corner case output buffer overflow +10-02-02 features/fs: sys/mnttab.h requires stdio.h on some systems!! +10-02-01 misc/optget.c: uppercase --html heading -- doh +10-01-29 misc/optget.c: [+NAME?...] overrides error_info.id for >= STYLE_man +10-01-25 vmalloc/vmprivate.c: fix seg ptr initialization bug (24 years old!!) +10-01-20 misc/optget.c: handle nested {...} rendering +10-01-20 misc/state.c: add ast.version for runtime api version +10-01-20 port/astconf.c: "_AST_VERSION" now returns ast.version +10-01-20 include/ast_std.h: add ast.version for runtime api version +10-01-19 astlicense.c: add epl +10-01-01 vmalloc: VMALLOC_OPTIONS env var for all runtime options +10-01-01 include: change some <ast.h> refs to less intrusive <ast_*.h> +10-01-01 setlocale.c,translate.c,fmterror.c: AST_LC_internal retains prev state +10-01-01 comp/setlocale.c: AST_LC_setenv defers to LC_ALL (for sh) +10-01-01 ast_std.h: add { AST_LC_internal AST_LC_setenv } +09-12-24 comp/setlocale.c: fix setlocale(LC_ALL,"") when already initialized +09-12-17 misc/optget.c: handle mixed solaris usage="x:f:(in)yo:(out)" +09-12-11 regex/regcomp.c: posix semantics for [z-a] +09-12-11 regex/regcomp.c: fix BRE/ERE ^^ logic +09-12-11 regex/regcomp.c: fix regcomb() for REG_LEFT|REG_RIGHT +09-12-11 regex/regcomp.c: bm complete=0 if REX_END +09-12-11 comp/sigflag.c: add with npt check in features/sig.sh +09-12-11 tm/tminit.c: fix _tzset_environ logic +09-12-09 tm/tmlocale.c: include "ast_nl_types.h" to pull nl_langinfo in! +09-12-04 features/options: add "opt map-libc" check +09-12-03 tm/tmxdate.c: fix 'next month final day' for dec -> jan +09-11-21 misc/magic.tab: add gimp XCF +09-11-20 vmalloc/vmtrace.c: add pid to assertion disgnostics +09-11-11 regex.h,regcomp.c: add REG_CLASS_ESCAPE, inside [...] literal by default +09-11-03 regex/regcache.c: change to variable length pattern strings +09-10-28 include/error.h: fix ERROR_translate() arg parens +09-10-26 port/lcgen.c,comp/setlocale.c: handle LANG init after LC_* already defined +09-10-05 _sfopen.c: add but ignore 'F' flags for stdio compatibility +09-09-28 fts.h,ftwalk.h,fts.c: promote { namelen pathlen level } to (s)size_t +09-09-28 locales: add AST_LC_LANG for $LANG +09-09-28 setlocale.c: fix logic for dynamic { LANG LC_ALL LC_* } changes +09-09-17 include/sfio.h,sfio/sfwalk.c: add sfwalk() +09-09-09 sfio/sfputr.c: add SIGPIPE hang fix +09-08-24 sfio/sfreserve.c: fix SF_UNBOUND logic with pushed streams +09-08-18 include/ast_std.h,ast.h: add ast.mb_sync to sync mbchar() after error +09-08-17 comp/setlocale.c: add AST_LC_utf8 and { utf8_mbtowc() utf8_mblen() } +09-08-11 comp/setlocale.c: treat "en"/"en_US" AST_LC_MESSAGES as "C"/"POSIX" +09-08-10 vmalloc/vmhdr.h: add user-defined _AST_PAGESIZE and computed VMHEAPINCR +09-08-09 comp/conf.tab: add NPROCESSORS_MAX +09-07-29 astlicense.c: fix first name=value logic error +09-07-22 string/fmtip6.c: don't drop trailing 0 in 44::1:0:0 +09-06-30 port/astconf.c: standard PATH_RESOLVE is "physical" (not "metaphysical") +09-06-19 vmalloc: sync with kpv +09-06-19 include/shcmd.h: add sh_context(p) cast +09-06-11 misc/magic.tab: differentiate pc 386 32/64 bit dll/exe/obj +09-06-06 port/astconf.c: fix look->name null pointer reference +09-06-05 port/astconf.c: fix 'UNIVERSE = value' synthesize logic +09-05-25 tm/tmxduration.c: add +09-05-08 comp/syslog.c: add _UWIN /var/log/syslog preference +09-05-01 comp/setlocale.c: fix _UWIN intercepts to return NiL on unknown locales +09-04-27 sfio/sfpool.c: fix bug that did not return pool on delete +09-04-22 include/regex.h,regex/regcomp.c: add REG_REGEXP <regexp.h> compatibility +09-04-15 tm/tmxdate.c: handle "4th thursday in november" +09-03-31 string/strvcmp.c,string/strnvcmp.c: add version strcmp(3) +09-03-31 string/strpcmp.c,string/strnpcmp.c: add path prefix strcmp(3) +09-03-29 misc/optget.c: clean up num = number casts +09-03-04 tm/tmxmake.c: add tmxtm() with zone override +09-03-03 tm/tmxfmt.c: add %(...)<c>, specifically %(...)z for output zone +09-02-22 tm/tmxdate.c: add iso P... durations +09-02-02 path/pathprog.c: add +09-02-02 misc/opthdr.h,optget.c: fix flags mixup, handle old '-' as option +09-02-02 sfio/sfprints.c: fix sfvaprints() return value to not count trailing ' ' +09-02-02 misc/cmdarg.c: handle !defined(ARG_MAX) +09-02-02 port/astconf.c: fix UNIVERSE overwrite of null[] value! +09-01-31 features/sys: drop header sys/localedef.h +09-01-28 include/fs3d.h,misc/fs3d.c: mount() => fs3d_mount() for diff std prototypes +09-01-14 misc/fts_open.c: delay top list reorder until first fts_read() +09-01-14 include/ls.h: LS_W_INUMBER => 9 to accomodate large st_ino +09-01-14 misc/optget.c: expand STYLE_usage input text +09-01-09 features/uwin,stdio/_stdfun.c: iffe for _p__iob and __p__iob +09-01-09 misc/magic.tab: add ISO filesystem image entries +09-01-07 string/strtoi.c: strtol() etc. do not consume [lLuU] suffix -- thanks jkf +09-01-07 sfio/sfstrtof.h: strtod() etc. do not consume [fFlL] suffix -- thanks jkf +09-01-05 string/strlcat.c: fix logic to match docs (not that easy) +08-12-30 tm/tmxdate.c,include/tm.h: add TM_WORK { "workday" "working" "work" } +08-12-28 sfio/sfcvt.c: fix 'a' format rounding +08-12-21 tm/tmdata.c: add 2008-12-31+23:59:60-0000 leap second event +08-12-19 tm/tmxdate.c: check for dates near the epoch rolling back to the future +08-12-19 tm/tmxfmt.c: change %s for now==0 to be the epoch +08-12-07 include/ast_std.h,misc/getenv.c: no _ast_getenv for uwin ast54 compatibility +08-12-07 tm/tmxfmt.c: add %[_][EO]K for [space pad] [full|long] iso +08-12-07 sfio/sfvscanf.c: fix ok[] short by one allocation +08-12-07 comp/setlocale.c: fix off by one composite initialition loop test +08-12-07 path/pathkey.c: fix off by one loop test +08-12-04 vmalloc/vmbest.c: catch sbrk() wraparound +08-12-04 comp/spawnveg.c: clean up attrs on failure too +08-11-04 regex/regcomp.c: fix locale [!-...] and [^-...] re-initialization +08-11-04 stdio: add flockfile.c ftrylockfile.c funlockfile.c +08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization +08-09-10 misc/magic.c: handle old vcodex() indices +08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead +08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd +08-09-04 regex/regnexec.c: fix nested delimiter match beyond end of subject +08-08-20 misc/fts.c: fix st_nlink stat() optimization logic +08-08-19 sfio/sfpkrd.c: workaround macosx recv(PEEK) data consumption on non-socket +08-08-19 strn?tol?d: handle long double with smaller exponent range than double +08-08-18 sfio/sfcvt.c: eliminate excessive multiplies and integral overprecision +08-08-11 tm/tmxfmt.c: handle %10N and %010N +08-08-06 include/shcmd.h: add 'int invariant;' for builtin invariant arg count +08-08-05 features/ndbm: favor sleepycat ndbm compatibility +08-07-21 include/glob.h,misc/glob.c: GLOB_STARSTAR only forces lstat on chdir +08-07-17 sfio: sync with kpv +08-07-17 misc/optget.c: call astwinsize() each time terminal width required +08-07-16 sfio/sfvscanf.c: fix %% to skip leading space per posix +08-07-16 vmalloc/vmbest.c: add VMCHECK=m, VM_mmap to favor mmap() alloc +08-07-16 features/stdio,stdio/f(read|write).c: size_t return value!! ouch +08-06-24 tm/tmxfmt.c: fix %z to handle tm_isdst -- doh +08-06-24 misc/astintercept.c,misc/getenv.c: split from misc/setenviron.c +08-06-17 misc/setenviron.c: add { astintercept() getenv() } +08-06-09 tm/tmlocale.c: use _DATE_FMT if defined for TM_DEFAULT +08-06-06 misc/optget.c: handle sub-component about details +08-06-04 misc/optget.c: fix [-n?..#0093; version parse +08-06-04 include/debug.h,misc/debug.c: merge with kpvdebug.h +08-06-02 features/ndbm: add to tame dbmlib.iffe replication +08-06-01 comp/resolvepath.c,realpath.c: fix resolvepath() return value type +08-05-22 tm/tmxdate.c: fix a few ordinal/last/this/next bugs +08-05-18 string/fmtre.c: fix omitted stack var initialization bug +08-05-14 regex/regcomp.c,regcoll.c: fix UTF-8 collation sequence logic +08-05-11 tm/tmxfmt.c: :NOOPTIMIZE:, otherwise %Q/../../ fails +08-05-01 tm/tmxdate.c: mon 1..12 => mon[13] -- doh +08-04-30 misc/glob.c,reegex/regcomp.c: ~(R) => ~(O) to avoid pcre clash +08-04-24 port/astconf.c: 'name = value' does assignment without system init +08-04-15 port/astconf.c: SC#N treated like 'SC(N)' +08-04-14 misc/optget.c: clean up nroff output +08-04-01 port/astconf.c: add RELEASE => /proc/version fallback +08-03-30 misc/optget.c: [-n]... to enable -number & +number options +08-03-06 misc/optget.c: ---* and +++* are now operands +08-03-06 misc/errorx.c: fix old error_info.translate workaround +08-02-05 regex/regcomp.c: allow REG_SHELL {,n}... => {0,n}... +08-02-27 misc/stk.c: top element during allocation relocated to top +08-02-18 include/ip6.h,string/strtoip6.c,fmtip6.c: add ipv6 addr support +08-02-14 regex/regsubexec.c: fix null match (tricky) +08-02-14 regex/regsubcomp.c: fix SRE to match ksh +08-02-11 comp/spawnveg.c: return proper errno on [v]fork() failure +08-02-11 tm/tmxdate.c,tmdata.c: handle more ISO 8601:2000 forms +08-02-02 regex/reglib.h: add REGMULTIREF to REG_COMP +08-02-02 string/strmatch.c: fix str="" pat="" sub values +08-01-31 comp/conf.sh,conf.tab: handle /bin/sh in read data, redir subshell +08-01-18 misc/magic.tab: amd-x68, 64-bit => x86-64 +08-01-18 string/strnton.c,strntonll.c: add +07-12-10 string/strelapsed.c: "0" is a valid elapsed time! +07-12-02 sfio/sfreserve.c: preserve SF_SHARE sfrd() via sfreserve(f,0,0) +07-11-21 comp/setlocale.c: add sjis_mbtowc() to work around [\~] translation +07-11-15 features/signal.c: RT(1) .. RT(MAX-1) => RTMIN+1 .. RTMAX-1 +07-11-14 features/float: favor sscanf() due to gnu strto[l]d() nan bugs +07-10-31 regex/regcomp.c: fix REX_COLL_CLASS node allocation size +07-10-31 sfio/sfcvt.c: use signbit() if available +07-10-31 features/isoc99: _ISOC99_SOURCE tests +07-10-31 port/astmath.c: add -DN=8 for signbit() +07-10-31 sfio/sfstrtod.h: don't forget about -0.0 +07-10-26 features/map.c: add { optopt optarg optind opterr } +07-10-26 features/stdio: add _filbuf => _ast__filbuf +07-10-26 comp/getsubopt.c: fix #undef that interfered with <ast_map.h> +07-10-26 regex/regcomp.c: fix bug that missed ')' in ~(F)... +07-10-12 port/astconf.c: fix CONF_ALLOC 16 bit overflow +07-10-12 misc/fts.c: fix fts_close() to free the handle -- doh +07-10-11 comp/setlocale.c: second and subsequent setlocale(*,"") reverts to previous +07-10-11 path/pathprobe.c: add vfs ST_NOSUID check +07-10-10 comp/conf.tab: add a few more xpg6 deferrals +07-09-28 astsa: update to share with mainline src via _PACKAGE_astsa +07-09-25 sfio/sfgetr.c: no limit on string stream line size +07-09-25 sfio/sfextern.c: increase _Sfmaxr to 256*1024 +07-09-18 misc/procopen.c: tighten up SIGCHLD logic between parent/child +07-09-18 misc/signal.c: unblock SIG_DFL after setting handler, sig<0 => don't unblock +07-09-13 misc/fs3d.c: no $LD_PRELOAD => no 3d and avoids invalid mount(2) call +07-09-11 vmalloc: vmstat(0,0)==1 => region in use, drop VM_primary|VM_secondary +07-09-05 misc/recstr.c: handle [lL] gobbled by strtol() -- ouch +07-08-17 path/pathprobe.c: handle '\r' in VERSION string +07-07-17 regex/regcache.c: regcache(0,n,0) extends cache to size n (no shrinking) +07-07-16 tm/tmdata.c: add 2005-12-31, drop 1999-12-31 (where did that come from?) +07-05-21 tm/tmxfmt.c,tmxscan.c: %F => %L (TM_DEFAULT); %F => %Y-%m-%d +07-05-15 sfio/sfvprintf.c: %h? and SFFMT_SHORT => raw bytes +07-05-09 features/signal.c,features/siglist: use kill -l & strsignal() +07-04-25 misc/optctx.c: add for opt_info switching +07-04-24 misc/cmdarg.c,include/cmdarg.h: add CMD_CHECKED, CMD_SILENT +07-04-24 misc/procopen.c,include/proc.h: add PROC_CHECK +07-04-24 misc/procrun.c: add flags arg (current use PROC_ARGMOD) +07-04-24 misc/cmdarg.c,include/cmdarg.h: move from src/cmd/tw +07-04-20 port/(lclang.h|lc.c|mc.c|lclib.h|lcgen.c): separate lctab.c +07-04-20 comp/conf.sh: defer to systems without 'grep -q' -- sigh +07-04-20 comp/conf.sh: probe for LL integer constant initializer suffix +07-04-20 include/syslog.h: <namval.h> => <ast_namval.h> for win32 +07-04-20 ast_namval.h: add as copy of include/namval.h for win32 +07-04-19 comp/conf.tab: fix SVID SI entries to probe SI_* (not _SI_*) +07-04-13 tm/tmxdate.c,tm/tmzone.c: handle [-+]0000 UTC zone offset +07-04-11 sfio/sfvprintf.c: add %F, propagate SFFMT_UPPER +07-04-11 sfio/sfcvt.c: handle SFFMT_UPPER => nan/inf vs. NAN/INF +07-04-02 comp/conf.tab,comp/conf.sh: add C/POSIX <stdint.h> symbols +07-03-28 misc/optget.c: fix l10n --?- +07-03-25 features/common: fix { ast_std.h ast_map.h stdint.h } logic +07-03-21 error.h: move from error_info to (*_error_data_) +07-03-21 misc/error.c: add errorctx() for error_info switching +07-03-21 option.h: move from opt_info to (*_opt_data_) +07-03-19 regex/regdecomp.c: fix REX_ONECHAR escapes and add REX_KMP +07-03-11 tm/tmxscan.c,regex/regnexec.c: fix strict-alias transgressions +07-02-27 comp/conf.sh: handle native getconf invalid numeric values +07-02-21 comp/conf.sh,comp/conf.tab: handle SSIZE_MAX vs _POSIX_SSIZE_MAX +07-02-20 sfio/sfvprintf.c: handle SF_WCWIDTH justification +07-02-14 features/common: cover <stdint.h>, move to int_(bits)_t +07-02-14 include/int.h: drop +07-02-14 include/sfio.h: add SF_WCWIDTH +07-02-12 comp/conf.sh: fix CONF_LIMIT bug that missed ULONG_MAX etc. +07-02-12 comp/conf.tab: *LONGLONG* => *LLONG* to match posix +07-02-12 features/float: *LONGLONG* => *LLONG* to match posix +07-02-12 port/astconf.c: handle CONF_LIMITS_DEF with no deferral +07-02-12 stdio/vasprintf.c: add trailing ' ' -- doh +07-02-04 string/fmtelapsed.c: fix naive multi month/year logic +07-02-02 misc/optget.c: add --??posix for getopts(1)/getopt(3) +07-01-26 string/chresc.c: use mbchar() +07-01-26 misc/optget.c: handle "o:-:" usage for old-style long options +07-01-22 sfio/sfdisc.c,sfpool.c: handle push on streams with pending peek +07-01-22 include/sfio.h: mv Sfieee_t to sfio/sfhdr.h +07-01-17 tm/tmxfmt.c: fix terminating nil logic which clobbered size-1 +07-01-11 misc/stk.c: a 2 day marathon bug fix (can we release now dr ek?) +07-01-05 comp/spawnveg.c: posix_spawnattr_setflags(POSIX_SPAWN_SETPGROUP) +07-01-05 misc/error.c: fix multibyte vs. printable logic +07-01-01 comp/conf.sh: LC_ALL=C +06-12-26 tm/tmxdate.c: handle nn*.nnnn* == sec.ns +06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns +06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h ! +06-12-12 string/strperm.c: octal modes are absolute! +06-12-11 comp/conf.tab: always defer ARG_MAX +06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh +06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches +06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 } +06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside [...] +06-12-01 sfio/sfcvt.c: add signbit/copysign tests +06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d +06-11-20 features/common: bias _ast_int8_t "long long" before "__int64" +06-11-20 string/strperm.c: fix X to work with all ops (not just +) +06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants +06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls +06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native +06-11-11 comp/conf.tab: add D to defer to native +06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash +06-11-01 include/ast.h: add FMT_PARAM for fmtquote() +06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control +06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127 +06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts +06-10-30 string/fmtscale.c: fix 1024 rounding bugs +06-10-27 disc/sfkeyprintf.c: handle 'i' (=='d') -- oops +06-10-26 sfio/sfvprintf.c: %#d => fmtscale(1000), %#i => fmtscale(1024) +06-10-26 features/map.c: _map_libc cleanup +06-10-26 features/fcntl: add to the circle of trust +06-10-26 features/sys: add <sys/socket.h> socklen_t +06-10-26 include/regex.h: handle include before <ast_map.h> +06-10-25 astconf "SHELL" => "SH" to avoid _POSIX_SHELL conflict +06-10-25 comp/conf.*: drop no-op duplicate conftab.c entries +06-10-18 string/fmtscale.c: 1000: n[.]n[n](kMGTPE), 1024: n[.]n[n](KMGTPE)i +06-10-11 ast_std.h: now implies <sys/stat.h> (did on most before anyway) +06-10-11 strtoi.h: ignore sign for 0, validate scale shift +06-10-11 strdup.c,vmstrdup.c: handle 0 arg +06-10-11 add sfstruse()/sfstropen() error checks +06-10-10 misc/procopen.c: envv==environ => don't modify environ +06-10-10 misc/procclose.c: return valid exit(1) status +06-10-06 port/astconf.c,comp/conf.sh,comp/conf.tab: play nice with getconf(1) +06-10-01 comp/conf.tab: SHELL default checks { _CS_PATH } X { ksh ksh93 sh } +06-10-01 comp/conf.sh: export CONF_getconf to shell actions +06-10-01 comp/putenv.c: always enable setenv() for procopen() +06-10-01 misc/procopen.c: use pathshell() or astconf("SHELL",0,0) if PARANOID +06-10-01 path/pathshell.c: localize the shell path patterns and accept ksh93 +06-09-28 Makefile: avoid ast <stdio.h> vix iffe -X ast -- doh +06-09-27 regex/regdecomp.c: add +06-09-26 regex/regcomp.c: handle KRE ~(...)<invalid-kre> +06-09-25 reorganize to avoid native header intercepts +06-09-15 uwin/crypt.c: _UWIN only! +06-09-14 Makefile: tweak the ast_common.h bootstrap again (finally?) +06-09-14 misc/optget.c: noncommercial => OPT_proprietary +06-09-12 string/strelapsed.c: fix multi-char qualifier parse +06-09-12 string/strtoi.h: drop [cClLqQwW] multipliers +06-09-11 misc/optget.c: add numeric arg validity check +06-09-07 misc/optget.c,tm/tmfix.c: fix uninitialzed var refs +06-09-05 path/pathprobe.c: add version header verification +06-08-01 Makefile: handle iffe vs FEATURE/common vs ast_common.h +06-08-31 Makefile: add ast_map.h to the bootstrap list +06-08-30 misc/glob.c: fix ~(E)re bug that stripped ~(E) before regcomp +06-08-30 include/ast.h: add { integralof(x) pointerof(x) } +06-08-27 string/strelapsed.c: fix off-by-one (too little) parse bug +06-08-25 misc/optget.c: 0*<n>.* numeric option args => <n>.* +06-08-22 misc/glob.c: handle ~(...) pattern options +06-08-16 string/strelapsed.c: fix off-by-one (too far) parse bug +06-08-16 regex/regcomp.c: accept but ignore ~(N) +06-08-14 features/libpath.sh: add solaris LD_LIBRARY_PATH_64 check +06-08-05 sfio/sfpool.c: pool SF_READ|SF_WRITE loop fix +06-08-02 misc/fts.c: fix FTS_NOSTAT optimization to check for .. +06-07-28 include/glob.h: add gl_extra for user globlist_t expansion +06-07-27 features/common: #include "ast_map.h" +06-07-26 comp/fnmatch.[ch]: allow <ast_map.h> to map fnmatch() +06-07-22 cdt: snarf from kpv +06-07-17 string/strperm.c: perm==-1 skips umask(1) +06-07-17 sfio/sfvprintf.c: handle format invalid mb seq +06-07-17 regex/regcomp.c: inline REG_SHELL => anchored, otherwise not +06-07-17 regex/regcomp.c: inline B|G:basic E:REG_EXTENDED F|L:REG_LITERAL +06-07-17 regex/regcomp.c: inline l:REG_LEFT r:REG_RIGHT +06-07-17 regex/regcomp.c: inline a:REG_LEFT|REG_RIGHT p:~REG_LENIENT +06-07-17 string/chresc.c: add \Uxxxxxxxx +06-07-17 sfio/sfstrtof.h: ignore thousands sep after decimal +06-07-17 string/tokline.c: splice() => spliceline() for bsd +06-06-27 features/float,sfio/sfcvt.c: fix Nan logic +06-06-27 port/astmath.c: fix long double isnan() test +06-06-27 features/map.c: _map_libc for std => _ast_std +06-06-25 string/strperm.c: handle posix = w.r.t. umask +06-06-19 port/mnt.c,features/fs: handle netbsd getmntent api change +06-06-18 regex/regstat.c: add REG_LITERAL check +06-06-11 cdt/dtview.c: update from kpv +06-05-31 sfio/sfhdr.h: fix _SFOPEN() typo +06-05-09 comp/conf.sh: add native getconf -a names to the mix +06-04-28 misc/optget.c: add solaris long option name compatibility +06-03-09 string/strmatch.c: add REG_ADVANCE => REG_* flags +06-02-14 comp/iconv.c: fix uwin iconv_list() /reg/ generator +06-02-10 port/astconf.c: relax standard prefix filter +06-02-08 sfrd.c,sfsync.c: lock logic bug fix +06-02-01 port/astlicense.c: add { parent incorporation } +06-01-26 port/astconf.c: fix { LIBPREFIX LIBSUFFIX } length +06-01-06 features/lib: change _UNIV_DEFAULT probe to use cross{...} +06-01-04 misc/stk.c: fix n**2 realloc behavior +06-01-01 include/sfio.h: export { _Sfi _Sfmaxr } +05-12-13 string/chresc.c: handle \C-X => control-X, \M- => ESC +05-11-22 regex/regcache.c: add, convert string/strmatch.c to regcache() +05-10-06 string/ccmap.c: update ebcdic-u to be idempotent +05-09-28 vmalloc: snarf from kpv; fixes large block brk() thrashing +05-09-26 misc/magic.c,misc/magic.tab: handle latest vcodex header +05-09-12 misc/optget.c: reset opt_info.offset on error + string/strtoi.h: strton() '.' multiplier only if m>1 + string/fmtesc.c: add unadvertized FMT_PARM for FMT_SHELL +05-09-09 string/fmtesc.c: fix FMT_SHELL logic w.r.t. [$`] +05-08-11 string/strerror.c: fix { sys_errlist sys_nerr } prototypes +05-08-03 sfio: snarf sfvaprints sfaprints +05-07-21 port/astconf.c: retain most recent synthesized lookup +05-07-20 sfio/sfsetbuf.c: default file io size now 64K on all systems +05-07-17 ccmap*: add microfocus cobol EBCDIC_U +05-06-29 regex/regcomp.c: fix the A & B inline flag logic +05-06-15 include/recfmt.h: add fs format flag to fmtrec() +05-06-14 error.c: add ERROR_OPTIONS { break count match } +05-06-07 features/stdio: drop FEATURE/limits to fix bootstrap circular dep +05-06-02 features/*,Makefile: drop vestigel iffeio.h bootstrap workaround +05-05-31 string/fmtbuf.c: unlock (spin) before each return -- doh +05-05-30 sfio/sfpkrd.c: work around macos 10.4 recv(MSG_PEEK) bug +05-05-27 regex: add REX_NEST (?%[S.][T.][OT]) + magic.tab: ammend bsd db magic +05-05-23 regex: REX_NEST (?%[D.][E.][L.][Q.][oc]...) +05-05-21 regex: state.fold[] is now locale specific -- doh +05-05-19 regex: add REX_NEST (?%\\()<>[]""...) %(...) nested match +05-05-15 recfmt.h: add recstr() reclen() fmtrec() +05-05-13 optget.c: allow boolean options to take numeric values +05-05-12 recfmt.c: add to recfmt.h, adjust Recfmt_t encodings +05-04-30 sfio: add sfmaxr(), default 64K +05-04-22 comp/omitted.c: fix magic() logic for files < 512 bytes +05-04-20 cdt: snarf update from kpv; void* Dt_t.user added + misc/error.c: library => ERROR_LIBRARY +05-04-19 regex/regcomp.c: handle REG_SHELL [^...] == [!...] +05-04-11 tm/tmxscan.c: handle yyy.mm.dd[-+.]hh.mm.ss.nnnnnn +05-04-07 regex/regnexec.c: fix out of bounds boundary check -- ouch + features/align.c: add jmp_buf to the alignment mix (ia64) + vmalloc/vmhdr.h: add jmp_buf to the alignment mix (ia64) +05-03-31 misc/optget.c: fix option { - _ } separator matching +05-03-30 misc/glob.c: eliminate superfluous GLOB_NOMATCH stat() calls +05-03-24 port/astwinsize.c: include <sys/ioctl.h> if possible +05-03-23 string/ccmap.c: add ebcdic-m mvs cobol table +05-03-11 comp/omitted.c: handle utime[s](const,const) + comp/conf.tab: fix linux PID_MAX probe +05-03-10 comp/setlocale.c: LC_* value "" => unset -- doh + misc/optget.c: reorder _PACKAGE_astsa code for msgcc +05-03-08 misc/optget.c: delete leading space in STYLE_nroff output +05-03-07 sfio/sfhdr.h: drop extern _sfdscan -- clashes with sfvscanf.c static +05-03-01 tm/tminit.c: add tmlocaltime() for tzset() getenv() override workaround +05-02-20 features/tvlib: tmsettimeofday only for systems that have settimeofday + features/float: fix mvs.s390 NaN tests +05-02-18 tm/tmxmake.c: fix <0 west of GMT bug that warped to 1800's -- wow +05-02-11 port/mnt.c: handle lynxos MOUNTED=/etc/fstab +05-02-08 features/float,sfio.h,sfcvt.c,sftable.c: add INF and fix NAN +05-02-04 features/lib: add _std_strtol (for lynxos) + include/ast_std.h: add _std_strtol tests + comp/strtod.c: #define S2F_function strtod + misc/signal.c: fix ancient bsd SV_INTERRUPT vs. SV_ABORT clash +05-01-11 sfio/sfmove.c: try to seek(fr) when fw==0 + comp/omitted.c: intercept utimes() too + comp/omitted.c: add DOSPATHVARS env var path value conversions + features/tvlib,tm/tvtouch.c: check for utimets() + misc/optget.c: handle '-' or '_' option word separators + sfio/_sfopen.c: allow stream mode changes after initialization + sfio: sync with kpv: SF_SYNCED fix for ksh input loss bug +05-01-09 tm/tmxfmt.c: fix %6N for n<100000000 +05-01-08 regex/regcomp.c: conj() => con() to avoid C99 clash +05-01-05 tm/*: fix { %U %V %W } logic -- my head hurts +04-12-30 tm/tmxtime.c: fix tm_isdst<0 loop +04-12-23 vmalloc/vmbest.c: fix vmresize bug that didn't 0 new data +04-12-19 misc/optget.c: broaden - long option match +04-12-09 string/strtoi.h: fix terabyte 't' suffix math + string/strmatch.c: flush cache on locale change +04-12-01 tm/tmsleep.c: add + tv.h,tv*.c,tv.3: move from pax + tmx.h,tmx*.c,tmx.3: add high resolution tm(3) counterparts + features/lib: add *another* sgi linux.ia64 memccpy bug check +04-10-31 Makefile: __OBSOLETE__ now computed <6 months ago year>0101 + ccode.h,ccmapid.c: add ccmaplist(Ccmap_t*) iterator + option.h,optesc.c: add 3rd arg, 1 => quote '?' too + misc/magic.c: fix bug that terminated `string a' at + misc/magic.c: handle vcodex() via decompose() + misc/magic.tab: add vcodex magic + features/stdio: handle _LARGEFILE64_SOURCE -- oops + stdio/(fseek|ftell|fseeko|fsetpos|fgetpos|ftello).c: oops^2 +04-10-28 string/swapop.c: size==-4 => size=4 and extend op=3 to op=7 + tm/tmfix.c: fix tm_mon<0 logic +04-10-22 tm/tmdate.c: handle 'final day feb 2004' + port/astlicense.c: add query=all|id|${...}${...} + port/astlicense.c: "free" => "mit" + comp/omitted.c: revert to the open source license + string/stropt.c: drop siz==0 => tab is hash table + include/sfio.h: incorporate <sfstr.h> + include/sfstr.h: drop + disc/sfstrtmp.c: drop -- use sfstrbuf() +04-10-20 misc/magic.tab: update tar magic +04-10-18 ufc-crypt.h,crypt_util.c: drop GPL code + crypt.c: add BSD code + pathpath.c: disable { $0 $_ $PWD } related root search +04-10-01 normalize ident stamps + port/astlicense.c: add type=cpl -- yeah +04-09-25 string/swapop.c: return op < size -- duh +04-09-23 comp/spawnveg.c: :NOOPTIMIZE: -- volatile sometimes ignored +04-09-21 comp/spawnveg.c: exec_errno_ptr is volatile -- duh +04-09-14 tm/tmscan.c: add %| alternation and %& => tmdate() +04-09-08 misc/optget.c: add :!value: omitted optional arg value + misc/optget.c: fix --noNAME ambiguous option logic +04-08-26 string/strperm.c: add who^mode to propagate least restrictive up + astmath.c: add { frexpl ldexpl } checks for ast.req + port/astlicense.c: ignore first option if non-assignment + include/ast_dir.h: move d_fileno map before struct defs -- duh +04-08-24 vmalloc/vmbest.c: add {VM_region} VMCHECK=+r for region segment checks + misc/recfmt.c,include/recfmt.h: add +04-08-23 vmalloc/vmbest.c: add {VM_primary VM_secondary} VMCHECK=-s for primary + features/common: punt to <stdarg.h> for unknown va_list +04-08-11 vmalloc: sync _UWIN libposix hooks +04-07-27 features/common,features/limits.c: ULL suffix for unsigned _ast_int8_t +04-07-22 include/ast.h,comp/eaccess.c: add eaccess() for effective access() +04-07-19 comp/open.c,sfio/_sfopen.c: { O_RDONLY O_WRONLY O_RDWR } are values +04-06-28 misc/error.c: check level after error_info.auxilliary +04-06-24 string/strmatch.c: strgrpmatch() match[] now variable size array +04-06-17 features/common: change _DLL null define to (the standard ast) 1 +04-06-11 misc/optget.c: allow optional [-|+|--|++] optstr() option prefix + misc/optget.c: reset optstr() state on 0 return + misc/optget.c: text()=>textout() linux.ppc symbol hijack workaround +04-05-31 sfio/sfreserve.c: no side buffer if user buffer is large enough +04-05-27 string/fmtbuf.c: handle one concurrent buf > sizeof(buf) +04-05-24 regcomp.c: fix no-advance initialization +04-05-05 conf.tab,conf.sh: update to align with standards + magic.tab: ms suffix update +04-05-04 port/lcgen.c: fix territory initialization +04-04-15 tm/tmdate.c,include/tm.h: fix specific and ordinal days +04-04-08 astconf: retain { HOSTTYPE LIBPATH LIBPREFIX LIBSUFFIX } strict vals +04-04-07 vmalloc/vmbest.c: fix alpha tiny block bug + vmalloc/malloc.c: re-enable on alpha +04-03-30 tm/tminit.c: GMT => UCT only if tz.daylight not defined +04-03-25 vmalloc/malloc.c: _AST_std_malloc=1 for __alpha + path/pathprobe.c: per-user probe dir => $HOME/.probe/$HOSTTYPE +04-03-23 regex/reglib.h: fix isw*() redefines +04-03-17 features/stdio: no __FILE override for __CYGWIN_ (sys/reent.h clash) + sfio/sfhdr.h,sfio/sfsetbuf.c: lower sfmove() default buf size 4x +04-02-29 comp/omitted.c: move env trace after PATH fixup + comp/omitted.c: cygwin spawn _P_DETACH => _P_NOWAIT+setpgid(pid,0) + misc/optget.c: fix html mailto: match + port/astlicense.c: add type=test for fixed 2001 date + features/float: check local NaNQ first + vmalloc/vmhdr.h: fix _vmextern_ vm_truncate return type + misc/magic.tab: add elf s390 index=22 +04-02-26 vmalloc: VMCHECK a:assertions c:arena-check w:warn-instead-of-abort + sfio/sfvscanf.c: fix extf arg selection +04-02-24 features/dirent: set nodefine to avoid ast_std.h _typ_off64_t undef + disc/sfkeyprintf.c: only case pattern must be ()[] balanced +04-02-14 include/sfio_t.h: add SF_DCDOWN, SFDCNEXT(), SFDCPREV() +04-02-13 string/strmatch.c: fix bug that didn't save one-time sub[] size + vmalloc: -g: export VMCHECK=1 enable malloc/free checks + vmalloc: -g: free(0) to check and disable malloc/free checks + vmalloc: -g: free(1) to check and enable malloc/free checks +04-02-11 Makefile: add :P=A: to conf and lcgen exec for cross-compile + regex: use MBSIZE() instead of mbsize() to grab 1 char on err + vmalloc/vmbest.c: updated to do more comprehensive DEBUG tests +04-02-04 sfio/sfraise.c: add sfraise(0,a,b) to iterate over all streams +04-02-01 vmalloc/vmbest.c: _BLD_DEBUG free(0) checks the arena +04-01-31 features/vmalloc: fix typo that missed _mmap_zero +04-01-23 string/strerror.c: handle real strerror() return value overwrite +04-01-11 path/pathpath.c: fix size vs. sizeof(buf) typo +03-12-22 misc/magic.tab: dos EXE tweaks +03-12-05 vmalloc: sync with kpv, adding exceptf announcements +03-12-04 port/astlicense.c: fix expand() loop sentinel bug +03-12-02 include/ast.h: mbchar() advances by 1 on mbtowc() error + misc/fts.c: increase MINNAME to 32 +03-11-21 vmalloc/vmbest.c: export VMCHECK=1 to enable $(CC.DEBUG) vmcheck() + vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT + misc/magic.c: add { cobol copybook pl1 } and suffix preference +03-11-12 features/stdio: drop cuserid,getopt for SUSV3 +03-11-11 vmalloc/*: merge kpv update -- this should stomp the compaction bug +03-10-23 comp/iconv.c: fix sfreserve lock fallback +03-10-20 sfio/_sfopen.c: add to allow user sfopen() intercept +03-10-17 regnexec.c: fix exec time REG_LEFT, \x.... => wctomb() +03-10-12 string/strtoi.h: fix strton '.' overconsumption +03-10-12 comp/iconv.c: identity is always (iconv_t)0 +03-10-09 string/fmtesc.c: fix FMT_SHELL to check for all shell magic chars +03-10-01 port/astlicense.c: unknown authors copied verbatim (instead of ignored) +03-09-30 string/chresc.c: handle \u..., \x... consumes all trailing hex digits + string/stresc.c: \u... and \x... > UCHAR_MAX => wctomb() +03-09-29 fnv.h: add +03-09-23 modedata.c: table is for external modes, so no arch specific hacks + optget.c: fix option prefix match translation bug + optget.c: add `<length> <name>=<value> to optstr() + features/lib: add memcmp() test for sgi optimzation bug +03-09-22 regex.h,regcomp.c: add regncomp() + regclass.c: fix for loop dangling ; in regaddclass() +03-09-20 sftable.c,sfvprintf.c: fix SFFMT_CHAR handling to match extf api +03-09-19 sfmode.c: update release to kpv's +03-09-17 regcomp.c: add pedantic backref error checks +03-09-16 regnexec.c: exec time REG_LEFT => don't advance past initial position + regclass.c: add regaddclass() for user defined [:class:] + regexec.h: REG_VERSION_N2X, add redisc_t {re_map} ccode map + regstat.c: add regstat_t +03-09-11 optget.c: --n:=v sets opt_info.assign=':', opt_info.number enabled +03-09-09 disc/sfkeyprintf.c: *pn on lookup is arg separator; lookup "" arg too +03-09-05 optget.c: [f:l*?] preserves user long name past '*' in opt_info.name[] +03-09-03 sfstr.h: add sfstrpend() for #pending bytes in read buffer +03-08-25 regex: add REG_FIRST, optimize bm + features/lib: _AST_no_spawnveg==1 falls back to fork/exec +03-08-22 features/stdio,stdio/asprintf.c,stdio/vasprintf.c: add +03-08-21 path/pathnative.c,path/pathposix.c: interix updates + features/botched: add cygwin _stat => _stat64 +03-08-15 include/ast.h: map out bsd strmode() + features/common: add interix _ast_intmax_t workarounds + misc/fs3d.c: 3d mount test now uses "" instead of NiL (or cygwin dumps) +03-08-11 string/fmtesc.c: fix optional quoting checks + tm/tmdate.c: fix > 1 year of seconds arithmetic + tm/tmfix.c: fix leap year adjustments +03-08-01 features/lib: beef up sock_peek test for interix +03-07-29 features/float: add -lm to frexp... test + Makefile: fix -lm astmath test sense +03-07-26 features/mem.c: favor _mem_sbrk over _mem_mmap_* +03-07-22 vmalloc/vmbest.c: fall back to sbrk() if mmap() fails + features/mem.c: _mem_sbrk means sbrk() and brk() work +03-07-17 regex/regcomp.c: fix bug that treated KRE X{n,m} like {n,m}(X) + misc/magic.c: check MAGIC_VERBOSE for all load() messages +03-07-14 misc/optget.c: handle [...]{[...]<.>..</.><.>..}</.> +03-06-21 misc/sigcrit.c: block SIGCHLD if _lib_sigprocmask || _lib_sigsetmask + comp/spawnveg.c,sfio/sfmode.c: use sigcritical() SIG_REG_* macros + comp/spawnveg.c: drop ENOEXEC logic + vmalloc/*: snarf kpv KPVCOMPACT() fix + vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT (just in case) + string/strdup.c: drop __strdup() etc. intercepts -- malloc gets it + features/mem: define _mem_method and _mem_* possible values + vmalloc/malloc.c: _AST_mem_method==_mem_* to force mem get method + sfio/sfputr.c: __ia64 memccpy is bogus -- how many tries do they get? + path/pathshell.c: verify abs path and access(path,X_OK) -- duh + vmalloc/vmhdr.h: add private _Vmessage() for non-sfio ASSERT() + port/astconf.c: fix bug that always returned the minmax value +03-06-11 comp/*.c: reorder macro hding for mvs.390 and <ast_map.h> + features/vmalloc: add _lib_brk and _lib_sbrk verification + include/ast_std.h,etc.: add _map_malloc for malloc => _ast_malloc + comp/conf.sh: fix SI_* and *_SI_* macro redefs + ast.h: VMDEBUG or _BLD_DEBUG enable <vmalloc.h> and VMFL tracing + vmalloc/vmtrace.c: _PACKAGE_ast __FUNCTION__ is a string + vmalloc/vmtrace.c: set trace file fd FD_CLOEXEC + vmalloc/vmbest.c: set /dev/zero mmap fd FD_CLOEXEC + features/mmap: fix ancient read() vs. mmap() time arithmetic typo + vmalloc/malloc.c: _AST_std_malloc==1 to force standard malloc +03-06-09 comp/omitted.c: add _imp__FUNCTION sybols for __CYGWIN__ static link + vmalloc/vmbest.c: handle systems with sbrk() but no brk() +03-06-04 port/astconf.c: drop non-standard diagnostics +03-06-03 comp/conf.sh: rework symbol collision logic +03-05-30 conf.tab,conf.sh,astconf.c: add <sys/systeminfo.h> sysinfo() SI_* +03-05-29 ccode.h: rework for extensibility, drop obsolete mematoe(), memetoa() +03-05-28 regex/*: recode to use isw*() directly when needed, is*() otherwise +03-05-27 features/vmalloc: fix _std_malloc test +03-05-25 misc/optget.c: fix optstr() ???* internal options +03-05-24 misc/optget.c: fix (ancient) argv null dereference +03-05-23 comp/getcwd.c: don't intercept on _WINIX -- unreliable st_ino +03-05-22 sfio/sfsprintf.c: n<0 => don't append ' ' +03-05-18 misc/fts.c: re-stat FTS_DP to update nlink/times + misc/fts.c: add FTSENT.stack to eliminate getlist() recursion + regex/ucs_names.h: use "..." catenation to placate some cc's +03-05-11 string/strtoi.h: handle "-" "+" "0x" "11#" +03-05-09 vmalloc/vmbest.c: large memory allocation tweaks +03-05-06 misc/optget.c: fix getopt_long() prefix==1 bug that missed short flags +03-04-27 comp/system.c: handle <ast_map.h> +03-04-24 vmalloc/vmmopen.c: drop dup <unistd.h> +03-04-21 tm/tmdate.c: fix next hour/min logic +03-04-15 vmalloc/malloc.c: intercept __malloc() along with __libc_malloc() + string/strdup.c: intercept __strdup() along with __libc_strdup() + features/mmap: consolidate from features/(lib|sfio|vmalloc) + add _NO_MMAP==1 to disable all mmap()/munmap() calls + path/pathposix.c: add +03-04-14 comp/setlocale.c: fix debug_mbtowc() return value for *s==0 || n < 1 + comp/iconv.c: fix error return errno values +03-04-11 misc/stk.c: fix stkgrow() realloc bug +03-04-05 string/tok.c: support readonly single token input strings + disc/sfdcdio.c: fix F_DIOINFO and FDIRECT #ifdef's + include/ast_std.h: allow _LARGEFILE64_SOURCE on __hppa + features/common: fix `tst _foo_' => `tst foo_' typo + features/float: fix `tst _foo_' => `tst foo_' typo + features/float: add FLTMAX_(UINTMAX_MAX,INTMAX_MAX,INTMAX_MIN) + comp/omitted.c: fix pathconf => _pathconf => _ast_pathconf loop +03-04-03 features/float: add _ast_no_um2fm: no usinged intmax => floatmax cast + vmalloc/vmbest.c: add getenv("VMCHECK") to initialize Vmcheck +03-03-28 include/ast_dir.h: add D_TYPE; { D_FILENO D_TYPE } must be #ifdef'd + misc/fts.c|getcwd.c|glob.c,preroot/getpreroot.c: add D_FILENO #ifdef's + Makefile: make sure _BLD_ast is defined for all compiles +03-03-27 ast_vfork.h: generate from features/vfork to pick up headers/pragmas +03-03-25 comp/omitted.c: drop free() of live environ + path/pathshell.c: allow trailing .exe -- pox on that + string/strtoi.h: fix bug leading 3 digits before thousands sep bug + string/(fmt|str)[gu]id.c: we know root when we see it +03-03-24 misc/optget.c: handle : and ? in := default value +03-03-21 ast_std.h: drop all spawn*() but spawnveg() + obsolete/spawn.c: add for dropped spawn*() + features/lib: _use_spawnveg if spawnveg() is a win over fork()/exec() + features/lib: drop NutForkExecve() and _map_spawnve + features/lib: fix memccpy test to clean up /tmp droppings + comp/spawnveg.c: call posix_spawn() if implemented + comp/omitted.c: add spawnve() intercept + comp/getoptl.c: set getopt_long() optind even if no options + tm/tmfmt.c: add %Q<delim>recent<delim>distant<delim> + misc/optget.c: fix trailing '*' for option and option args + sfio/sfmode.c: getenv("_AST_SFIO_OPTIONS") [,]SF_LINE[,] for fd {0,1,2} + vmalloc/*: kpv sync for uwin build independent of libast +03-03-18 port/astconf.c: switch to dynamic string values (saves 7K data/bss) + string/strmatch.c: switch to dynamic regex cache (saves 3K data/bss) + regex/regcoll.c,ucs_names.h: initialize rw tables from smaller ro data + features/lib: add vfork test for passing SIG_IGN across exec + features/lib: add spawn test for passing SIG_IGN across spawn +03-03-17 comp/omitted.c: unlink() renames to .deleted dir in case file open + sfio/sfpopen.c: handle mode "" for spawn with no pipe + features/float,comp/frexp.c,comp/frexpl.c: add pow2() table alternative +03-03-12 features/lib: fix linux.ia64 memccpy() tests -- now its their turn + features/vmalloc: fix /dev/zero test + features/align: _ast_intmax_t and _ast_fltmax_t join the union + misc/stk.c: fix struct frame size to align data + disc/sfdcdos.c: change sfslen() => sfvalue(f) +03-03-10 misc/optget.c: handle [f<:>x:lll</:><?>ddd]</?> +03-03-07 port/astconf.c: uninitialized CONFORMANCE + POSIXLY_CORRECT => standard +03-03-05 comp/omitted.c: make sure at least /bin is in PATH to find cygwin dlls +03-03-02 path/pathshell.c: write access to /bin is effectively root +03-02-28 features/float: add (FLT|DBL|LDBL)_U?(LONG|LONGLONG|INTMAX)_(MIN|MAX) +03-02-25 features/lib: change vfork() test to use _exit() instead of exit() +03-02-23 include/error.h: update ERROR_VERSION for error_info.number space +03-02-22 comp/conf.sh: wrap ksh check in eval to avoid premature exit +03-02-21 misc/fts.c: verify chdir(..) to avoid malicious dir rename() +03-02-19 string/strtoip4.c: isspace() instead of ' '||'\t' +03-02-17 regex/regcomp.c: fix stats.l REX_REP logic that botched REX_BM +03-02-13 string/base64.c: handle catenated encodings +03-02-11 features/libpath.sh: change LIBPATH to <dir>[:<env>[:<pat>]][,...] +03-02-07 path/pathfind.c: allow "/dev/null" to be PATH_REGULAR +03-02-06 include/ast.h,fmtquote.c: add FMT_ALWAYS|FMT_ESCAPED|FMT_SHELL|FMT_WIDE +03-02-05 tm/tmdate.c,tm/tmword.c,string/strelapsed.c: '_' treated like ' ' +03-02-01 string/strelapsed.c: handle ps style [day-][hour:]min:sec +03-01-31 port/astlicense.c: fix author=* match +03-01-30 include/tm.h: add tmisleapyear() macro +03-01-29 comp/getopt.h,comp/getoptl.c: add gnu getopt_long(), getopt_long_only() + include/ast_getopt.h: for non-gnu part of comp/getopt.h + include/ast_std.h: include <ast_getopt.h> instead of <getopt.h> +03-01-28 ast.h,string/base64.c: add base64encode() and base64decode() + path/pathfind.c: verify S_ISREG() +03-01-24 path/pathexists.c: fix abs dir bug and deal with case ignorance +03-01-23 path/pathpath.c: honor PATH_ABSOLUTE for the easy case too +03-01-22 path/pathprobe.c: fix search to find both the probe script and command +03-01-17 misc/magic.tab: application/zip => appplication/(gzip|pzip|zip) +03-01-14 misc/optget.c: change href="" to href="." +03-01-10 include/ast_std.h: strtold() import hackery for static __CYGWIN__ +03-01-03 include/regex.h,regex/regcomp.h: add REG_SHELL_GROUP + include/ast.h,string/strmatch.c: add STR_GROUP for REG_SHELL_GROUP +02-12-15 include/error.h: errorcontext => Error_context_s (compatible til 2004) +02-12-06 misc/sigdata.c: add NoF(sigdadata) -- why nmake was uninterruptable! +02-12-03 comp/omitted.c,features/omitted: handle cygwin alarm() return botch +02-11-27 misc/swapop.c: op=3,size=4 => op=7 + string/strlcat.c,strlcpy.c: fix uwin decl clash +02-11-26 sfio/sfvprintf.c: fix sfsprintf() ' ' termination bug +02-11-22 misc/glob.c: move static struniq() to libast extern + string/fmtversion.c,include/ast.h: add fmtversion +02-11-18 string/strncopy.c: add + misc/magic.tab: list size for magicid.h magic +02-11-14 sfio/sfvprintf.c: add %#c for C escapes + include/error.h: add ERROR_NOTIFY context flag for builtin commands +02-11-11 string/strtoi.h: add S2I_size for strnto*() size_t 2nd arg + sfio/sfstrtof.h: add S2I_size for strnto*() size_t 2nd arg + comp/putenv.c: add setenv() and unsetenv() wrappers for setenviron() +02-10-31 path/pathfind.c: add dir of including file to the pathinclude() list + misc/optesc.c: add +02-10-30 string/strtoip4.c: set next char pointer even on error +02-10-29 comp/resolvepath.c: add (size_t version of realpath()) + misc/mime.c: fix mimehead() to ignore null content values +02-10-28 misc/glob.c: add GLOB_STARSTAR for /**/ and GLOB_NOTDIR optimization +02-10-27 string/struniq.c: add +02-10-23 features/common: fix off-by-one loop check +02-10-18 include/ast_std.h: avoid off_t,ftruncate,lseek,truncate redefinitions +02-10-17 misc/mime.c: handle type/* match, fix bogus header parse +02-10-04 sfio/sfstrtof.h: S2F_static <0:export =0:private >0:static +02-10-02 features/common: don't define _WIN32; define _WINIX => unix on windows + features/tty: finally stomp the bsd _POSIX_VDISABLE redefinition + misc/fastfind.c: add more specific findwrite() error messages + comp/omitted.c: fix cygwin utime() to update st_ctime + comp/strtol.c,strtoul.c: __CYGWIN__ static link workaround XXX + string/fmtls.c,fmttime.c: tmform() => tmfmt() +02-09-22 port/astconf.c: return values in fmtbuf() buffer instead of stack + port/mnt.c: don't set MNT_REMOTE for win32 ?:paths + sfio/sfvscanf.c: _sfdscan() is library global (not static) +02-09-21 path/pathkey.c: add tool arg for mamake compatible hash + features/fcntl.c: handle iffe _hdr_lcl_* => _lcl_* change +02-09-15 comp/conf.sh: fix enum vs. macro test + cdt: kpv sync +02-09-11 ast.h,features/common: move _WIN32 macro init to features/common + features/common: enable __EXTERN__ and __DEFINE__ for _WIN32&!_UWIN + features/float: add -lm to _ast_*_nan_init tests + vmalloc: kpv sync with vmresizef => vmgetmem + features/iconv: must have both <iconv.h> and iconv_open()! + features/vmalloc: alloca test must compile *and* link + sfio/sfvscanf.c,sfstrtof.h: add flag arg to char get, fix NaN loop +02-09-10 vmalloc/vmhdr.h: enable getpagesize() and sbrk() prototypes + features/fcntl.c: enable mmap64() prototype + include/ast_windows.h: windows.h wrapper with ast namespace workarounds +02-09-07 misc/mime.c: fix quoted value parse bug that ate the whole line +02-09-05 features/vmalloc: add free() to _std_malloc test + include/ast.h: NoF(x) now defines _DATA_x for !_BLD_DLL too + tm/tmlocale.c: { C POSIX en } == unix dadgummit +02-08-29 path/pathfind.c: initialize Dir_t.next=0 +02-08-28 uwin/rint.c: update + features/libpath.sh: "bin" is now the default value +02-08-22 vmtrace.h: add for debugging +02-08-20 misc/magic.c: convert to use <cdt.h> + vmalloc/vmresizef.c: add for generic discipline resizef default + string/strelapsed.c: allow long time component names +02-08-19 misc/optget.c: add `.fp 5 CW' to --nroff output + string/(fmtfs|fmtuid|fmtgid|strgid|struid).c: convert to use <cdt.h> + include/dt.h,cdt/dtnew.c: add for dtopen() in specific vm region +02-08-13 comp/omitted.c: fix bzero logic for e.g. unixware.i386 + include/ast.h: add fmtbase->fmtbasell; swap in 2003-09-01 +02-08-12 regex/regnexec.c: fix REG_MINIMAL REX_DOT mb bug +02-08-08 features/iconv: <ast_common.h> instead of <sys/types.h> <ast_common.h> +02-08-07 regex/regcomp.c: recognize anchors in BRE subexpressions +02-08-06 comp/iconv.c: handle win32 cpNNNN == windows-NNNN aliases +02-08-05 cdt/*: sync with kpv src +02-08-02 features/iconv: include sys/types.h for ast_types.h +02-08-01 misc/magic.c: magic file "." names the default + misc/magic.c: handle addr type (from irix string) + features/lib: move malloc tests to features/vmalloc + features/vmalloc: snarf tests from features/lib + vmalloc/*: sync with kpv src + comp/libc.c: dropped -- __libc_* intercepts moved to vmalloc/malloc.c +02-07-30 features/lib: handle __libc_malloc() in _std_malloc test + vmalloc/malloc.c: add gnu pvalloc() + features/vmalloc: fix alloca check +02-07-29 features/limits.c: handle netbsd guards +02-07-27 sfio/sfpoll.c: handle rw pipes +02-07-25 features/iconv: include ast_types.h for size_t in ast_iconv.h +02-07-18 apply LARGEFILE64 header prototype clash patches + misc/optget.c: __EXTERN__ _opt_info_ instead of opt_info +02-07-17 ast_std.h: memzero() now defaults to memset() instead of bzero() +02-07-16 ast_std.h: add ast.env_serial + misc/setenviron.c: increment ast.env_serial + include/tm.h: tmset() now calls tminit() directly + tm/tminit.c: check ast.env_serial for env change + tm/tmfix.c: speed up for large values of tm_mday +02-07-15 comp/fnmatch.c: fix memory leak caused by missing regfree() + comp/strstr.c: fix broken interpretation and implementation + comp/iconv.c: intercept (but no-op) null to and from buffer pointers +02-06-27 ast_std.h: map _sysconf => _ast_sysconf for sun +02-06-26 cdt,sfio,vmalloc: kpv sync -- is this ever easy? +02-06-24 sfio: kpv sync, vfwscanf(),fputw() fix (wcslen(x)*sizeof(wchar_t)!!) + misc/fts.c: fix symlink chdir() optimzation bug +02-06-11 sfio/sfwrite.c: string to file fix + Makefile: __OBSOLETE__==20020101 +02-06-01 regex/regcomp.c: REG_DELIMITED now consumes the delimiter +02-05-31 regex/reglib.h,regcomp.c,regnexec.c: null subexpression fixes +02-05-24 misc/fts.c: disable dir link counts in 3d + misc/magic.c: fix "*(mkfile)" sh pattern to "*@(mkfile)" +02-05-20 regex.h,regex/regsubcomp.c,regex/regsubexec.c: add + regex/regsub.c: deprecate +02-05-16 tm/tmfix.c: fix '60+n min/sec ago' bug for n min/sec after the hour +02-05-14 regex/regsub.c: fix (^|x) null match early termination bug +02-05-13 dir/dirlib.h: drop errant extern==__EXPORT__ + features/uwin: add uwin lib tests + uwin/*.c: check features/uwin for stubs + features/float: add nan representation generation + sfio/sftable.h: used _ast_*_nan_init for huge values +02-05-09 misc/fts.c: fix virtual top to force ``child'' stat() + features/common: define va_copy() only if not in <stdarg.h> +02-05-01 string/strtoip4.c: cisco inverted quad mask must have 4 parts +02-04-30 misc/magic.tab: fix pzip version check +02-04-19 string/strtoip4.c: handle cisco inverted quad mask n.n.n.n/i.i.i.i +02-04-18 misc/fts.c: add chdir() verification stat() optimizations + path/pathkey.c: check PROBE_ATTRIBUTES for list of vars +02-04-12 port/astlicense.c: type=open tweak, fix author list spacing +02-04-11 regex/regcomp.c: check for pattern number overflow +02-04-05 tm/tmfmt.c: add %u +02-04-04 sfkeyprintf.c: fix %c numeric value + path/pathpath.c: check plain path first -- duh +02-04-03 misc/fts.c: fix (FTS_PHYSICAL|FTS_NOSTAT) stat optimizations + ftwalk.c: only clear FTW_DELAY if FTW_CHILDREN + ftwalk.h: add FTW_NSOK for FTW_DELAY +02-03-29 ast.h: drop strerror() prototype -- already in <ast_std.h> + features/stdio: check for _SFIO_H redundant _Sfstd* declarations +02-03-26 misc/glob.c: fix GLOB_LIST gl_flags values +02-03-24 port/mnt.c: update bsd fstype name and mount option logic +02-03-23 Makefile: add ast_wchar.h to the .check.hdr list (for mamake) +02-03-17 features/stdio: hack around g++ 3.* clashes + Makefile: add ast_nl_types.h to the .check.hdr list (for mamake) + string/strtoip4.c: fix validity check bug that only checked last part +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 + include/ast.h: add { PATH_TOUCH_CREATE PATH_TOUCH_VERBATIM } + 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/magic.tab,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/conf.sh: use $cc instead of cc +02-01-07 string/strlcat.c,string/strlcpy.c: add bsd api +01-12-18 comp/conf.tab: 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/magic.tab: 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 magic.tab: 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 +01-10-31 regex/ucs_names.h: add string catenation to keep line length low + misc/fastfind.c: handle gnu slocate db read + misc/optget.c: add --?+SECTION queries + comp/fnmatch.h: add FNM_NOSYS +01-10-30 tm/tmdate.c: fix cron specs when both wday and mday are specified +01-10-20 misc/glob.c: fix bug that called trim() twice on same path + misc/glob.c: fix trim() bug that restored / to wrong position + string/fmtre.c: fix { ^ . $ } translations + misc/optget.c: use original string if translation fails -- duh + sfio/sfhdr.h: assume <errno.h> assigns proper atttibutes to errno + comp/regcmp.c: __ia64 workaround fixed by proper CC.DLL probe + comp/getdate.c: __ia64 workaround fixed by proper CC.DLL probe + features/lib: add lib getdate +01-10-18 features/lib: check for strtod static link collision + features/float: add another signed cast for old bsd cc + features/wchar: add <stdlib.h> <stdio.h> before <wchar.h> for old bsd +01-10-17 sfio/sfcvt.c: limit max precision to { FLT_DIG DBL_DIG LDBL_DIG } + sfio/sfcvt.c: fix %[aA] format to always have leading 0[xX]1. + sfio/sfvprintf.c: handle %C %lc %S %ls for wchar_t args + sfio/sfvscanf.c: handle %C %lc %S %ls for wchar_t args + string/fmtmode.c: fix bug that omitted trailing ' ' +01-10-12 misc/optget.c: . => <!--NULL-->. for --??nroff + comp/wc.c: fix mbstate_t initialization typo + features/float: fix max integer / float loop termiation + features/float: fix LDBL_UINTMAX_MAX typo that did DBL_UINTMAX_MAX +01-10-11 include/sfio.h: fix _Sfstd* import/export + features/common: fix _UWIN __DYNAMIC__() definition +01-10-06 features/fcntl.c: { O_BINARY O_TEXT } default to 0 + features/omitted: add for comp/omitted.c + sfio/sfopen.c: O_BINARY default for _WIN32&&!_UWIN +01-10-05 misc/glob.c: fix `\(x/*' GLOB_NOMATCH bug that returned `(x' + misc/optget.c: fix localization lookup that didn't drop doubled : ? ] +01-10-04 comp/setlocale.c: handle sizeof(wchar_t)!=4 in debug locale + comp/conf.sh: handle sytems where _SC_* is both an enum and a macro +01-09-25 astconf: add LIBPREFIX +01-09-20 features/common: add __DYNAMIC__() for dll externs +01-09-19 cdt: kpv update + mb*() macros: update for ksh conversion, extend debug locale +01-09-16 tm/tmlocale.c: add compiled in defaults for C locale + misc/glob.c: add gl_nextdir callback for GLOB_COMPLETE +01-08-14 clarify _WIN32 vs. _UWIN vs. __CYGWIN__ + tminit: fix standard & daylight initialization +01-09-11 pathnative.c: add for native fs representation + regex.h: fix regerror_t prototype +01-09-04 regex/regnexec.c: fix REG_ICASE for multi-char collating elements + tm/tmlocale.c: fix old ascii LC_TIME load + locale*: add new LC_* categories + comp/omitted.c: add CYGWIN workarounds + features/lib: add CYGWIN workarounds +01-08-11 features/common: some compilers have long long but no LL constants! + features/lib: add mmap64 implementation test (for linux.s390) + regex/regcomp.c: fix in [...] parse + setlocale: retain user locale spelling in setlocale() return value + features/limits.c: don't include ./limits.h -- duh + fmtesc: don't escape multibyte chars + tm/tmlocale.c: fix native C locale default +01-08-08 features/float: some compilers (msdev) forget long long vs. double +01-07-31 misc/optget.c: handle suboptions +01-07-27 cdt.h: add DTDISC() +01-07-17 iffeio.h: move to include for stdio bootstrap iffe workarounds +01-06-25 regex: perl extensions added and tested +01-06-21 misc/error: add ERROR_OPTIONS=prefix=string for message processing +01-06-15 string/chresc: only 2 hex digits max for \xxx + regex/regsub: handle REG_SHELL ~(nnn) rhs backrefs +01-06-11 regex: handle embedded in pattern and subject string + regex: add (?nnn) for backrefs > 9 + comp/fnmatch: add FNM_LEADING_DIR for gnu compatibility + features/float: _ast_flt_unsigned_max_t for bsd.i386 omission +01-06-06 misc/optget.c: add o option for old ps,ar,tar with optional leading - + regex/regcomp.c: REG_LENIENT|REG_DELIMITED \<newline> => <newline> + regex/regcomp.c: REG_LENIENT 00 => NUL +01-06-04 features/dirent: replace Makefile hack with iffe semi-hack + regex/regnexec.c: negation must also check REG_SHELL_DOT +01-06-03 sprintf.c: change buf size from SF_BUFSIZE to INT_MAX +01-05-31 glob: fix gl_fignore to ignore leading . by default + features/lib: add botch_d_ino_dirent64 for linux botch +01-05-25 port/lc.tab: add a few missing language_territory's +01-05-23 string/chresc: \C[.collation-element.] + fmtmatch,fmtre: update for <regex.h> syntax extensions +01-05-21 regex: add perl extensions, unicode names for collation elements +01-05-11 string/chresc: \ == \E == escape, <JOIN>X == control X, \x{..} == \x.. +01-05-09 path/pathtemp.c: pathtemp(0,0,0,"/private",0) for mode S_IRUSR|S_IWUSR + port/touch.c: handle utime(2) EPERM to fix bug that truncated + regex: change REG_MINIMAL to avoid negation -- much faster now +01-05-08 *.h: add some off_t macro guards for suse linux +01-05-03 regcomp.c: optimize ((x)!)* to ((x)!) + wchar: add <wchar.h> and stdio wchar routines +01-05-02 feaures/wchar: add <wchar.h> intercept, add stdio wchar functions +01-05-01 string/strtoi.h: signed strtoi accepts qualified unsigned constants +01-04-30 comp/setlocale.c: fix code that relied on 2 simultaneous getenv()'s + tm/tmlocale.c: check for UTF-8 encoded LC_TIME files + misc/magic.tab: add utf-8 and utf-16 U+FEFF magic +01-04-26 features/common: some cc's have _ast_int8_t but not LL constants +01-04-24 features/lib: add _std_strtod for mac os X +01-04-23 ccode: add CC_sub for ms embedded EOF char on ebcdic -- no joke +01-04-20 iconv: handle ebcdic<=>utf + mc.h,mc.c: add mcindex() + ast_std.h: add AST_MESSAGE_SET +01-04-18 features/libpath.sh: fix mvs probe + *: sundry mvs fixes + glob: fix GLOB_NOCHECK to avoid stat() and properly trim patterns +01-04-01 strtod,strtold: add + strtol,strtoul,strtoll,strtoull,strton,strtonl: handle locale & ERANGE + sfvprintf,sfvscanf: handle locale decimal_point,thousands_sep + sfvprintf,sfvscanf: handle %a,%A + setlocale: add LC_NUMERIC decimal_point,thousands_sep init + ast_std.h: __OPTIMIZE_SIZE__==1 to disable non-std __GNUC__ inlines + pathexists: path cache to cut down pathpath() access(2) calls + features/stdio: __FILE_TAG == _sfio_s for solaris +01-03-23 iconv: fix iconv_move buffer boundary bug that stopped at 1 block +01-03-19 glob: add GLOB_AUGMENTED + regex: REG_SHELL syntax error implies REG_LITERAL match + strto[ln][ll]: add overflow checks +01-03-17 locale: reimplemented to provide canonical locale namespace + locale: add LC_ALL=local for local system user default + tm.h: TM_*_3 => TM_*_ABBREV + tmfmt: handle standard E and O format modifiers + tmlocale: consult nl_langinfo() if defined + fmtquote(" +01-03-08 regex: handle multibyte chars and collation classes + strmatch,strgrpmatch: now a wrapper on regex + ast_std.h: add mb*() multibyte and collation support + sfvscanf: handle locale decimal and thousand + proc*,system: handle ignored SIGCHLD + sfkeyprintf: handle %*C +01-03-06 locale: add locale data cache for efficient multiple locale switching + optget: fix LC_MESSAGES!=C --man bug +01-03-01 Makefile: HEADEROPT is not optional for win32.* + comp/syslog.h: comply with the de factos + optget(): fix <.>..</.>< >stack bug that referenced data after pop</ > +01-02-27 *locale*: a batch of fixes for native LC_MESSAGE&LC_TIME hooks +01-02-22 pathprobe: reprobe test now checks probe.ini too + sfio_s.h: advertize public Sfio_t members with _ prefix + sfio.h,features/stdio: add <sfio_s.h> reference + sfhdr.h: map <sfio_s.h> _foo to foo + sfio.h: SF_APPEND=>SF_APPENDWR, SF_CLOSE=>SF_CLOSING +01-02-14 comp/conf.sh: probe <unistd.h> for _(CS|PC|SC)_* getconf symbols + stdio/*: update for uwin stdio.dll binary compatibility + sfread: finally fixed premature pipe read EOF bug + fmtscale: format tenths for number > 0 && number < 10 +01-02-09 _sfmode(),_sftype(),_Sfextern: UWIN binary stdio compatibility exports +01-02-08 sfgetm,sfputm,_sfputm: fix max clash with k&r max() macro + setlocale: undef valid for sun4 k&r valid() macro +01-02-07 catopen.c: don't do native catopen for the debug locale +01-02-06 sfraise.c: add SF_FINAL check to avoid (posibly) freed disciplines +01-01-01 features/common: fix uwin __DEFINE__ + sftable: initialize decimal and thousand + magic.tab: add corel wordperfect document + syslog: add LOG_LEVEL, add ' only if needed + include/tm.h: #undef daylight for _WIN32 + sfio.h: add _SF_APPEND and _SF_CLOSE for native namespace incursion + ast_std.h: add AST_LC_multibyte for MB_CUR_MAX>1 + setlocale: set AST_LC_multibyte + strmatch: check AST_LC_multibyte + features/limits.c: add _BITS_POSIX1_LIM_H guard for linux + features/libpath.sh: fix for aix LIBPATH + procopen,procclose: block SIGCHLD if PROC_FOREGROUND (e.g., system(3)) + optget.c: add enumerated option argument values + optget.c: add <!--INTERNAL--> for private --html + optget.c: fix memory leak that hit shell builtins hard + sfio: drop sfread small chunk logic +00-12-25 mnt.c: handle " and ' quoting for fstab + sftmp.c: let pathtemp() open the fd O_EXCL +00-12-15 conf.sh: add -v for verbose trace + features/(limits|unistd).c: no FEATURE/types because of _POSIX_SOURCE + features/time: add default for CLOCKS_PER_SEC + features/lib: std_malloc now handles NeXT +00-12-13 strton: recognize qualifier only if preceded by a digit + features/lib: change return in vfork() test to exit() for linux sparc + fmtquote: fix $'...' quote logic +00-12-11 tmdate: fix cron format bug that mishandled months +00-12-01 optget: handle $Id: ... $ in --?-version + features/fcntl.c: fix _STDPP_ mmap munmap +00-11-27 magic: drop dup sfclose() in load() + optget: handle error_info.id==0 +00-11-22 features/stdio: add _FILEDEFED for sol9.sun4 + strton,stronll: handle [u|U][l|L][ll|LL] qualifiers +00-10-31 tmdate: add TM_DATESTYLE and mmddHHMM[cc]yy + astlicense.c: #include <hashkey.h> MAM workaround + astlicense.c: check for non-empty CONTRIBUTORS +00-10-26 features/stdio: add _FILE and __FILE for gnu + misc/stk.c: fix stack pointer check off-by-one (dgk does it too!) +00-10-23 syslog.h: sync with bsd values +00-10-18 _STUB_* now functions instead of common symbols + all extern data declared with definition to eliminate common symbols + fastfind: add mac/bsd /var/db/locate.database +00-10-17 features/lib: add apple osX (darwin.ppc) workarounds +00-10-12 add: fmtbuf(), fmtclock(), fmtip4(), strtoip4() + fmt*() now use fmtbuf() for tmp fmt buf allocation +00-10-05 regex: add REG_DISCIPLINE and regdisc_t for alloc/error disc +00-09-29 features/lib: pipe_rw==0 for sgi: boot rw == bin incompatibility +00-09-21 astlicense: handle ' and +00-09-20 sfwrite: fix write() error in sfprintf() loop +00-08-11 hdr,vmhdr.h: check/hide { getpagesize sbrk } prototypes + astlicense: add noncommercial +00-07-31 fflush: don't seek on pipes + sfresize: add + setlocale: fix bad newof() call +00-06-01 strmatch: initialize match.current.beg[0] to avoid dump at line 670 + sfio/stdio: a few more errno tweaks + astquery: sfstdin/sfstderr by default +00-05-26 sfmode: errno=EBADF for invalid stream use +00-05-22 rewind: fix for xopen test +00-05-18 mcfind: returns absolute path +00-05-16 optget: --keys must catch <.>..</.>< >too</ > + translate,mc: errno cleanup +00-05-09 magic: add netbsd binary magic + fts: PATH_RESOLVE!=logical => FTS_SEEDOTDIR + ftwflags: call fts_flags() + astconf: astconf(0,0,0) re-syncs with _AST_FEATURES +00-05-08 optget: --usage & --keys for last -catalog group only +00-05-02 iconv.c: add; use codes[] in ccmapid() and ccmapname(); "" for native +00-05-01 pathtmp: copy env values (libshell or putenv may change) +00-04-01 optget: drop bar from [-foo?bar] for --??keys + sfvscanf: add %X -- duh + features/common: fix va_listval() for power pc + findopen: fix FIND_GENERATE codes file search + magic: add ERROR_translate() and msgcat.key + tmlocale: add for LC_TIME locale info + tmlex: check tm_info.format and tm_data.format + tmfix: fix for tm_wday special case (via nl_langinfo on LC_TIME fields) + strftime: fix for nl_langinfo special case + ast_std.h: provide LC_* defauls if not defined + sfnew: check ${_AST_sfio_bufsize} -- don't tell kpv + catopen,nl_types.h: add intercept to mc* routines + magic.tab: add ast message catalog + strerror: add _ast_strerror intercept with ERROR_translate("errno") + fmtquote: escapes >0177 only if (flags&2) +00-03-17 feof: stdio macro functions only for _UWIN + optget: proper ERROR_translate() calls + astgetconf: add for thread safe error message control + astlicense: fix type=special but with non-null notice + errorx: add for ERROR_translate() support + ERROR_translate: add locale id args for alternate dictionary + option.h: move _OPT_PRIVATE_ to pointer to avoid dll size mismatch + ftwalk: fix FTW_CHILDREN bug that hit top level non-dirs twice + translate.c: default error_info.translate + astconf: fix dup loop thrash that never returns, add _AST_VERSION +00-03-10 ast_std.h: do _LARGEFILE_SOURCE initialization before std headers + fmtquote: handle $'...' quotes +00-03-07 optget: fix numeric option support test + sfkeyprintf: add %q for '...' quoting with ansi escapes +00-03-06 features/stdio: fix _sfflsbuf prototype (dingold@gte.net) +00-02-14 pathtmp: fix pid cache bug that sometimes repeated after ~10 attempts + optget: "..." attribute quote + pathfind: eliminate *: prefix in lib, not type + proc: PROC_FOREGROUND for system(3) semantics (wait status return) + pathtmp: fix mktemp() logic + fts: fix FTS_NOSEEDOTDIR bug that botched ./* in top list + include/ast/prototyped.h includes include/prototyped.h + pathpath: fix strdup(0) bug + optget: --html <SMALL><<A href=mailto:foo@bar>foo@bar</A>></SMALL> => ...mailto:foo@bar... + sscanf: fix sfsscanf => sfvsscanf typo + magic.tab: strengthen tar recognition +00-02-08 conf.sh: fix ifdef for systems that think sysconf(FOO) is const +00-02-04 glob: fix globlist_t.gl_flags +00-02-02 vm*: add NoF() for data only files +00-01-27 fts: fix top level .==.. statp bug (thanks to dr. ek) +00-01-25 conf.tab: fix LFS*_*LAGS typo +00-01-24 astlicense: handle type=verbose, license.notice, author=* +00-01-11 pathprobe: generate info for first probe script on PATH - duh + ast.h: add NoF(x) for files that define no functions + tmpfile: fix implementation + global change for string ERROR_translate() dictionary names + optget: fix new way but no long names off by one + optget: handle [--dictionary?name] +99-11-19 comp/conf.sh: `expr length XXX` is not universal + drop sfstdio; stdio via functions everywhere + drop Makefile conditionals (and follow our own advice for once) + sfio: new stream after atexit() bug fix + tm: Tm_zone_t.daylight=0 for standard time within zone + stdio: fopen => _ast_fopen: only way short of binary compatibility + Makefile: atmain.C falls back to atmain.c + optget: add --keys, s<section> option + stdio: _UWIN check for foreign stdio +99-11-11 astlicense: add +99-10-31 glob: fix regexec pattern; add PATH_ATTRIBUTES case check + pathpath: path==0 means malloc space +99-10-22 tmfmt: %C=2-digit-century, %k=date(1), %y=2-digit-year-in-century +99-10-18 fastfind: expanded default db lookup +99-08-11 magic: fix off by one registry malloc + features/fs: add __RENAME checks for stat familiy (netbsd) + features/fs: major()/minor() fixes for s5 + features/libpath.sh: netbsd fix -- ld.so not in std places + misc/fastfind: fix codes path generation bug + optget: beef up --?* description, fix <TR>...</TR> nesting + pathprobe: check for override (writable key file) first + features/time: int tmtimeofday(struct timeval*); + optget: fix opt_info.num, even if opt_info.arg!=0 + fts: FTS_PHYSICAL => FTS_SEEDOTDIR, add FTS_CHOP + fastfind: init dir tab with logical and physical name + glob: add gnu GLOB_ALTDIRFUNC +99-07-17 sfio: kpv update and sfhdr.h sync! +99-06-24 stdio: fix fflush() to ignore sfseek(0) return value +99-06-23 magic: '\r' is text not control to placate m$ +99-06-08 stdio: fix fseek,ftell semantics + uwin stdio: fflush() => _doflsh() to avoid __cplusplus clash + getopt: call liberror() to avoid error() conflict + tmfmt,tmscan: %N zone type (nation code), %z zone minutes west offset + tmfmt: - no pad _ space pad 0 leading 0 pad +99-05-28 magic: fix 'x' == '*' for any number, magic.tab tweaks + features/lib: verify that stat64 really works +99-05-21 tm*: add TM_WINDOW==69 for consistent century windowing guard year +99-05-18 tmtime: add century leap year calc anticipating unsigned time_t +99-05-17 sfkeyprintf: handle %o and %x!! +99-05-09 pathprobe: $HOME/.probe if not suid and st_uid!=geteuid() +99-04-28 magic,magic.tab: add registry() +99-04-24 regcomp: fix ksh pattern +! parse + regfatalpat: add + optget: make : ? ] double escape consistent in all contexts +99-04-01 features: drop iffeio.h and stdio.h when only printf() used + regex: fix stats() .l and .k count + fmtquote: added; most general fmtesc() form +99-03-22 fmtesc.c,ast.h: add fmtnesq() + optget: --?x works for -x option flag +99-03-17 features/limits.c: workaround solaris __EXTENSIONS__ _timespec bug + workaround limits.h circular prereq with ignore stdio.h + sfvprintf: %04e left-pad zero fixed +99-03-03 fts: uncle already: add FTS_SEEDOTDIR to retain leading ./ + regex: REG_MULTIPLE, BM for fixed string alternation + optget: embedded `-' optional in long options, prefix={0,1,2} +99-02-14 fastfind: fix dir format bug that emitted wrong paths + astconf: fix redef off by one bug +99-02-11 pathcanon(): don't cache astconf("PATH_LEADING_SLASHES", NiL, NiL) +99-01-23 optget: move <old_opt.h> back into <option.h>, no open-close + optget: add "[index:long-name:description]" for --long-name + comp/gross: add weak __libc_attr for irix < 6.5 compatibility + features/limits.c: tweak the guards again +99-01-11 fastfind: handle old format count byte order + magic.tab: fix elf to use real phdr offset + magic.c,magic.tab: fix | to act like switch/case + comp/fross.c,features/hack: for gross hacks + features/stdio: avoid sfio namespace pollution +98-12-25 tmdate: yyyy.mm.dd + pathprobe: fix procrun() cmd path bug + fmtesq: add + features/common: win32.alpha va_list + magic: add pc alpha object +98-11-11 strmatch: add STR_ICASE + pathprobe: punt to $HOME/.probe/<key+HOSTTYPE> if not S_ISUID + tmzone,tmdate: handle +-minutes, nn/MMM/yyyy + stropt: fix nested quote pop + tmfmt: add %K => %Y-%m-%d/%H:%M:%S + sfio/stdio: fix fseek() SF_PUBLIC omissions + fmtesc: catch '\' (duh) + vmalloc: vmbest round bug fix +98-11-01 fts.c: no pathcanon() if (fts_flags & FTS_PHYSICAL) +98-10-01 features/stdio prototype fixes + optget: strton() instead of strtol() for # +98-09-22 regcomp: add REG_DELIMITED and REG_ESCAPE delimited re support +98-09-15 fix _LARGEFILE64_SOURCE stuff + ast_std.h: provide mmap() prototype +98-08-11 fix sfpopen() to ignore SIGPIPE by ignoresig() for sfio but not stdio + fix procopen() to ignore SIGPIPE by ignoresig() for PROC_IGNORE + sfio sfpopen/popen update + magic.src: fix ustar entry +98-07-17 fix ftwalk() short by one malloc() + add fts_notify() +98-06-25 sfdcmore,sfdcprefix: add +98-06-19 tokscan: add %f %g +98-06-01 disc/sf*.c: memset(0) after disc malloc() +98-05-11 strelapsed: y==Y + fts: pathcanon() top list +98-04-01 error: error_info.time for all msgs, just after cmd id + error: no sfsync(sfstdin) + sfio: sfpool, Sffmt_t update + magic.tab: sgi core dumps -- why aren't these elf? + stropt: (v+n) for unknown option is option value if n!=0 + procopen: fix setsid() for spawnveg() only +98-03-19 malloc: add realloc foreign region check + sfdisc.h: rename to match kpv disciplines + fastfind: fix strcasecmp/strcmp directory prefix mixup +98-03-17 features/fcntl.c,pathtmp,sftmp: add O_TEMPORARY +98-03-01 pathcanon: fix PATH_LEADING_SLASHES to stat() both slashes + pathcanon: add PATH_VERIFIED + tmdate: add skip[] to expand separator char set + fastfind: FIND_OLD for old 7 bit db, FIND_TYPE for new 8 bit typed db + fastfind: default generates gnu LOCATE02 8 bit db + magic: handle %s in mime description + cdt: kpv update + sfio: kpv update + stdio: fpos64_t fseek64(), ftell64(), fgetpos64(), fsetpos64() + stdio: fseek() => sfseek(SF_PUBLIC) to avoid locking + fts: initialize parent stat[bp] from top level *after* statf done + astmath: add -lm requirement test + *: Astlong_t => _ast_*_t + regex: simplify regcollate() (from doug) + tmtime: preserve Tm_t*tm when calling tminit() + astconf: add readonly PATH_ATTRIBUTES=[cirw] +98-02-14 fastfind: add FIND_ICASE to ignore case + tmdate,tmgoff: handle (+|-)hh[[:]mm[[:]ss]] absolute timezone + tmdate: `<n> <part>' now assumes `next <n> <part>' instead of `this' + tmfix: fix leap year bug that forgot to add 1900 + proc: add PROC_ZOMBIE +98-02-06 strmatch() char class range bug fix + regex char class range bug fix +98-01-23 _WIN32: changed the #if logic again to accomodate _GNUC_ + mnt: grab the mount options too + ast_std.h: hide getopt,getsubopt from stdlib.h + features/limits.c: add gnu guard macros to avoid limits.h recursion + features/mode.c: include "limits.h" instead of "FEATURE/limits.lcl" +98-01-11 sfio.h: use Astlong_t, move Sfio_t Sfdisc_t typedef to top for stdio.h + sfhdr.h: #undef SETLOCAL for hpux + sfvprintf,sfvscanf: %I*x for sizeof(int_arg) + handle ftruncate64 and truncate64 + dtopen.c: __hppa dll needs Dtset Dtlist Dttree refs here +97-12-18 fmtnum: add +97-12-11 magic: handle sgi 64 bit core dumps +97-12-07 pathtmp: add override for TMPPATH,TMPDIR and cycling +97-11-11 tm: handle 0 return from gmtime(),localtime() (dos negative time_t) + features/stdio: fix fflush() macro to do physical sync +97-10-31 astconf PATH_RESOLVE is logical if 3d&&!std, metaphysical otherwise + magic: fix #! mime bug + tm: tmtime() now calls tmfix() and adjusts tm_isdst too=>mtime() works +97-10-11 dllfind,dlfcn: move to separate -ldll so -last can link static, duh + Makefile,state.c: move forced header generation state.c => Makefile + sfio: update including SF_WHOLE +97-10-01 sfdostext: add \r=> sfio discipline + stropt: NiL table => p=name for all name=value +97-08-11 pathtmp: check pid to note forks + procopen: FD_CLOEXEC rfd && wfd + fts: fts_close() after fts_children() with no fts_read() now works +97-07-17 error: sfsync(sfstdin,sfstdout,sfstderr) instead of sfsync(NiL) + _sfcvinit: add sfio internal interface to base conversion tables + strton: use _Sfcv* base conversion tables instead of sfsscanf() + sfvscanf: use _Sfcv* base conversion tables + mime: x- permutations now matched if exact fails + mime: original- stripped from content-* headers + tmdate: add yyyy-jjj, yyyy-mm-dd + dllfind: add + ccmapid: fix buf copy loop limit + ccmapname,ccmapcpy: add + sfstrtmp: add +97-05-09 streval: fix up casts for pseudo-ansi cc + features/types: use _ast_int_8 vars to verify support + string/modedata: check for mvs.390 S_IFMT + include/ast(_std).h: add #define __FILE_typedef + magic: add ccode text check + include/ftwalk.h: FTW_PATH=>FTS_NOCHDIR to avoid FTS_AGAIN (duh) + fts: clear status for FTS_AGAIN (fixes rm -r bug) + mnt: add mvs openedition w_getmntent() + sfhdr: _hdr_float && <float.h> for correct MAXDOUBLE + vmalloc/vmbest: if _std_malloc then use malloc()/free() not sbrk() + remove: check _std_remove + procopen: handle pio[{0,1}]=={0,1} + setenviron,features/uinstd: test for mvs.390 dll environ hacks +96-12-25 <sfio_p.h> -> <ast_common.h> + __EXTERN__(type,object) + __DEFINE__(type,object,value) + magic: check strings in !CC_NATIVE code set too + system: cmd==0 means check for shell access (xopen) + sfhdr.h: fix sfrsrv prototype + add __libc_malloc etc for gnu/linux + astconf(NiL,path,name) == astconf(name,path,NiL) + no liberror + fts_open: if toplist() stat fails return 0 + ftwalk: handle fts_open()==0 via one phony userf() call + sfmode: S_ISFIFO default is SF_SHARE=0 + features/lib: _WIN32 _lib_vfork=1 by default + unsigned<0 comparison and other fixes via sgi.mips4 cc + stk.c: use <align.h> ALIGN_BOUND for stkalloc() + features/lib,vfork: uwin fix + ast_std.h: fix strto[u]ll prototypes with features/types _ast_int_8 + getsubopt: add for xopen 4.2 compatibility + drop function __IMPORT__ + magic: more magic + change #define FILE from Sfio_t to struct _sfio_s + state.c: add generated includes that may be hit by std for MAM + bytesex: forgot about sizeof(long)=>7; could we fix the name too? + vmalloc.h: fix vmnewof() definition + sfio.h,stdio.h,ast_common.h: pollution cleanup + magic.c: add | op for switch + Makefile: stdio.h was on both HEADERSRC and HEADERGEN -- don't do that + drop pp:notice to get <sfio.h> ... <ast.h> to work + regex: add [[:<:]]==\< and [[:>:]]==\> for bsd compat + mime.c: ignore X-* headers while scanning for Content-* + magic.c: check for negative indirect offsets + magic.tab: fix dos entry that generated negative indirect offsets + vmalloc.h: add vmstrdup() prototype + hash.h: add hashgetbucket() macro + magic.c: MAGIFILE is now a : file list + mnt.c: another 4.4 bsd fix -- users must include <sys/crap.h> + common: fix _WIN32 chicken&egg with va_copy + sfio: forgot to set f->val along with _Sfi in sfexcept() + Makefile: add mini target for uwin libmini.a + sfcvt.c: workaround for flaky long double optimizers + features/common: fix to work with va_list==void* + regexec.c: fix REG_STARTEND subexpression offsets + strmatch.c: don't forget <wctype.h> + regrexec.c: fix REG_INVERT end boundary bug that missed last record + astconf.c: notify(0,0,"a=b") called for each setenviron("a=b") + pathcanon.c: check astconf(PATH_LEADING_SLASHES) to preserve //* +96-11-28 _LARGEFILE64_SOURCE by default if possible: NOTE: assumes xopen + regerror: fix for xopen + getopt: fix for xopen + magic: add ciao virtual database + astconf: posix/strict/xopen implies "standard" conformance + fs3d.h: hide mount prototype + ast_std.h,mnt.c,features/fs: ncr port tweaks +96-10-31 version 5.0 + add strtoll() strtoull() + sfkeyprintf: upgrade to int_max args + ast.h: add ssizeof() to work around unsigned botch + conf.sh: add shell actions to conf.tab + _DLL*: drop for _BLD_<lib> + __EXPORT__ + __IMPORT__ + sfio,cdt,vmalloc: kpv update +96-10-11 <ccode.h>: add character code map support + procclose: return shell style exit status + features/fs: pun statvfs.f_basetype to statvfs.f_reserved7 for mvs + uwin: add subdir for uwin additions + ast_std.h: swab() is from <stdlib.h> + sfio.h: <ast_std.h> if _PACKAGE_ast + magic.tab: add mips[1-4], 64-bit + port tweaks for sol.sun4 and sun4 +96-09-06 strerror: add + fmterror: uses strerror + str*search: use sfiso646() order + strpsearch: add + magic: add Magic_t.mime mime type return for magictype() + mime.h: add + strton: use sfsscanf() + strperm: factor in umask() if no who + pathtmp: add TMPPATH check + libevent: add + magic: add discipline to magicopen() + mime: add discipline to mimeopen() +96-08-31 regex: fix BM fail table generator +96-08-11 mntread: fix mnt.type for SCO variant + conf.tab: add SCO KERNEL_* sysconf() vars + fastfind: add findwrite(), fix findread() FF_OFF omission + ftwalk: reimplement on top of fts + fnmatch,re_comp,regexp: reimplement on top of regex + basename,dirname,fmtmsg,fts,ftw,getdate,getsubopt,glob: add + hsearch,nftw,realpath,strftime,strptime,swab,tempnam: add + tsearch,wordexp: add + getcwd: cache last path for easy test +96-07-17 error: sfsync(NiL) ... write ... sfsync(sfstderr) + astconf: handle readonly *(DEV|DIR) vars +96-04-01 swapop: fix stupid return value bug + features/int.c: fix int_swap generation bug + regnexec,regrexec: fix unsigned underflow init error + ls.h: fix iblocks() to be in units of LS_BLOCKSIZE +96-02-29 magic: space before function is definition with no call + hash: drop hash_info from public interface + hash: OBSOLETE hashlast() + hash: add Hash_root_t.Hash_last_t to public interface + add strsearch() and strnsearch() to complement strlook() + add hashkey.h for keyword->long hash + pathpath: pathpath(0,0,"",0) disables $0 $_ $PWD relative search + sfio: sfstrtod+sfhdr update + regex: fix REG_LENIENT to map BRE \[+?|] to ERE [+?|] + change _std_malloc iffe test so it doesn't hang on alpha + sfhdr.h: features/sfio generates _lib_cvt instead of _i386_cvt + ast_hdr.h: add va_copy(a,b) to copy va_list b to a + getopt: fix stupid getopt() -> optget() bug + sfvprintf: %h? now downcasts + regex: handle strto?l() errno in regcomp() + sfstrtod: _Sfstrtod_already_defined -> _STUB_sfstrtod + ast_std.h: hide valloc() and ignore <strings.h> + sfkeyprintf: pass phony va_list for '2' + regex: change HIT var type from int to size_t in special() + ast.h: add EXIT_STATUS(x) to convert wait() status to sh exit status +96-02-14 regex: add _ to \<...\> isalnum test + regex: fix BM inner loop breakout + features/types: size_t is signed on some systems! => _ast_size_t + sfio: sfrd discipline peek optimization + vmalloc: vmalloc.h malloc family macro upgrade + tokopen: fix newline bug for non-restore open + sfio: no inline for gcc until it emits for -g too +96-02-12 sfio: internal upgrade +96-02-09 regex: Boyer-Moore boundary fix + vmalloc: snarf latest +96-02-06 regex: add regrecord() and regrexec() for Boyer-Moore record filtering + regex: rearrange regnexec() args to match buffer,count arg style +96-01-31 stk: add STK_NULL to stk.h and stk.c + regex: privatize regex.h and fix min re length computation + workaround lazy strdup() implementations in features/lib _std_malloc + fix stkclose() to free(stream) -- purify missed because of sfio links + unused var cleanup + port/mnt.c must include <ls.h> to get <ast_fs.h> + add SF_FINAL to sfio and stk + sfio reads now on natural block boundaries + add #!!! <level> <message> !!! to tokline() + add REX_BM pre-filter to regcomp/regnexec +96-01-22 add regcomp env.paren overflow checks +96-01-11 add Doug McIlroy's regex (converted to C from C++ by gsf) + AT&T Research now + sfgetr optimization + regex buglets +96-01-05 tweak magic.tab for win32 +95-12-25 add !(...) -> (...)! to fmtre() + nt tweaks -- functions with no header proto must be defined extern +95-11-24 version 4.1 + add mnt.h mntopen mntread mntclose + convert fmtfs to mnt.h + add RE_LEFTANCHOR and RE_RIGHTANCHOR + gcc inlines must also have global library function instantiation! + add hashview() + fix strtape() internal buffer flow + fix mntread() fs/dir transposition for uts mnttab +95-10-31 change features/unistd.c includes to break limits-param cycle + add cdt from kpv + sfio snarf from kpv + add [ht]search for _WIN32 +95-10-11 clarify PARANOID pathcheck() warning + fix procopen() LIB_SPAWN environ bug with setenviron() cache + fix setenviron() bug that forgot to reset environ if == 0 + add %Z ' ' output format to sfkeyprintf() + sfio snarf for sfvprintf fix + allow multiple hashscan() with scope caveat + add comp/fakelink.h to synthesize a few symlink text patterns + add !<xxx> magic to misc/magic.tab + add FTW_TOP to inhibit recursion (for ftw side effects on top level) + add memfatal() common malloc fatal exception message + add dos \rtest to misc/magic.c/cklang() + sftmp() O_EXCL+random to avoid collisions + pathtemp() uses sftmp() randomizing + features/fs uses SF_APPENDWR + sftmp() uses pathtemp() -- don't worry, its not circular + a few more _WIN32 compatibility additions + realloc fixed to use VM_RSCOPY|VM_RSMOVE instead of obsolete 1 + add hashlook(tab, oldname, HASH_RENAME, newname) + a few more tweaks to satisfy port warnings + add _SFIO_INLINE_PRIVATE to provide real function too + fix <dirent.h> installation test + oops object / shared library compat with _sfgetl2 _sfgetu2 +95-09-11 add getopt() compatibility + add fstat,lstat,mknod,stat fixes for _x versions in sys/stat.h + add getconf CONFORMANCE - posix for things that aren't ast default + sfio_t.h: #ifndef _SFIO_H #include "sfio.h" #endif + snarf vmalloc from kpv +95-08-11 fix malloc bug in magic + update linux and bsd 386 magic entries + error_info.auxilliary returns new level, |=ERROR_OUTPUT if msg done + drop fnmatch from strmatch for sparc (solaris) until it collates +95-07-17 fix port/astconf universe initialization + fix misc/optget opt_info.nopt initialization + drop tmset() TZ=... because it only worked when TZ=... was ignored +95-05-09 mongo <ast.h> namespace cleanup + drop > 2 year old obsolete interfaces + sfvprintf.c fix for (char:8 short:16 int:32 long:64) architectures + TMP_MAX back into conf.tab + pathbin() and pathshell() now use astconf() + fix pathtemp() to not cache getenv("TMPDIR") + fix ftwalk() metaphysical to handle non-dirs too + initialize *_info = { 0 }; for ancient ld semantics (NeXT) + fix magic() to do vmfree() + astconf(X_OK) must prefix lines with "getconf" + use <wchar.h> and wctype in strmatch() if available + _lib_utime_now checks utime(path,0) + _lib_poll_notimer checks poll(x,0,timeout) + add another _lib_utime_now check to port/touch.c + fix dd_buf cast in dir/opendir.c + split getconf.h into conftab.h and conftab.c for :READONLY: + use mbtowc() only if MB_LEN_MAX>1 + sfio char* -> Void_t* cleanup + handle old syntax in misc/magic.c + sigdata.c holds readonly signal strings + pathcheck() does AT&T checks for tools matching PARANOID - yuk + unused var cleanup + deprecate hash_info in favor of hashlast() + fix bad conf.sh ksh integer interactions + dll cleanup + magic.c falls back to malloc for now + add environ to <ast.h> -- C library global data syms are *RESERVED* + sfhdr.h memccpy(1,2,3,size_t) prototype +95-04-01 version 4.0 + convert to vmalloc + allow sigcritical() nesting mismatch to work around vfork() bug + add strexpr() primitive for streval() with user handle (like ftwalk) + add <magic.h> and magic.c file command magic interface + update magic mail message entry + fix keyprintf() invisible char count nesting bug + add sfstrnew(SF_READ|SF_WRITE) for alternate sfstropen() modes + sfstrnew(SF_READ) but reading requires sfseek(), sfreserve() + add conf.tab and conf.sh to nail C/POSIX limits/unistd macros + add getconf() string interface to *conf* + _DLL_INTERMEDIATE_DATA for systems that require indirect globals + _DLL for building shared libraries with _DLL_INTERMEDIATE_DATA + vecfile() restricted to S_ISREG() + add spawnveg() for job control + convert procopen() PROC_PGRP(id) to spawnveg() + fmterror() returns error text given errno (strerror() does same) + fmtsignal() returns signal text given errno (strsignal() does same) + {sig_name,sig_text,SIG_MAX} -> sig_info.{name,text,sigmax} + liberror("",...) omits [%s library] prefix + update features/signal.c table + add vmdisc() and change vmnewof() to use vmresize() + fix conf.sh to allow refs to previously defined limits + fix undefined entries in getconf() + magic data in magic.tab + fix stropt() pointer cast + vmalloc() exception handler replaces nomalloc() + merge sigdata.c into fmtsignal.c -- sun link needs function w/ data! + sftmp() bug fix + drop local <unistd.h> even with _POSIX_SOURCE + fix vmstrdup() macro arg miscount + fix conf.sh to handle enum'd symbolic constants in unistd.h + drop malloc() et.al. prototypes from vmalloc.h + fix sfvprintf() %d argument reference + add OSF/1 AES symbol(s) to conf.tab + determine standards prefix from conf.tab + add _CS_SHELL to conf.tab + getpath() default is confstr(_CS_PATH) + getshell() default is confstr(_CS_SHELL) + unify keyprintf user function args (should have learned by now!) + add quad type to magic + add astfeature() to unify universe style dynamic features + add ftwflags() to determine FTW_* flags from astfeature() +95-03-11 fix stropt() to not modify its *const* arg + handle "' quotes and chresc() in stropt() values + , treated like :space: between stropt() options + fix procopen() fd dup to ignore self-dups + add library id[] to misc/state.c + add ftwalk(FTW_METAPHYSICAL) for posix -H + sfvprintf() now handles balanced () in %() + add tmfmt() with buffer size check to replace tmform() + add fmttime() calling tmfmt() to fit fmt*() mold + add <keyprintf.h> and keyprintf() to support %(...)? in commands + add Hash_table_t for size==0 in stropt() + add EXTTYPE extended header to tar.h +95-02-14 sfmove() buffer size overflow fix + add _SFSTDIO_H to sfio.h + rename setenv() to setenviron() -- posix finally decided + rename <option.h> opt_* to opt_info.* + update features/unistd.c for _SC_* and _PC_* posix additions +95-01-19 (char*)uchar cast in fmtesc() + fix hash bucket memory leak in hashlook() [via John Mocenigo] + update strings/strtape() + fix optget()/optjoin() to handle leading + + add ALIGN_ prefix to <align.h> identifiers +95-01-11 change tm/*.c tmset(0) to tmset(tm_info.zone) to keep user setting + fix tmform() %Z null pointer dereference +95-01-01 add this RELEASE file + fix strperm() to properly handle "644 file" + fix tokline() to return last ' ' terminated line in string + fix tokscan() to properly handle \\n splice + add fmtesc() to complement stresc() + add LS_NUMBER to fmtls() + drop spurious optusage() ' ' + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libcmd changes">libcmd changes</A></H3></FONT></FONT></CENTER> +<PRE> + +12-02-14 rm.c: --force ignores no file operands specified +12-01-10 b_* (int, char**, void*) => (int, char**, Shbltin_t*) +11-08-27 pids.c: add getsid() iffe test +10-08-16 chmod.c: add -l alias for { -h --symlink } +11-08-16 chgrp.c: change lchmod() ref to lchown() +11-05-03 cp.c: do not delete src if mv to dest fails -- doh +11-03-28 chmod.c,chgrp.c: fix --symlink logic +11-03-26 rm.c: don't eaccess() check symlinks! +11-01-27 date: add { -R, --rfc-2822, -T, --rfc-3339=type } +11-01-03 chgrp.c: --symlink => --physical +10-12-10 rm.c: fix not-writable logic +10-12-01 tee.c: add iterrupt logic for slow open(1) -- needs to be generalized +10-11-30 chgrp.c: add -N,--numeric to bypass name lookup +10-10-20 cp: add --timestamps (preserv timestamps and permissions) +10-10-20 ln: fix 'cannot replace existing file' logic +10-10-10 cp,mv: add --remove-destination +10-08-11 cp.c,expr.c: use conformance("standard",0) test +10-08-11 cut.c: use mbnsize() instead of mblen() (for ast C.UTF-8) +10-07-28 chgrp.c,chmod.c,cksum.c: fts_path for diagnostics, not fts_accpath! +10-06-14 rm.c: fix -rfu logic +10-06-12 paste.c: repeat after me: do not modify argv[i] +10-06-01 sync with ast api 20100601 +10-05-09 tail.c: fix -0f bug that inially listed the entire file +10-05-06 basename.c: add { -a,--all -s,--suffux=suffix } from BSD +10-04-12 cat.c: fix -v bug that dumped core and make consistent with cmp --print-chars +10-04-11 cmp.c: add --print-bytes, --count=n, --differences=n +10-04-08 vmstate.c: add { method flags } vars for Vmstat_t.mode +10-04-08 mkdir.c: fix check for { S_ISUID S_ISGID S_ISVTX } after successful mkdir(2) +10-04-01 stty.c: add --fd=fd option +10-03-23 tail.c: fix -f large initial offset bug that didn't copy all data +10-03-07 tail.c: sfsync(sfstdout) after all -f done, fix -f partial line +10-03-05 mktemp.c: add --regress=seed for testing +10-03-05 vmstate.c: add +10-01-26 tail.c: -f sleep(1) only if no progress from last round of checks +10-01-20 fts_fix.[ch]: use <fts_fix.h> instead of <fts.h> (see fts_fix.c) +10-01-20 cp.c: free(state) if called from old shell +09-12-10 join.c: <wctype.h> for iswspace()! +09-12-04 cmd.h: fix CMD_DYNAMIC logic +09-12-04 cut.c: handle -d mb +09-12-03 mkdir.c: add --verbose +09-11-30 cat.c,date.c,cksum.c: drop setlocale() call already done by optget() +09-11-30 join.c: handle -t mb +09-11-28 wclib.c: { -w -L } mb independent of -m +09-11-28 paste.c: handle -d mb +09-11-28 uniq.c: handle -s mb +09-11-28 cksum.c: FTS_SEEDOTDIR by default +09-09-09 fds.c: add --unit=fd +09-08-25 tail.c: initialize Tail_t.fifo=0 !! +09-08-15 tail.c: fix fifo logic +09-08-11 wc.c: add setlocale(LC_CTYPE,"C") cleanup, add utf8 optimzations +09-08-10 uniq.c: replace -c 1..9999 sfsprintf() with inline conversion +09-08-01 join.c: fix empty field null pointer deref +09-07-23 pathchk.c: add -P,--path and -a,--all +09-07-02 chgrp.c,chmod.c,cksum.c: fts_flags() default only if not --recursive +09-06-19 cmd.h,cmdinit.c: add ERROR_CALLBACK for ERROR_NOTIFY main() callback +09-06-19 mktemp.c: --unsafe now checks and prints path but does create +09-06-19 tee.c: add ERROR_CALLBACK for tee_cleanup() sfio discipline pop +09-06-18 rm.c: handle interrupts during interactive query +09-06-18 cp.c: handle interrupts during interactive query +09-05-25 tail.c: fix old style option logic to handle --invalid-long-option +09-05-24 tail.c: -r == +1r +09-05-01 mktemp.c: handle foo/prefix, add -p dir and -u +09-03-31 cat.c: handle --no* options +09-03-15 tail.c: fix --timeout termination logic +09-03-03 tee.c: clean up sfio disciplines on error +09-03-03 cat.c: fix -v|-e|-n|-B interaction bugs +09-02-14 tail.c: fix VSC failures +09-02-14 join.c: fix VSC failure +09-02-02 uniq.c: document -number == -fnumber, +number == -snumber +09-02-02 tail.c: fix usage[] for negative offsets, add sun -b +09-02-02 mktemp.c: add +09-02-02 features/utsname: UWIN _UNAME_os_DEFAULT => UWIN +09-01-31 dirname.c: add experimental { -f -r -x } for pathpath(3) +09-01-05 cmp.c: fix EOF diagnostic to conform to posix +09-01-03 mkfifo.c: fix --mode=mode logic +08-12-07 date.c: add %[_][EO]K for [space pad] [full|long] iso docs +08-11-10 stty.c: check for -t grouping so -tostop != -t -ostop +08-10-15 rm.c: handle 'rm -f x x' => exit 0 +08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead +08-06-17 shcmd.h: move to libast +08-04-24 uniq.c: add optget() 'n' option for -1 => -f1 +08-04-24 getconf.c: clarify diffs between "name - value" and "name = value" +08-04-01 cut.c: add write error check +08-04-01 paste.c: fix --noserial stream vector access bug +08-04-01 pids.c: add ls/ps style --format=format +08-04-01 stty.c: fix off2 unitialized reference +08-03-28 chgrp.c: add --before=file +08-03-14 pids.c: add +08-03-11 chgrp.c: fix -m to use uid:gid as lookup key +08-02-11 Makefile: add -lmd possibly required by sumlib.o -- hack alert +08-01-30 expr.c: fix <=0 type that broke substr * 1 * -- wow +07-12-13 cp.c: fix builtin state reinitialization +07-11-29 rev.c: honor multibyte locales +07-11-27 cp.c: open non-existent destination with O_EXCL +07-11-27 stty.c: add -t,--terminal-group to list tty pgrp +07-11-27 cksum.c: --silent -s => -S, -s == -x sys5 for gnu compatibility +07-11-11 tee.c: drop ancient bsd compatibility "-" operand => SIGINT +07-10-29 cksum.c: add SUM_LEGACY for -r +07-10-12 cp.c: plug usage string memory leak by using per-builtin state +07-09-21 cksum.c: add sumprint() default scale arg, --scale, --bsd for solaris +07-09-10 chmod.c: add --show,-n +07-07-27 wclib.c: bias <wchar.h> checks for modern unix +07-07-17 cat.c: fix --squeeze-blank to reduce multiple blank lines to *one* +07-05-20 cmd.h: handle msvc's balk at if(0)0=0; +07-05-20 cksum.c: #include <modex.h> +07-05-11 cmd.h: add _CMD_CONTEXT_OK() to verify >= 20070511 context +07-05-09 fds.c: handle ipv6 sockets +07-05-09 cmd.h: <shbltin.h> : cmdquit() => sh_checksig(context) +07-04-25 mkdir.c: force (S_ISVTX|S_ISUID|S_ISGID) after mkdir(2) +07-04-24 procrun.c: add -last intercept => sh_run() and whence -q +07-04-19 uname.c: name operands first checked for CS_NAME, then NAME +07-03-28 date.c: add --unelapsed=scale, -U: fmtelapsed() => strelapsed() +07-03-25 wclib.h: iswspace() requires <wctype.h>! +07-03-11 tty.c: add sysV --line-number, -l +07-02-26 Makefile: sumlib.o: direct extract from +lsum (vcodex someday) +07-02-24 Makefile: tweak cmdext.h action for --mam bootstrap +07-02-09 Makefile: { cmdext.h cmdlist.h } depend on *.c list! +07-02-09 Makefile: +lsum to bring in static -lsum (no dynamic right now) +07-02-07 cksum.c: move from src/cmd/std with ftwalk => fts +07-02-07 getconf.c: handle /bin == /usr/bin in defer logic +07-01-26 chmod.c: don't FTS_FOLLOW if !FTS_PHYSICAL +07-01-23 cut.c: Cut_t variable dimension list[] must be last member +07-01-22 uname.c: fix -h typo that clobbered astconf() state -- ouch +07-01-02 fmt.c: fix buffer splice off by one bug -- what else +06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro +06-11-21 cp.c: fix 06-10-31 const dot[] readonly assignment +06-11-15 cp.c: fix 06-10-31 ln -s enoent bug +06-11-11 getconf.c: let astconf() handle "undefined" vs. "" +06-11-11 getconf.c: fix deferred getconf path search +06-11-11 fmt.c: handle two char { \t } in --usage ouput +06-10-31 global edit to eliminate most non-const static data0 +06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h> +06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } +06-10-31 join.c: tone down /tmp usage vi SFSK_DISCARD +06-10-31 cp.c,rm.c: update to <fts.h> to accomodate non-static data +06-10-29 date.c: "...%H%..." => "...%H" "%..." to avoid SCCS conflict +06-10-26 fds.c: handle sctp +06-10-18 tail.c: fix invalid suffix infinite loop +06-10-11 chgrp.c,cp.c: add sfstruse() error checks +06-10-10 tee.c: add --linebuffer, -l +06-10-06 getconf.c: preserve native getconf(1) known variable behavior +06-10-04 sync.c: add (thanks to Roland Mainz) +06-10-04 getconf.c: add -v specification => run native getconf(1) +06-09-28 stty.c: static setmode() => set() for darwin.i386 +06-09-27 head.c: handle -1c => -c1 +06-09-19 pathchk.c: pathconf() => astconf() +06-09-11 tail.c: handle compatibility corner cases +06-09-08 date.c: add output write error diagnostic +06-09-04 tail.c: fix initial position for -n0, no args => no -f +06-08-28 uniq.c: add -D,--all-repeated +06-08-25 wc.c,wclib.c: add -L,--longest-line,WC_LONGEST +06-08-24 wc.c,wclib.c: implement -m and WC_MBYTE +06-08-24 rmdir.c: -sp applies to every message, add gnu -e +06-08-23 rmdir.c: add solaris --suppress, -s +06-08-23 mkdir.c: don't add 0300 to -p final dir mode +06-07-17 cut.c: handle last line with no newline +06-07-17 cut.c: --output-delimiter == --line-delimiter +06-06-25 chmod.c: mask -c output with S_IPERM +06-05-09 uname.c: add -o; change -a to match linux +06-05-03 date.c: add --last -L to list last of multiple time args +06-02-14 tail.c: fix -f bug that lost fast stream data +06-02-11 getconf.c: exit 1 if name invalid -- duh +06-01-28 cp.c,rm.c: fix astquery() 'q' to return and not exit() +05-08-11 fmt.c: fix -o to handle raw --usage strings +05-05-17 cat.c,head.c: disable EPIPE error messages +05-04-14 chgrp.c: -f means all non-syntax error messages +05-04-11 fds.c: add from old internal open(1) +05-04-09 cmdext.h,cmdlist.h: generate from source -- about time +05-03-24 features/symlink: verify { lchmod lchown } implementations +05-03-07 date.c: add --listzones to list the time zone table +05-02-14 chmod.c: add --reference=file +05-01-11 cat.c: restore output stream to binary mode on exit +04-12-15 cp.c: add --preserve high resolution time support +04-12-08 date.c: add high resolution time support +04-12-01 cmp.c: fix %6I*ld => %6I*d -- doh + fmt.c: handle "n operands n" + head.c: handle -cN -nN, N > 4Gb +04-11-22 cmp.c: handle >2G chars/lines +04-11-18 fold.c: add --prepend=text, --append=text +04-10-31 tail.c: use SF_LOCKR macro +04-10-28 tail.c: use strtol() for old stype [+-]number[suffix] -- doh +04-10-22 cp.c: check rename() errno==ENOENT to retain destination +04-10-11 fmt.c: fix -o,--optget sublist bugs + tail.c: use strton() for number conversion +04-10-08 pathchk.c: add empty path and -p - first component char +04-10-01 fmt.c: add -o,--optget concatenated usage string format + stty.c: context is ERROR_INTERCATIVE + rm.c: restore 3d before exit +04-09-24 pathchk.c: fix docs +04-09-14 date.c: add %| and %& --parse docs +04-08-27 cp.c: add FTW_DC check -- duh +04-08-01 fmt.c: handle last char != ' +04-07-22 date.c,uname.c: access() => eaccess() +04-07-01 fmt.c: handle large input lines -- ouch +04-06-11 id.c: fix -r to output something! +04-05-27 expr.c: fix `:' op subexpression output +04-04-15 chmod.c: follow symlink for relative mode +04-04-12 Makefile: add STDCHMOD (for osf.alpha) +04-03-19 tail.c: handle -f sfreserve() large chunk failure +04-02-29 cp.c: decouple -f and -i for standard CONFORMANCE + cp.c: mv now attempts rename() before remove()+rename() + date.c: -f format or +format disables system clock set +04-02-14 cp.c: add -F --fsync to call fsync(2) for each copied file +04-01-05 head.c: -s now uses opt_info.number for >2Gb skip +03-09-18 tail.c: add --log +03-09-11 rm.c: add --unconditional +03-08-11 fold.c: add --delimiter=c to break at c +03-07-28 features/time: change settimeofday() test to 2nd arg of (void*)0 + expr.c: add {match,substr,index,length,quote} +03-07-15 fmt.c: fix trailing space bug +03-06-20 uname.c: fix -p constant string overwrite +03-06-04 stty.c: add undef to control assignment docs +03-05-31 uname.c: add -f and sysinfo()/confstr() compatibility via astconf() +03-05-27 rm.c: fix inappropriate "/.." append path overflow + cut.c: snarf from dgk +03-05-18 rm.c: check st_nlink to verify progress w.r.t. ftwalk/fts +03-05-15 join.c: fix stealth -v2 bug (thanks ahs) +03-05-04 wc.c: drop trailing space for `wc -l < file' +03-03-21 date.c: add %Q/recent/distant/ docs +03-02-19 date.c: fix %+|!flag docs +02-11-14 update for cmdinit() 4th arg and ERROR_NOTIFY for interrupt cleanup +02-10-02 date.c: tmform() => tmfmt() +02-09-30 date.c,uname.c: change execv() calls to procrun(): exec|exit => bad +02-09-06 wclib.c: fix 1 char-at-a-time miscount bug +02-08-19 chgrp.c: convert to use <cdt.h> +02-07-23 join.c: fix comm snarf typo +02-04-05 date.c: add %u +02-01-24 stty.c: ifdef a few more macros for uts (yes, its still running) +01-12-14 date.c: clarify %z doc +01-10-31 mkdir.c: mkdir() on existing dir could fail with errno!=EEXIST + uname.c: add execve() loop check for unknown options +01-10-29 tail.c: SF_SHARE on only if not reading through EOF +01-10-11 getconf.c: fix usage typos +01-09-11 cp.c,cmd.h: handle . in argv[0] + cp.c: add O_BINARY to all open() calls +01-09-06 tail: input streams must be SF_SHARE -- duh +01-07-16 stty: fix cntl() macro for CC_NATIVE!=CC_ASCII +01-05-31 date: fix /bin/date fallback logic + stty: fix a few mismatched flags, -a and -g option logic + stty: tone down sane to modify current settings rather than from zero +01-05-01 uname: -i => -h, add sol.sun4 -i, add sgi -R, punt to /usr/bin/uname +01-04-17 date,rm: add +01-03-07 cp: fix readonly string mod on "." +01-01-23 cp: `cp foo' => `cp foo .' only for CONFORMANCE!=standard +00-12-01 cut: multibyte support +00-10-31 mkdir: handle races by checking EEXIST +00-09-20 cp: copy argv to stack before modifying in place +00-05-18 add setlocale(LC_ALL,"") +00-04-30 join: drop weird opt_info.argv reference +00-03-17 expr: add == operator -- duh + cp,ln,mv: delay pathcanon() on destination to verify `cp a b/.' + getconf: use astgetconf for proper message control + ERROR_translate: dictionary update +00-03-08 tail: handle multiple -f files +00-03-07 fmt: add +00-03-07 dirname: handle PATH_LEADING_SLASHES as documented + tail: accept + options +00-02-14 chmod: --ignore-umask to ignore umask(2) in symbolic expressions + chmod,chgrp,cp: use FTS_NOSEEDOTDIR for correct path construction + cat: fix -n (was ignored, wow) +00-01-27 getconf: add "-a" and "-v spec" for sol7.* compatibility +99-09-09 join: fix -j1 vs. -j 1, add --ignorecase +99-06-22 paste: defualt delim in writable string +99-06-16 cat: fix --dos-ouput typo +99-06-11 cp: tighten chown() diagnostics +99-06-08 expr: nothing for NULL string bug fix +99-05-21 paste: fix missing newline columnize bug +99-05-20 mv: do not check for `mv foo foo' since rename() handles it +99-05-01 cmp,comm,cp/mv/ln,expr,fold,getconf,head: long options + join,logname,paste,pathchk,tail,tee: long options +99-04-10 uname: long options, stdize -a + chmod,head,tail,rev: long options + cut: long options, pass regression test 02 +99-04-07 cat: long options, fix O_TEXT modes +99-01-11 tail: fix +n + join: another ggs/psm bug + join: all 1 and/or 2 to be unseekable +99-01-01 cp: fix -p + chmod: drop -l option because of clash with l (lock) mode +98-12-25 cat: add -T to sfopen(,,"rt") +98-11-11 chgrp,chmod: cannot open file stream => not found + join: fix another ggs/psm bug; thanks guys +98-10-20 cp: fix cp -rp to update dir times too +98-09-22 join: fix ggs null field bug +98-08-11 join: fix last regression test bug +98-05-29 join: add jp->common to handle boundary conditions +98-03-11 cat,cp,rev,tee: fix sfmove() error checks +98-03-01 join: fix bug that emitted records more than once after eof + cp: fix sfmove() error check +98-02-14 cp: -R physical, -[HLP], -r getconf(PATH_RESOLVE) +98-01-11 cp: check sfclose() return value +98-01-07 chown,chgrp,chmod: use fts for -R + mkdir: fix -p default mode +97-12-07 mkdir: fix umask() reset +97-11-11 chown,chgrp: proper interpretation of -h,-l for lchown() + chown,chgrp: only chown() if uid or gid change +97-10-31 mkdir: do umask right +97-08-11 cmdinit: clear opt_info.index to allow multiple calls + cp,ln,mv: add +97-07-17 join: fix a few more -a bugs +97-05-31 expr: optget() only if CONFORMANCE==standard +97-04-01 join: fix a few bugs that make it work! +96-12-25 head: sfset(sfstdin,SF_SHARE,1) + Makefile: add -last to cmd lib list + drop function __IMPORT__ +96-08-11 tail: check for truncated file and rewind for -f +96-04-08 update <cmd.h> +96-02-29 uname: -a like std, -l for everything + id: add -a (default) +96-02-14 wc: speed up inner loop newline breakout +96-01-30 unused var cleanup +96-01-01 AT&T Research now + pathchk: handle getcwd(0,0) error + expr: switch to <regex.h> +95-11-11 add expr.c + fix cut exit code and -s optimization +95-10-11 add extern b_* to cmd.h + add void* context 3rd arg to b_main() +95-05-09 add getconf + cat -u avoids mmap + add chown|chgrp -m uid|gid map file + add chown|chgrp -P for systems with lchown(2) + chown|chgrp -P => lstat() too! + chmod|chown|chgrp -HLP +95-04-01 version 1.2 + add rmdir +95-02-14 fix mkdir -p symlink bug + fix mkdir '/' skip bug that went one too far + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libcoshell changes">libcoshell changes</A></H3></FONT></FONT></CENTER> +<PRE> + +12-02-22 coinit.c: handle non-identifier export var names +11-12-13 cowait.c: handle sfpoll() error return on interrupt +11-11-21 cowait.c: poll before blocking read to weed out killed jobs (no 'x' message) +11-08-30 codata.c,coopen.c: drop macro "..." catenation for old cc +10-08-11 coinit.c: force _BLD_DLL for environ intercept +10-06-01 sync with ast api 20100601 +10-05-19 cokill.c: do cowait(co,co,0) to drain pending messages +10-05-15 coshell.h,coopen.c: add CO_ORPHAN for PROC_ORPHAN +10-05-11 coopen.c: add PROC_ORPHAN for CO_SHELL +10-05-10 coopen.c: no atexit() for CO_SHELL +10-04-15 first ksh93u local job pool tests work (service daemon tbd) +10-04-14 cowait.c: add 3rd cowait() arg timeout; 0 Coshell_t* operates on all open coshells +10-04-10 coshell.h: add CO_SHELL for shell using coshell! +09-12-09 coexport.c: add runtime CO_ENV_EXPORT hook that avoids changing environ +08-10-28 coopen.c: close write side of parent msgfd -- doh +08-04-28 coexec.c: check for fd 1,2 equivalence before CO_SERIALIZE 2>&1 +07-10-29 coshell.h,coexec.c: fix procrun()/system() intercept logic +07-08-15 add CO_SEPARATE,CO_MODE_SEPARATE for separate shell+wait per action +07-04-09 Makefile: $(CC.PIC) to allow archive to be pulled into other dlls +06-08-22 coshell.h: procrun => coprocrun, system => cosystem +06-08-09 coshell.h: export CO_ENV_MSGFD for COSHELL=coshell +06-08-02 coexec.c: Cojob_t.flags&CO_SERVICE for service requests +06-08-02 cokill.c: cokill() signal==0 => kill CO_SERVICE jobs +06-07-27 coexec.c: drop server cowait() that bypassed caller +06-06-21 coexec.c: add non-block cowait() to drain responses +06-06-11 fix service intercept cleanup +06-05-24 add service=name:init lightweight service intercepts +05-04-19 cowait.c: beef up invalid message tests and diagnostics +05-04-11 drop fixed CO_MSGFD for $_coshell_msgfd +05-04-07 coexec.c: fix !_lib_fork&&_map_spawnve close-on-exec redirection +04-09-22 cowait.c: remove CO_SERIALIZE temporaries after listing -- duh +04-09-01 co*: add CO_SERIALIZE +04-07-22 system.c: access() => eaccess() +04-02-11 coinit.c: fix CO_CROSS PATH initialization +02-10-30 coclose.c: fix reference-after-free bug in coclose() +02-01-31 codata.c,coopen.c: fix CO_MSGFD parameterization +02-01-24 coopen.c: fix small memory leak +01-10-26 coopen.c: hung sfclose(fp) -> close(sffileno(fp)) -- wow +01-09-11 coinit.c: fix coident[] for ancient bsh that die on `test == 1' + coinit.c: and fix coident[] to weed out buggy ksh88i trap on exit +01-05-31 co*: add CO_CROSS, expose CO_DEVFD +01-04-23 coquote: add state.type to avoid getenv() overwrite on some systems +01-01-01 cokill: killjob => cokilljob, killshell => cokillshell +00-12-18 coinit: CO_OSH ? "${!-$$}" : "${!:-$$}" +00-10-25 codata: $ZSH_VERSION is not ksh +00-02-14 procrun,system: system(3) returns wait() status (not shell status) +99-11-19 co*: add CO_OSH for bsdi lack of times(1) + coexec: CO_IGNORE for all but real ksh +98-06-22 coinit: quote cd path arg + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libsum changes">libsum changes</A></H3></FONT></FONT></CENTER> +<PRE> + +12-02-29 sum-sha2.c: bitcount[] order reversed to allow a single noalias buffer copy +09-09-28 sumlib.c: use simple (faster) method name match function +08-06-05 sum-lmd.c: align context to largest int +08-05-01 sumlib.c: add some -lmd verification checks +08-02-11 sum-lmd.c,features/sum: add wrapper for solaris -lmd +07-10-29 sum.h,sumlib.c: add SUM_LEGACY for legacy output format +07-09-21 sum-sha1.c: reinstate Steve Reid's public domain implementation +07-07-26 sumlib.c: drop GPL sum-sha1.c +05-02-14 sumlib.c: split into sum-*.c +05-02-14 sum-sha2.c: add SHA { 256 384 512 } +04-02-29 Makefile: compile with $(CC.PIC) for codexlib/sum $(CC.DLL) +03-12-16 add { crc prng } generic methods and maps[] to these methods +03-12-16 sum.h,sumlib.c: add sumdata() +03-09-29 sumlib.c: fix FNV to use ^ instead of + +03-04-28 sumlib.c: drop md5 `zeroize' for performance + sumlib.c: add FIPS 180-1 SHA-1 + +</PRE> +<P> +<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libdll changes">libdll changes</A></H3></FONT></FONT></CENTER> +<PRE> + +11-10-11 dll_lib.c: add { dllnames() dll_lib() } +10-10-20 dllscan.c: version arg "-" => 0 +10-10-19 dllplug.c: fix bug that wiped out dlopen() error message +10-10-19 dllplug.c: un-localize lookup names (happens with cut and paste) +10-10-19 dllscan.c: still no code for implicit libs missed by dlopen() +10-08-02 dllplug.c: fix local path dllcheck() call +10-05-28 dllplug.c: add dllplugin() with dllcheck() version check +10-05-28 dllcheck.c: add dllcheck() to do plugin_version() checks +10-05-28 dllerror.c: add dllerror(int retain) for dll*() and dl*() messages +09-11-17 dllscan.c: handle name[-.]version in dlsopen() +09-04-15 dllopen.c: add, use dllopen() internally to wrap dlopen() +08-05-12 dllscan.c: LIBSUFFIX==.dylib => default plugin version match 0.0 +06-10-11 dllscan.c: check sfstruse() return values -- doh +06-01-25 dllplug.c: add errorf() library message for dlopen() error +05-02-14 dllscan.c: "" || "-" => NiL +04-10-01 dllfind.c: drop ksh "builtin" workaround + dllscan.c: directory prefix in name limits search to dir and siblings +04-07-22 dllscan.c: access() => eaccess() +04-01-30 dllfind.c: dllplug(error_info.id) then dllplug(0) +04-01-28 dllscan.c: update for new plugin scheme: lib/foo/bar.xxx + dllplug.c: add dllplug() for plugin dllfind() +03-03-12 dllfind.c: dlopen() with RTLD_GLOBAL|RTLD_PARENT defaults +03-02-11 dllscan.c: change LIBPATH to <dir>[:<env>[:<pat>]][,...] +03-01-08 dllscan.c: hack version logic again -- is consistency rocket science? +03-01-07 dlfcn.c: fix darwin.ppc dlopen/dlsym/dlclose +02-11-18 dllfind.c: add path,size args (with backwards compatibility checks) +02-11-15 dllfind.c: check for ./path if '.' in path but no '/' +02-08-30 dllfind.c: fix a bug that returned uninitialized value on not found +02-08-28 dllscan.c: handle and display bin as a sibling dir +02-07-31 dllscan.c: add dllsopen,dllsread,dllsclose + dllfind.c: use dllsopen,dllsread,dllsclose +02-07-26 dllfind.c: add dllinfo() +02-06-27 dllnext.c: define _GNU_SOURCE to enable RTLD_NEXT +02-03-17 dllfind.c: fix dll prefix search (for cygwin) +02-01-11 features/dll: include <dlfcn.h> only if _hdr_dlfcn&&_lib_dlopen +01-10-31 dlfcn.c: change hp.pa dlopen() prototype (<dlfcn.h> but no -ldl!) +01-09-25 dllfind: add LIBSUFFIX +01-07-17 dllfind: do at least one dlopen() to prime dlerror() +01-05-29 dlopen: fix dlopen(0,0) for HP +01-04-20 dllfind: use getconf HOSTTYPE LIBPATH LIBSUFFIX +01-02-14 features/dll: fix unbalanced ' quote and ancient hostinfo reference +00-01-26 dlllook: add -- dlsym() with `_' weak prefix fallback +99-04-01 features/dll: drop <stdio.h> -- iffe protos printf +99-03-19 static=1 for all but win32.* +98-06-01 dllfind: fix version search +98-03-11 features/dll: probe for _DLL_RLD_SYM +98-03-01 dllnext: fix to work! +98-01-23 -ldl test moved to lib0ast +98-01-11 update for astconf("LIBPATH") + add dllnext(flags) to uncover next layer + dllfind() and dllnext() in separate files (for 3d) +97-10-11 move from libast so libast can link static +</PRE> +<P> +<HR> +<TABLE border=0 align=center width=96%> +<TR> +<TD align=left></TD> +<TD align=center></TD> +<TD align=right>March 13, 2012</TD> +</TR> +</TABLE> +<P> + +</TD></TR></TBODY></TABLE> + +</BODY> +</HTML> diff --git a/lib/package/ast-ksh.pkg b/lib/package/ast-ksh.pkg new file mode 100644 index 0000000..6f2fec8 --- /dev/null +++ b/lib/package/ast-ksh.pkg @@ -0,0 +1,89 @@ +ast-ksh :PACKAGE: ksh93 libast libcmd libcoshell libsum libdll + +:COVERS: ksh + +:LICENSE: *.open + +:CATEGORY: shells + +:INDEX: ksh and support libraries + +:DESCRIPTION: + The AT&T Software Technology ast-ksh package from AT&T Research + contains ksh and support libraries. This is the minimal set of + components needed to build ksh. + +:DETAILS: cyg + :README: + This package installs a standalone ksh93 executable ksh93.exe + and its man page ksh93.1. If /bin/ksh.exe does not exist then + these symlinks + /bin/ksh.exe => ksh93.exe + /usr/share/man/man1/ksh93.1 => ksh.1 + are created. This allows alternative ksh impelementations, + e.g., /bin/pdksh.exe, to be selected by changing the ksh.exe + and ksh.1 symbolic links. In addition, ksh and ksh93 paths are + added to /etc/shells if not already present. + $() + Each builtin or special command accepts the --man and --html + options to list the man page on the standard error. The --??? + option describes the self documenting options available to all + builtin and special commands. + $() + The stanadlone ksh is statically linked with the ast libcmd + library which provides several builtin versions of /bin + commands. "builtin | grep /opt/ast/bin" lists the libcmd + builtins on the standard output. /opt/ast/bin/FOO accesses + the FOO builtin, whether the /opt/ast/bin directory exists + or not. "builtin FOO" allows /opt/ast/bin/FOO to be accessed + as FOO, bypassing the $PATH setting. To enable all libcmd + builtins do one of the following: + (a) create the directory /opt/ast/bin and the file + /opt/ast/bin/.paths with this line + BUILTIN_LIB=. + and place /opt/ast/bin before /bin and /usr/bin in $PATH + (this will affect all ksh subshells and scripts) + (b) run "builtin $( builtin | sed -e '/\//!d' -e 's,.*/,,' )" + (this will affect only the current shell) + Some scripts may run significantly faster with libcmd builtins + enabled. + $() + The ast library checks the DOSPATHVARS environment variable + for variable path values to convert to and from native windows + format when cross-executing between cygwin and non-cygwin + programs. The value is a space separated list of environment + variables to convert. PATH is handled by cygwin so it is not + converted by the ast library. + $() + The astksh cygwin source package provides a bootstrap build + environment that is not suited for an edit/build/debug cycle. + If you want to explore and modify the source then you should + install the (non-cygwinized) ast-base package which includes + AT&T nmake. With ast-base you will also be able to regenerate + the astksh cygwin source and binary packages. + $() + For more information on ksh and other AT&T ast tools see + http://www.research.att.com/sw/download/ + :EXPORT: + SHOPT_CMDLIB_DIR=1 + bin/ksh93.exe :INSTALL: bin/ksh.exe + share/man/man1/ksh93.1 :INSTALL: man/man1/sh.1 + :POSTINSTALL: + if [ ! -e /bin/ksh.exe ] + then ln -fs ksh93.exe /bin/ksh.exe + ln -fs ksh93.1 /usr/share/man/man1/ksh.1 + else echo "/bin/ksh.exe already exists" + fi + if [ -f /etc/shells ] + then for i in /bin/ksh93 /bin/ksh /usr/bin/ksh93 /usr/bin/ksh + do if grep $i /etc/shells >/dev/null 2>&1 + then echo "$i already in /etc/shells" + else echo $i >> /etc/shells + echo "$i added to /etc/shells" + fi + done + else echo "no /etc/shells file" + fi + exit 0 + :TEST: bin/ksh + KSH=$<; cd src/cmd/ksh93/tests; CYGWIN="$$CYGWIN ntsec binmode" SHELL=$$KSH $$KSH shtests diff --git a/lib/package/ast-ksh.req b/lib/package/ast-ksh.req new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/package/ast-ksh.req diff --git a/lib/package/ast-ksh.ver b/lib/package/ast-ksh.ver new file mode 100644 index 0000000..eb5fa10 --- /dev/null +++ b/lib/package/ast-ksh.ver @@ -0,0 +1 @@ +ast-ksh 2012-02-29 2012-02-29 1 diff --git a/lib/package/ast.def b/lib/package/ast.def new file mode 100644 index 0000000..57a7796 --- /dev/null +++ b/lib/package/ast.def @@ -0,0 +1,47 @@ +# +# ast default license info +# + +message_set=3 + +contributor+=( + [gsf]="Glenn Fowler <gsf@research.att.com>" + [dgk]="David Korn <dgk@research.att.com>" + [kpv]="Phong Vo <kpv@research.att.com>" + + [aedgar]="Adam Edgar <aedgar@research.att.com>" + [alb]="Adam Buchsbaum <alb@adambuchsbaum.com>" + [ashaikh]="Aman Shaikh <ashaikh@research.att.com>" + [bala]="Bala Krishnamurthy <bala@research.att.com>" + [chen]="Robin Chen <chen@research.att.com>" + [dfwc]="Don Caldwell <dfwc@research.att.com>" + [ek]="Lefty Koutsofios <ek@research.att.com>" + [gruber]="Bob Gruber <bob.gruber@gmail.com>" + [jiawang]="Jia Wang <jiawang@research.att.com>" + [jlk]="Jeff Korn <@google.com>" + [kfisher]="Kathleen Fisher <kfisher@research.att.com>" + [kwc]="Ken Church <@microsoft.com>" + + [bwk]="Brian Kernigham <bwk@research.bell-labs.com>" + [dmr]="Dennis Ritchie <dmr@research.bell-labs.com>" + [doug]="Doug McIlroy <doug@research.bell-labs.com>" + [ekrell]="Eduardo Krell <ekrell@adexus.cl>" + [jjs]="John Snyder <jjs@adexus.cl>" + [rao]="Herman Rao <rao@fareastone.att.com.tw>" + + [ast-users]="AST users mailgroup <ast-users@research.att.com>" + [ast-developers]="AST developers mailgroup <ast-developers@research.att.com>" +) + +license+=( + organization="Information and Software Systems Research" + domain=research.att.com + parent="AT&T" + corporation="Intellectual Property" + company="Research" + location="Florham Park NJ" + + package=ast + since=1986 + author=gsf+dgk+kpv +) diff --git a/lib/package/ast.lic b/lib/package/ast.lic new file mode 100644 index 0000000..225faa6 --- /dev/null +++ b/lib/package/ast.lic @@ -0,0 +1,5 @@ +. ast.def +. epl.def +license+=( + start=2011 +) diff --git a/lib/package/epl.def b/lib/package/epl.def new file mode 100644 index 0000000..60eea6b --- /dev/null +++ b/lib/package/epl.def @@ -0,0 +1,8 @@ +license+=( + type=epl + id=eclipse + name="Eclipse Public License" + version=1.0 + url=http://www.eclipse.org/org/documents/${license.type}-v${license.version//./}.html + urlmd5=b35adb5213ca9657e911e9befb180842 +) diff --git a/lib/package/ksh.pkg b/lib/package/ksh.pkg new file mode 100644 index 0000000..4783527 --- /dev/null +++ b/lib/package/ksh.pkg @@ -0,0 +1,14 @@ +ksh :PACKAGE: + +:LICENSE: *.open + +:CATEGORY: shells + +:INDEX: standalone AT&T ksh executable + +:DESCRIPTION: + The AT&T Software Technology ksh package from AT&T Research + contains the AT&T ksh executable implemented by David Korn. + The download file is a gzipped ksh executable. If you want + to build ksh from the source then download one of the ast-ksh, + ast-base or ast-open packages. diff --git a/lib/package/ksh.req b/lib/package/ksh.req new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/package/ksh.req diff --git a/lib/package/ksh.ver b/lib/package/ksh.ver new file mode 100644 index 0000000..5efe0a9 --- /dev/null +++ b/lib/package/ksh.ver @@ -0,0 +1 @@ +ksh 2012-02-29 2012-02-29 1 diff --git a/lib/package/package.mk b/lib/package/package.mk new file mode 100644 index 0000000..921fa2d --- /dev/null +++ b/lib/package/package.mk @@ -0,0 +1,1537 @@ +/* + * source and binary package support + * + * @(#)package.mk (AT&T Research) 2012-02-14 + * + * usage: + * + * cd $INSTALLROOT/lib/package + * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type + * + * where: + * + * name package description file or component + * + * type source build source archive, generates + * $(PACKAGEDIR)/name.version.release.suffix + * binary build binary archive, generates + * $(PACKAGEDIR)/name.version.hosttype.release.suffix + * runtime build binary archive, generates + * $(PACKAGEDIR)/name-run.version.hosttype.release.suffix + * + * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views + * + * generated archive member files are $(PACKAGEROOT) relative + * + * main assertions: + * + * NAME [ name=value ] :PACKAGE: component ... + * :OMIT: component ... + * :LICENSE: license-class-pattern + * :CATEGORY: category-id ... + * :COVERS: package ... + * :REQURES: package ... + * :INDEX: index description line + * :DESCRIPTION: + * [ verbose description ] + * :DETAILS: style + * :README: + * readme lines + * :EXPORT: + * name=value + * target :INSTALL: [ source ] + * + * option variables, shown with default values + * + * format=tgz + * archive format + * + * version=YYYY-MM-DD + * package base version (overrides current date) + * + * release=YYYY-MM-DD + * package delta release (overrides current date) + * + * license=type.class + * :LICENSE: type.class pattern override + * + * notice=1 + * include the conspicuous empty notice file + * + * copyright=0 + * do not prepend source file copyright notice + * + * strip=0 + * don't strip non-lcl binary package members + * + * variants=pattern + * include variants matching pattern in binary packages + * + * incremental=[source:1 binary:0] + * if a base archive is generated then also generate an + * incremental delta archive from the previous base + * + * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when + * a target is specified + */ + +/* these are ast centric -- we'll parameterize another day */ + +org = ast +url = http://www.research.att.com/sw/download + +/* generic defaults */ + +base = +category = utils +checksum = md5 +closure = +copyright = 1 +delta = +format = tgz +incremental = +index = +init = INIT +license = +licenses = $(org) +mamfile = 1 +opt = +name = +notice = +release = +strip = 0 +style = tgz +suffix = tgz +type = +variants = !(cc-g) +vendor = +version = $("":T=R%Y-%m-%d) + +SUM = sum + +package.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------ + +package.readme = $(@.package.readme.) + +.package.readme. : + This is a package root directory $PACKAGEROOT. Source and binary + packages in this directory tree are controlled by the command + $() + bin/package + $() + Binary files may be in this directory or in the install root directory + $() + INSTALLROOT=$PACKAGEROOT/arch/`bin/package` + $() + For more information run + $() + bin/package help + $() + Many of the packaged commands self-document via the --man and --html + options; those that do have no separate man page. + $() + Each package is covered by one of the license files + $() + $(PACKAGELIB)/LICENSES/<license> + $() + where <license> is the license type for the package. At the top + of each license file is a URL; the license covers all software that + refers to this URL. For details run + $() + bin/package license [<package>] + $() + Any archives, distributions or packages made from source or + binaries covered by license(s) must contain the corresponding + license file(s)$(notice:?, this README file, and the empty file$$("\n")$$(package.notice)?.?) + +.package.licenses. : .FUNCTION + local I F L R T all save text + L := $(%) + while L == "--*" + I := $(L:O=1) + if I == "--all" + all = 1 + elif I == "--save" + save = 1 + elif I == "--text" + text = 1 + end + L := $(L:O>1) + end + if "$(L)" == "*-*" + L += $(L:/[^-]*-//) $(L:/-.*//) + end + L += $(licenses) + for I $(L:U) + if I == "gpl" + I = gnu + all = + end + if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)" + R += $(F) + if save || text + T := $(.FIND. lib/package .lic $(F):P=W,query=type) + R += $(T:D=$(PACKAGESRC)/LICENSES:B) + end + if save + R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F) + elif ! all + break + end + end + end + return $(R) + +/* + * glob(3) doesn't handle / in alternation -- should it? + */ + +.package.glob. : .FUNCTION + local A D I P S + for I $(%) + if I == "*/*" + D := $(I:C,/.*,,) + if ! "$(A:N=$(D))" + local S.$(D) + A += $(D) + end + S.$(D) += $(I:C,[^/]*/,,) + else + P := $(P)$(S)$(I) + end + S = | + end + if P == "*\|*" + P := ($(P)) + end + for I $(A) + P += $(I)/$(.package.glob. $(S.$(I))) + end + return $(P) + + +.MAKEINIT : .package.init + +.package.init : .MAKE .VIRTUAL .FORCE + local V + V := $(VROOT:T=F:P=L*) + if ! PACKAGEROOT + PACKAGEROOT := $(V:N!=*/arch/+([!/]):O=1) + end + if V == "$(PACKAGEROOT)" + V := + end + V += $(INSTALLROOT) $(PACKAGEROOT) + PACKAGEVIEW := $(V:H=RU) + INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%) + if license + license := $(license)|none.none + end + +PACKAGELIB = lib/package +PACKAGESRC = $(PACKAGEROOT)/$(PACKAGELIB) +PACKAGEBIN = $(INSTALLROOT)/$(PACKAGELIB) +PACKAGEDIR = $(PACKAGESRC)/$(style) +INSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%) + +package.omit = -|*/$(init) +package.glob.all = $(INSTALLROOT)/src/*/*/($(MAKEFILES:/:/|/G)) +package.all = $(package.glob.all:P=G:W=O=$(?$(name):A=.VIRTUAL):N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) +package.glob.pkg = $(.package.glob. $(~$(name):P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%) $(~$(name):P=U:N=$(name):?$$(INSTALLROOT)/src/$$(name)/($$(MAKEFILES:/:/|/G))??) +package.pkg = $(package.glob.pkg:P=G:D:N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) +package.closure = $(closure:?$$(package.all)?$$(package.pkg)?) + +package.init = $(.package.glob. $("$(init)$(name)":P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%:P=G:T=F:D::B) +package.ini = ignore mamprobe manmake package silent +package.src.pat = $(PACKAGESRC)/($(name).(ini|pkg)) +package.src = $(package.src.pat:P=G) $(.package.licenses. --save $(name)) +package.bin = $(PACKAGEBIN)/$(name).ini + +package.mam = --never --force --mam=static --corrupt=accept --clobber --compare --link='lib*.a*' CC=$(CC.DIALECT:N=C++:?CC?cc?) package.license.class=$(license:Q) $(=) 'dontcare test' install test + +op = current +stamp = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] +source = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(suffix) +binary = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) +runtime = $(PACKAGEDIR)/$(name)-run.$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) +old.new.source = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(suffix) +old.new.binary = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) +old.new.runtime = $(PACKAGEDIR)/$(name)-run.$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) + +source.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(suffix)":P=G:H=R) +binary.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H=R) +runtime.list = $("$(PACKAGEDIR)/$(name)-run.*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H>) + +source.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F) +binary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F) + +$(init) : .VIRTUAL $(init) + +package.requires = 0 + +":package:" : .MAKE .OPERATOR + local P I R V + P := $(<:O=1) + $(P) : $(>:V) + if ! package.requires + if ! name + name := $(P) + .PACKAGE. := $(P) + if name == "$(init)" + package.omit = - + package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk + else + $(P) : $(package.init) + end + for I $(<:O>1) + if I == "*=*" + eval + $(I) + end + else + version := $(I) + end + end + LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G) + export LICENSEFILEDEFAULT + end + if "$(>)" + for I $(>:V) + $(I) : .VIRTUAL + if I == "/*" + package.dir += $(I:V) + end + end + end + if "$(@)" + $(P).README := $(@) + else + $(P).README := This is the $(P) package. + end + end + +":AUXILIARY:" : .MAKE .OPERATOR + package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F) + +":CATEGORY:" : .MAKE .OPERATOR + if ! package.requires + category := $(>) + end + +.covers. : .FUNCTION + local I C D F K=0 L + for I $(%) + if ! "$(~covers:N=$(I:B))" + if F = "$(I:D:B:S=.pkg:T=F)" + if D = "$(F:T=I)" + covers : $(I:B) + for L $(D) + if L == ":COVERS:" + K = 1 + elif L == ":*:" + if K + break + end + elif K + : $(.covers. $(L)) + end + end + end + else + error $(--exec:?3?1?) $(I): unknown package $(I) + end + end + end + +":COVERS:" : .MAKE .OPERATOR + if ! package.requires + : $(.covers. $(>)) + end + +":DESCRIPTION:" : .MAKE .OPERATOR + if ! package.requires + $(name).README := $(@:V) + end + +":DETAILS:" : .MAKE .OPERATOR + if ! package.requires + details.$(>:O=1) := $(@:V) + end + +":EXPORT:" : .MAKE .OPERATOR + if ! package.requires + export.$(style) := $(@:/$$("\n")/ /G) + end + +":INDEX:" : .MAKE .OPERATOR + if ! package.requires + index := $(>) + end + +":INSTALL:" : .MAKE .OPERATOR + if ! package.requires + local T S F X + S := $(>) + T := $(<) + if "$(exe.$(style))" && "$(T)" == "bin/*([!./])" + T := $(T).exe + end + if ! "$(S)" + S := $(T) + elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])" + S := $(S).exe + end + install.$(style) := $(install.$(style):V)$("\n")install : $$(ROOT)/$(T)$("\n")$$(ROOT)/$(T) : $$(ARCH)/$(S)$("\n\t")cp $< $@ + if strip && "$(T:N=*.exe)" + install.$(style) := $(install.$(style):V)$("\n\t")strip $@ 2>/dev/null + end + X := $(PACKAGEROOT)/arch/$(CC.HOSTTYPE)/$(S) + if strip && "$(X:T=Y)" == "*/?(x-)(dll|exe)" + F := filter $(STRIP) $(STRIPFLAGS) $(X) + end + if "$(filter.$(style):V)" + filter.$(style) := $(filter.$(style):V)$$("\n") + end + filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T) + end + +":LICENSE:" : .MAKE .OPERATOR + if ! package.requires && ! license + license := $(>) + end + +":OMIT:" : .MAKE .OPERATOR + if ! package.requires + package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G) + end + +":POSTINSTALL:" : .MAKE .OPERATOR + if ! package.requires + postinstall.$(style) := $(@:V) + end + +":README:" : .MAKE .OPERATOR + if ! package.requires + readme.$(style) := $(@:V) + end + +.requires. : .FUNCTION + local I C D F K=0 L V T M=0 + for I $(%) + if ! "$(~requires:N=$(I:B))" + if F = "$(I:D:B:S=.pkg:T=F)" + if I == "$(init)" + package.omit = - + else + requires : $(I:B) + end + if V = "$(I:D:B=gen/$(I:B):S=.ver:T=F)" + req : $(I:B) + else + error 1 $(I): package should be written before $(P) + end + let package.requires = package.requires + 1 + include "$(F)" + let package.requires = package.requires - 1 + else + error 1 $(I): package not found + end + end + end + +":REQUIRES:" : .MAKE .OPERATOR + : $(.requires. $(>)) + +":TEST:" : .MAKE .OPERATOR + if ! package.requires + local T + T := $(>) + if "$(T)" == "bin/*([!./])" + if "$(exe.$(style))" + T := $(T).exe + end + T := $$(PWD)/$$(ARCH)/$(T) + end + test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@) + end + +base delta : .MAKE .VIRTUAL .FORCE + op := $(<) + +closure : .MAKE .VIRTUAL .FORCE + $(<) := 1 + +cyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE + style := $(<) + +source : .source.init .source.gen .source.$$(style) + +.source.init : .MAKE + local A B D P V I + type := source + if ! "$(incremental)" + incremental = 1 + end + if "$(source.$(name))" + suffix = c + end + : $(.init.$(style)) + : $(details.$(style):V:R) : + A := $(source.list) + B := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) + P := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) + D := $(A:N=*.$(stamp).$(stamp).$(suffix):O=1:T=F) + if op == "delta" + if ! B + error 3 delta requires a base archive + end + base := -z $(B) + deltaversion := $(B:B:/$(name).//) + let deltasince = $(deltaversion:/.*-//) + 1 + deltasince := $(deltaversion:/[^-]*$/$(deltasince:F=%02d)/) + if "$(release)" != "$(stamp)" + release := $("":T=R%Y-%m-%d) + end + source := $(B:D:B:S=.$(release).$(suffix)) + version := $(source:B:B:/$(name).//) + elif B || op == "base" + if op == "base" + for I $(B) $(P) + V := $(I:B:/$(name)\.\([^.]*\).*/\1/) + if V == "$(stamp)" && V != "$(version)" + old.version := $(V) + old.source := $(I) + if "$(old.version)" >= "$(version)" + error 3 $(name): previous base $(old.version) is newer than $(version) + end + break + end + end + else + source := $(B) + end + if B == "$(source)" + if "$(B:D:B:B)" == "$(D:D:B:B)" && "$(B:B::S)" != "$(D:B::S)" + error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) + end + error 1 $(B:B:S): replacing current base + end + version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/) + end + PACKAGEGEN := $(PACKAGESRC)/gen + +.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html + +BINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1) + +$$(PACKAGEDIR) $$(PACKAGEGEN) : .IGNORE + [[ -d $(<) ]] || mkdir $(<) + +$$(PACKAGEGEN)/SOURCE.html : $(BINPACKAGE) + $(*) html source > $(<) + +$$(PACKAGEGEN)/BINARY.html : $(BINPACKAGE) + $(*) html binary > $(<) + +$$(PACKAGEGEN)/DETAILS.html : $(BINPACKAGE) + $(*) html intro > $(<) + +.source.exp .source.pkg .source.rpm : .MAKE + error 3 $(style): source package style not supported yet + +exe.cyg = .exe +vendor.cyg = gnu + +.name.cyg : .FUNCTION + local N + N := $(%) + if N == "*-*" + vendor := $(N:/-.*//) + if vendor == "$(vendor.cyg)" + vendor := + N := $(N:/[^-]*-//) + end + N := $(N:/-//G) + end + return $(N) + +.init.cyg : .FUNCTION + local N O + closure = 1 + init = . + strip = 1 + suffix = tar.bz2 + format = tbz + vendor := $(licenses:N!=$(vendor.cyg):O=1) + package.ini := $(package.ini) + package.src.pat := $(package.src.pat) + package.src := $(package.src) + package.bin := $(package.bin) + .source.gen : .CLEAR $(*.source.gen:V:N!=*.html) + name.original := $(name) + name := $(.name.cyg $(name)) + if name != "$(name.original)" + $(name) : $(~$(name.original)) + O := $(~covers) + covers : .CLEAR + for N $(O) + covers : $(.name.cyg $(N)) + end + end + stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9] + version.original := $(version) + version := $(version:/-//G)-1 + if opt + opt := $(opt)/$(vendor)/ + else + opt := $(name)-$(version)/ + end + if type == "source" + version := $(version)-src + source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) + else + binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) + end + +.source.cyg : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + integer m=0 o + cat > $tmp/configure <<'!' + echo "you didn't have to do that" + ! + chmod +x $tmp/configure + echo ";;;$tmp/configure;configure" + cat > $tmp/Makefile0 <<'!' + HOSTTYPE := $$(shell bin/package) + ROOT = ../.. + ARCH = arch/$$(HOSTTYPE) + all : + PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style)) + install : all + $(install.$(style):V) + $(test.$(style):V) + ! + echo ";;;$tmp/Makefile0;Makefile" + cat > $tmp/CYGWIN-README <<'!' + $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run: + $() + make + $() + $(test.$(style):@?To test the binaries after building/installing run:$$("\n\n\t")make test$$("\n\n")??)To build and/or install the binaries run: + $() + make install + $() + The bin/package command provides a command line interface for all package + operations. The $(opt:/.$//) source and binary packages were generated by: + $() + package write cyg base source version=$(version.original) $(name.original) + package write cyg base binary version=$(version.original) $(name.original) + $() + using the $(org)-base package. To download and install the latest + $(org)-base source package in /opt/$(org) run: + $() + PATH=/opt/$(org)/bin:$PATH + cd /opt/$(org) + package authorize "NAME" password "PASSWORD" setup flat source $("\\") + $(url) $("\\") + $(org)-base + package make + $() + and export /opt/$(org)/bin in PATH to use. The NAME and PASSWORD signify your + agreement to the software license(s). All users get the same NAME and PASSWORD. + See $(url) for details. If multiple architectures may be built under + /opt/$(org) then drop "flat" and export /opt/$(org)/arch/`package`/bin in PATH + to use. To update previously downloaded packages from the same url simply run: + $() + cd /opt/$(org) + package setup + package make + $() + To download and install the latest $(org)-base binary package in + /opt/$(org) change "source" to "binary" and omit "package make". + ! + echo ";;;$tmp/CYGWIN-README;CYGWIN-PATCHES/README" + cat > $(source:/-src.$(suffix)//).setup.hint <<'!' + category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) + requires: cygwin + sdesc: "$(index)" + ldesc: "$($(name.original).README)" + ! + echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint" + echo ";;;$(BINPACKAGE);bin/package" + cat > $tmp/Makefile <<'!' + :MAKE: + ! + echo ";;;$tmp/Makefile;src/Makefile" + echo ";;;$tmp/Makefile;src/cmd/Makefile" + echo ";;;$tmp/Makefile;src/lib/Makefile" + if [[ '$(mamfile)' == 1 ]] + then cat > $tmp/Mamfile1 <<'!' + info mam static + note source level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + echo ";;;$tmp/Mamfile1;src/Mamfile" + cat > $tmp/Mamfile2 <<'!' + info mam static + note component level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" + echo ";;;$tmp/Mamfile2;src/lib/Mamfile" + fi + $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) + echo ";;;$(PACKAGEGEN)/$(name.original).req" + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . + then if [[ '$(mamfile)' == 1 ]] + then (( o=m )) + s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) + if [[ $s ]] + then for j in $s + do if [[ -d $j ]] + then cd $j + if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . + then (( m++ )) + $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam + echo ";;;$tmp/$m.mam;$i/$j/Mamfile" + fi + cd $(INSTALLROOT)/$i + fi + done + if (( o != m )) + then (( m++ )) + cat > $tmp/$m.mam <<'!' + info mam static + note subcomponent level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + echo ";;;$tmp/$m.mam;$i/Mamfile" + fi + else (( m++ )) + $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam + echo ";;;$tmp/$m.mam;$i/Mamfile" + fi + fi + $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) + fi + done + set -- $(package.dir:P=G) + for i + do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" + done + } | + { + : > $tmp/HEAD + cat > $tmp/README <<'!' + $(package.readme) + ! + echo ";;;$tmp/README;README" + sort -t';' -k5,5 -u + : > $tmp/TAIL + [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" + } | + $(PAX) --filter=- \ + --to=ascii \ + --format=$(format) \ + --local \ + -wvf $(source) $(base) \ + $(PACKAGEVIEW:C%.*%-s",^&/,,"%) \ + $(vendor:?-s",^[^/],$(opt)&,"??) + $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) + rm -rf $tmp + fi + +.source.lcl : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + integer m=0 o + $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + $(MAKE) --noexec $(-) $(=) .FILES.+=Mamfile recurse list.package.local + done + set -- $(package.dir:P=G) + for i + do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" + done + } | + sort -t';' -k5,5 -u | + $(PAX) --filter=- \ + --to=ascii \ + $(op:N=delta:??--format=$(format)?) \ + --local \ + -wvf $(source) $(base) \ + $(op:N=delta:?--format=gzip??) \ + $(PACKAGEVIEW:C%.*%-s",^&/,,"%) + rm -rf $tmp + fi + +.source.tgz : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + integer m=0 o + if [[ '$(init)' == '$(name)' ]] + then cat > $tmp/Makefile <<'!' + :MAKE: + ! + $(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile + echo ";;;$tmp/Makefile;src/Makefile" + cp $tmp/Makefile $tmp/Makefile1 + $(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1 + echo ";;;$tmp/Makefile1;src/cmd/Makefile" + cp $tmp/Makefile $tmp/Makefile2 + $(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2 + echo ";;;$tmp/Makefile2;src/lib/Makefile" + if [[ '$(mamfile)' == 1 ]] + then cat > $tmp/Mamfile1 <<'!' + info mam static + note source level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + $(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1 + echo ";;;$tmp/Mamfile1;src/Mamfile" + cat > $tmp/Mamfile2 <<'!' + info mam static + note component level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + $(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2 + echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" + cp $tmp/Mamfile2 $tmp/Mamfile3 + $(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3 + echo ";;;$tmp/Mamfile3;src/lib/Mamfile" + fi + fi + $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) + if [[ '$(~covers)' ]] + then for i in $(~covers) + do for j in lib pkg + do if [[ -f $(PACKAGESRC)/$i.$j ]] + then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + for j in ver req + do if [[ -f $(PACKAGEGEN)/$i.$j ]] + then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + done + for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) + do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" + done + fi + if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] + then echo $(name) $(version) $(release|version) 1 > $tmp/t + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).ver || cp $tmp/t $(PACKAGEGEN)/$(name).ver + echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" + sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $tmp/t + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).req || cp $tmp/t $(PACKAGEGEN)/$(name).req + echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" + { + echo "name='$(name)'" + echo "index='$(index)'" + echo "covers='$(~covers)'" + echo "requires='$(~req)'" + } > $tmp/t + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).inx || cp $tmp/t $(PACKAGEGEN)/$(name).inx + { + { + echo '$($(name).README)' + if [[ '$(~covers)' ]] + then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." + fi + if [[ '$(~requires)' ]] + then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' + fi + } | fmt + package help source + package release $(name) + } > $tmp/t + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).README || cp $tmp/t $(PACKAGEGEN)/$(name).README + echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" + { + echo '.xx title="$(name) package"' + echo '.xx meta.description="$(name) package"' + echo '.xx meta.keywords="software, package"' + echo '.MT 4' + echo '.TL' + echo '$(name) package' + echo '.H 1 "$(name) package"' + echo '$($(name).README)' + set -- $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F:D::B) + hot= + for i + do hot="$hot -e s/\\(\\<$i\\>\\)/\\\\h'0*1'\\1\\\\h'0'/" + done + set -- $(package.closure:B) + if (( $# )) + then echo 'Components in this package:' + echo '.P' + echo '.TS' + echo 'center expand;' + echo 'l l l l l l.' + if [[ $hot ]] + then hot="sed $hot" + else hot=cat + fi + for i + do echo $i + done | + pr -6 -t -s' ' | + $hot + echo '.TE' + fi + echo '.P' + if [[ '$(~covers)' ]] + then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." + fi + if [[ '$(~requires)' ]] + then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' + fi + set -- $(.package.licenses. --all $(name)) + case $# in + 0) ;; + *) case $# in + 1) echo 'The software is covered by this license:' ;; + *) echo 'The software is covered by these licenses:' ;; + esac + echo .BL + for j + do i=$( $(PROTO) -l $j -p -h -o type=usage /dev/null | sed -e 's,.*\[-license?\([^]]*\).*,\1,' ) + echo .LI + echo ".xx link=\"$i\"" + done + echo .LE + echo 'Individual components may be covered by separate licenses;' + echo 'refer to the component source and/or binaries for more information.' + echo .P + ;; + esac + echo 'A recent' + echo '.xx link="release change log"' + echo 'is also included.' + cat $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F) < /dev/null + echo '.H 1 "release change log"' + echo '.xx index' + echo '.nf' + package release $(name) | + sed -e 's/:::::::: \(.*\) ::::::::/.fi\$("\n").H 1 "\1 changes"\$("\n").nf/' + echo '.fi' + } | + $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t + $(STDED) $(STDEDFLAGS) $tmp/t <<'!' + /^<!--LABELS-->$/,/^<!--\/LABELS-->$/s/ changes</</ + /^<!--LABELS-->$/,/^<!--\/LABELS-->$/m/<A name="release change log">/ + w + q + ! + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).html || cp $tmp/t $(PACKAGEGEN)/$(name).html + echo ";;;$(PACKAGEGEN)/$(name).html;$(PACKAGELIB)/$(name).html" + if [[ '$(deltasince)' ]] + then { + echo '.xx title="$(name) package"' + echo '.xx meta.description="$(name) package $(version) delta $(release)"' + echo '.xx meta.keywords="software, package, delta"' + echo '.MT 4' + echo '.TL' + echo '$(name) package $(deltaversion) delta $(release)' + echo '.H 1 "$(name) package $(deltaversion) delta $(release) changes"' + echo '.nf' + package release $(deltasince) $(name) | + sed -e 's/:::::::: \(.*\) ::::::::/.H 2 \1/' + echo '.fi' + } | + $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t + $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html + echo ";;;$(PACKAGEGEN)/$(name).$(release).html;$(PACKAGELIB)/$(name).$(release).html" + fi + fi + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . + then if [[ '$(mamfile)' == 1 ]] + then (( o=m )) + s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) + if [[ $s ]] + then for j in $s + do if [[ -d $j ]] + then cd $j + if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . + then (( m++ )) + $(MAKE) $(package.mam) > $tmp/$m.mam + $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam + echo ";;;$tmp/$m.mam;$i/$j/Mamfile" + fi + cd $(INSTALLROOT)/$i + fi + done + if (( o != m )) + then (( m++ )) + cat > $tmp/$m.mam <<'!' + info mam static + note subcomponent level :MAKE: equivalent + make install + make all + exec - ${MAMAKE} -r '*' ${MAMAKEARGS} + done all virtual + done install virtual + ! + $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam + echo ";;;$tmp/$m.mam;$i/Mamfile" + fi + else (( m++ )) + $(MAKE) $(package.mam) > $tmp/$m.mam + $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam + echo ";;;$tmp/$m.mam;$i/Mamfile" + fi + fi + $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?) + fi + done + set -- $(package.dir:P=G) + for i + do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" + done + } | + { + : > $tmp/HEAD + [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" + cat > $tmp/README <<'!' + $(package.readme) + ! + echo ";;;$tmp/README;README" + $(CMP) $(CMPFLAGS) $tmp/README $(PACKAGEROOT)/README && touch -r $(PACKAGEROOT)/README $tmp/README + sort -t';' -k5,5 -u + : > $tmp/TAIL + [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" + } | + $(PAX) --filter=- \ + --to=ascii \ + $(op:N=delta:??--format=$(format)?) \ + --local \ + -wvf $(source) $(base) \ + $(op:N=delta:?--format=gzip??) \ + $(PACKAGEVIEW:C%.*%-s",^&/,,"%) + $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) + echo local > $(source:D:B=$(name):S=.tim) + if [[ '$(incremental)' == 1 && '$(old.source)' ]] + then $(PAX) -rf $(source) -wvf $(old.new.source) -z $(old.source) + $(SUM) -x $(checksum) < $(old.new.source) > $(old.new.source:D:B:S=.$(checksum)) + fi + rm -rf $tmp + else if [[ '$(old.source)' ]] && $(CMP) $(CMPFLAGS) $(source.$(name)) $(source) + then : $(name) is up to date + else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver + : > $(PACKAGEGEN)/$(name).req + { + echo "name='$(name)'" + echo "index='$(index)'" + echo "covers='$(~covers)'" + echo "requires='$(~req)'" + } > $(PACKAGEGEN)/$(name).inx + { + echo '.xx title="$(name) package"' + echo '.xx meta.description="$(name) package"' + echo '.xx meta.keywords="software, package"' + echo '.MT 4' + echo '.TL' + echo '$(name) package' + echo '.H 1' + echo '$($(name).README)' + } | + $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $(PACKAGEGEN)/$(name).html + if [[ '$(source.$(name))' ]] + then { + echo '$($(name).README)' + package help source + } > $(PACKAGEGEN)/$(name).README + cp $(source.$(name)) $(source) + $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) + fi + echo local > $(source:D:B=$(name):S=.tim) + fi + fi + +binary : .binary.init .binary.gen .binary.$$(style) + +.binary.init : .MAKE + local A B D I P V + type := binary + if ! "$(incremental)" + incremental = 0 + end + if ! "$(~$(name))" + if name == "ratz" + suffix = exe + else + suffix = gz + end + end + : $(.init.$(style)) : + : $(details.$(style):V:R) : + A := $(binary.list) + B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) + P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) + D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) + if op == "delta" + if ! B + error 3 delta requires a base archive + end + base := -z $(B) + if "$(release)" != "$(stamp)" + release := $("":T=R%Y-%m-%d) + end + binary := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) + version := $(binary:B:B:/$(name).//) + elif B || op == "base" + if op == "base" + for I $(B) $(P) + V := $(I:B:/$(name)\.\([^.]*\).*/\1/) + if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" + old.version := $(V) + old.binary := $(I) + if "$(old.version)" >= "$(version)" + error 3 $(name): previous base $(old.version) is newer than $(version) + end + break + end + end + else + binary := $(B) + end + if B == "$(binary)" + if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" + error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) + end + error 1 $(B:B:S): replacing current base + end + version := $(binary:B:/$(name).//:/\..*//) + end + PACKAGEGEN := $(PACKAGEBIN)/gen + +.binary.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) + +.binary.exp .binary.pkg .binary.rpm : .MAKE + error 3 $(style): binary package style not supported yet + +.binary.cyg : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + integer m=0 o + { + echo '$($(name.original).README)' | fmt + cat <<'!' + $(readme.$(style):@?$$("\n")$$(readme.$$(style))??) + ! + } > $tmp/README1 + echo ";;;$tmp/README1;usr/share/doc/Cygwin/$(opt:/.$//).README" + { + echo '$($(name.original).README)' | fmt + cat <<'!' + $() + The remainder of this file is the README from the source package + that was used to generate this binary package. It describes + the source build hierarchy, not the current directory. + $() + $(package.readme) + ! + } > $tmp/README2 + echo ";;;$tmp/README2;usr/share/doc/$(opt)README" + package release $(name.original) > $tmp/RELEASE + echo ";;;$tmp/RELEASE;usr/share/doc/$(opt)RELEASE" + cat > $(binary:/.$(suffix)//).setup.hint <<'!' + category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) + requires: cygwin + sdesc: "$(index)" + ldesc: "$($(name.original).README)" + ! + set -- $(.package.licenses. --text $(name.original):N!=*.lic) + for i + do echo ";;;${i};usr/share/doc/$(opt)LICENSE-${i##*/}" + done + cat <<'!' + $(filter.$(style)) + ! + if [[ '$(postinstall.$(style):V:O=1:?1??)' ]] + then cat >$tmp/postinstall <<'!' + $("#")!/bin/sh + $(postinstall.$(style)) + ! + echo ";;;$tmp/postinstall;etc/postinstall/$(name).sh" + fi + } | + { + : > $tmp/HEAD + [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" + sort -t';' -k5,5 -u + : > $tmp/TAIL + [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" + } | + $(PAX) --filter=- \ + --to=ascii \ + --format=$(format) \ + --local \ + -wvf $(binary) + $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) + rm -rf $tmp + fi + +.binary.lcl : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) + $(package.bin:U:T=F:/.*/echo ";;;&"$("\n")/) + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc- + done + } | + $(PAX) --filter=- \ + --to=ascii \ + $(op:N=delta:??--format=$(format)?) \ + --local \ + --checksum=md5:$(PACKAGEGEN)/$(name).sum \ + --install=$(PACKAGEGEN)/$(name).ins \ + -wvf $(binary) $(base) \ + $(op:N=delta:?--format=gzip??) \ + -s",^$tmp/,$(INSTALLOFFSET)/," \ + $(PACKAGEROOT:C%.*%-s",^&/,,"%) + $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) + echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) + rm -rf $tmp + fi + +.binary.tgz : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + if [[ '$(init)' == '$(name)' ]] + then for i in lib32 lib64 + do if [[ -d $(INSTALLROOT)/$i ]] + then echo ";physical;;$(INSTALLROOT)/$i" + fi + done + fi + $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) + $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) + $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) + if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] + then echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver + echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" + if [[ '$(~covers)' ]] + then for i in $(~covers) + do for j in lic pkg + do if [[ -f $(PACKAGESRC)/$i.$j ]] + then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + for j in ver req + do if [[ -f $(PACKAGEGEN)/$i.$j ]] + then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + done + for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) + do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" + done + fi + sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req + echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" + { + echo "name='$(name)'" + echo "index='$(index)'" + echo "covers='$(~covers)'" + echo "requires='$(~req)'" + } > $(PACKAGEGEN)/$(name).inx + { + { + echo '$($(name).README)' + if [[ '$(~covers)' ]] + then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." + fi + if [[ '$(~requires)' ]] + then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' + fi + } | fmt + package help binary + package release $(name) + } > $(PACKAGEGEN)/$(name).README + echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" + fi + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- + done + } | + { + : > $tmp/HEAD + [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" + cat > $tmp/README <<'!' + $(package.readme) + ! + echo ";;;$tmp/README;README" + sort -t';' -k5,5 -u + : > $tmp/TAIL + [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" + } | + $(PAX) --filter=- \ + --to=ascii \ + $(op:N=delta:??--format=$(format)?) \ + --local \ + --checksum=md5:$(PACKAGEGEN)/$(name).sum \ + --install=$(PACKAGEGEN)/$(name).ins \ + -wvf $(binary) $(base) \ + $(op:N=delta:?--format=gzip??) \ + -s",^$tmp/,$(INSTALLOFFSET)/," \ + $(PACKAGEROOT:C%.*%-s",^&/,,"%) + echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) + echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) + if [[ '$(incremental)' == 1 && '$(old.binary)' ]] + then $(PAX) -rf $(binary) -wvf $(old.new.binary) -z $(old.binary) + echo $(old.new.binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + $(SUM) -x $(checksum) < $(old.new.binary) > $(old.new.binary:D:B:S=.$(checksum)) + echo $(old.new.binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + fi + rm -rf $tmp + else if [[ '$(binary.$(name))' ]] + then exe=$(binary.$(name)) + else exe=$(INSTALLROOT)/bin/$(name) + fi + if [[ '$(old.binary)' ]] && $(CMP) $(CMPFLAGS) $exe $(binary) + then : $(name) is up to date + else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver + : > $(PACKAGEGEN)/$(name).req + { + echo "name='$(name)'" + echo "index='$(index)'" + echo "covers='$(~covers)'" + echo "requires='$(~req)'" + } > $(PACKAGEGEN)/$(name).inx + { + echo '$($(name).README)' + package help binary + } > $(PACKAGEGEN)/$(name).README + case "$(binary)" in + *.gz) gzip < $exe > $(binary) ;; + *) cp $exe $(binary) ;; + esac + $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) + echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) + fi + echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + fi + +runtime : .runtime.init .runtime.gen .runtime.$$(style) + +.runtime.init : .MAKE + local A B D I P V + type := runtime + if ! "$(incremental)" + incremental = 0 + end + if ! "$(~$(name))" + if name == "ratz" + suffix = exe + else + suffix = gz + end + end + : $(.init.$(style)) : + : $(details.$(style):V:R) : + A := $(runtime.list) + B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) + P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) + D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) + if op == "delta" + if ! B + error 3 delta requires a base archive + end + base := -z $(B) + if "$(release)" != "$(stamp)" + release := $("":T=R%Y-%m-%d) + end + runtime := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) + version := $(runtime:B:B:/$(name).//) + elif B || op == "base" + if op == "base" + for I $(B) $(P) + V := $(I:B:/$(name)-run\.\([^.]*\).*/\1/) + if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" + old.version := $(V) + old.runtime := $(I) + if "$(old.version)" >= "$(version)" + error 3 $(name): previous base $(old.version) is newer than $(version) + end + break + end + end + else + runtime := $(B) + end + if B == "$(runtime)" + if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" + error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) + end + error 1 $(B:B:S): replacing current base + end + version := $(runtime:B:/$(name)-run.//:/\..*//) + end + PACKAGEGEN := $(PACKAGESRC)/gen + +.runtime.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) + +.runtime.cyg .runtime.exp .runtime.lcl .runtime.pkg .runtime.rpm : .MAKE + error 3 $(style): runtime package style not supported yet + +.runtime.tgz : + if [[ '$(~$(name))' ]] + then tmp=/tmp/pkg$(tmp) + mkdir $tmp + { + if [[ '$(init)' == '$(name)' ]] + then for i in lib32 lib64 + do if [[ -d $(INSTALLROOT)/$i ]] + then echo ";physical;;$(INSTALLROOT)/$i" + fi + done + fi + $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) + $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) + $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) + echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver + echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" + if [[ '$(~covers)' ]] + then for i in $(~covers) + do for j in lic pkg + do if [[ -f $(PACKAGESRC)/$i.$j ]] + then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + for j in ver req + do if [[ -f $(PACKAGEGEN)/$i.$j ]] + then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" + fi + done + done + for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) + do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" + done + fi + sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req + echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" + { + echo "name='$(name)'" + echo "index='$(index)'" + echo "covers='$(~covers)'" + echo "requires='$(~req)'" + } > $(PACKAGEGEN)/$(name).inx + { + { + echo '$($(name).README)' + if [[ '$(~covers)' ]] + then echo + echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." + fi + if [[ '$(~requires)' ]] + then echo + echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' + fi + echo + echo "To install this $(type) package read the tarball into a directory" + echo "suitable for containing bin and lib subdirectories, and run the" + echo "$(PACKAGELIB)/gen/$(name)-run.ins script to fix up permissions." + echo + echo "To use the package export the bin directory in PATH. The commands and" + echo "libraries use \$PATH to locate dynamic libraries and related data files." + echo + } | fmt + } > $(PACKAGEGEN)/$(name)-run.README + echo ";;;$(PACKAGEGEN)/$(name)-run.README;$(PACKAGELIB)/$(name)-run.README" + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- + done + } | + { + : > $tmp/HEAD + [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" + cat > $tmp/README <<'!' + $(package.readme) + ! + echo ";;;$tmp/README;README" + sort -t';' -k5,5 -u + : > $tmp/TAIL + [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" + } | + $(PAX) --filter=- \ + --to=ascii \ + $(op:N=delta:??--format=$(format)?) \ + --local \ + --checksum=md5:$(PACKAGEGEN)/$(name)-run.sum \ + --install=$(PACKAGEGEN)/$(name)-run.ins \ + -wvf $(runtime) $(base) \ + $(op:N=delta:?--format=gzip??) \ + -s",^$tmp/,$(INSTALLOFFSET)/," \ + $(PACKAGEROOT:C%.*%-s",^&/,,"%) + echo $(runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + $(SUM) -x $(checksum) < $(runtime) > $(runtime:D:B:S=.$(checksum)) + echo $(runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + echo local > $(runtime:D:B=$(name)-run:S=.$(CC.HOSTTYPE).tim) + if [[ '$(incremental)' == 1 && '$(old.runtime)' ]] + then $(PAX) -rf $(runtime) -wvf $(old.new.runtime) -z $(old.runtime) + echo $(old.new.runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + $(SUM) -x $(checksum) < $(old.new.runtime) > $(old.new.runtime:D:B:S=.$(checksum)) + echo $(old.new.runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) + fi + rm -rf $tmp + fi + +list.installed list.manifest : + set -- $(package.closure) + for i + do cd $(INSTALLROOT)/$i + ignore $(MAKE) --noexec $(-) $(=) $(<) + done |