1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Fix a large number of typos and other problems (#110)

Most of these fixes are for typos and extra whitespace at the
end of lines. These are the notable changes:
- Fixed a compatibility issue with how asterisks are displayed
  using certain fonts. Bug report: https://github.com/att/ast/issues/764
- Fixed a bug in the man page that caused searches for the '|'
  character to fail. Bug report: https://github.com/att/ast/issues/871
- Removed a duplicate description of 'set -B' from the man
  page. Bug report: https://github.com/att/ast/issues/789
- Added documentation for options missing from the ksh man
  page (applies to 'hist -N', 'sleep -s', 'whence -q' and
  many of ulimit's options). Bug reports:
  https://github.com/att/ast/issues/948
  https://github.com/att/ast/issues/503#issuecomment-386649715
  https://github.com/att/ast/issues/507#issuecomment-507924608
- Applied the following ksh2020 documentation fixes:
  https://github.com/att/ast/pull/351
  https://github.com/att/ast/pull/352
- Fixed a minor GCC -Wformat warning in procopen.c by changing
  a sentinel to NULL.
This commit is contained in:
Johnothan King 2020-08-06 16:50:11 -07:00 committed by GitHub
parent 338586896d
commit f9fdbfc9e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 487 additions and 432 deletions

4
NEWS
View file

@ -74,9 +74,9 @@ Any uppercase BUG_* names are modernish shell bug IDs.
2020-07-19: 2020-07-19:
- Fixed a crash that occured in the '.' command when using kshdb. - Fixed a crash that occurred in the '.' command when using kshdb.
- Fixed a crash that occured when attempting to use redirection with an - Fixed a crash that occurred when attempting to use redirection with an
invalid file descriptor. invalid file descriptor.
2020-07-16: 2020-07-16:

View file

@ -472,7 +472,7 @@ be freed before returning from you built-in, because by default,
<TT>ksh</TT> will terminate you built-in in the event of an <TT>ksh</TT> will terminate you built-in in the event of an
interrupt and the memory will not be freed. interrupt and the memory will not be freed.
<P> <P>
The best way to to allocate variable sized storage is The best way to allocate variable sized storage is
through calls to the <STRONG>stak</STRONG> library through calls to the <STRONG>stak</STRONG> library
which is included in <STRONG>libast</STRONG> which is included in <STRONG>libast</STRONG>
and which is used extensively by <TT>ksh</TT> itself. and which is used extensively by <TT>ksh</TT> itself.

View file

@ -424,7 +424,7 @@ All recorded changes follow.
package.mk: add the runtime package type (no *.[ah]) package.mk: add the runtime package type (no *.[ah])
iffe.sh: fix key test reports iffe.sh: fix key test reports
04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] } 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 04-08-11 package.mk: handle HOSTTYPE for solaris > 9
package.sh: add `checkaout proto' for { make view } package.sh: add `checkaout proto' for { make view }
package.sh: check for { md5sum md5 } package.sh: check for { md5sum md5 }
iffe.sh: add {if|elif|else|endif} test ... iffe.sh: add {if|elif|else|endif} test ...
@ -525,7 +525,7 @@ All recorded changes follow.
03-06-21 package.sh: fix INITROOT initialization bug 03-06-21 package.sh: fix INITROOT initialization bug
package.sh: make sure admin logs exists before tail'ing 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 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 cc.mvs.390: return code 4 yields exit code 3 but it's *really* ok
package.sh: fix onpath function global var conflict package.sh: fix onpath function global var conflict
make.probe: add CC.DIALECT { GNU -dD } make.probe: add CC.DIALECT { GNU -dD }
package.mk: add Mamfile to lcl manifest package.mk: add Mamfile to lcl manifest
@ -545,7 +545,7 @@ All recorded changes follow.
03-05-05 package.mk: fix cygwin tarball names 03-05-05 package.mk: fix cygwin tarball names
03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile 03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile
03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" => "" 03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" => ""
make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR) make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR)
make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD } make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD }
probe.win32: sync with latest CC.* probe.win32: sync with latest CC.*
03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh 03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh
@ -553,7 +553,7 @@ All recorded changes follow.
03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's 03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's
package.sh: fix admin write binary tarball snarf package.sh: fix admin write binary tarball snarf
03-04-21 package.mk: package covered *.@(pkg|lic) too 03-04-21 package.mk: package covered *.@(pkg|lic) too
03-04-15 package.mk: don't generate incremental archives for lcl 03-04-15 package.mk: don't generate incremental archives for lcl
package.mk: add incremental=[source:1 binary:0] archive control package.mk: add incremental=[source:1 binary:0] archive control
package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc
package.sh: admin must ditto lib/package/*.@(pkg|lic) too package.sh: admin must ditto lib/package/*.@(pkg|lic) too
@ -644,7 +644,7 @@ All recorded changes follow.
02-09-11 make.probe: move from nmake src to be part of mamprobe.sh 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 mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end
mamake.c: pass cc absolute path to mamprobe mamake.c: pass cc absolute path to mamprobe
package.sh: generate mamprobe -- yuk (at least its confined to INIT) package.sh: generate mamprobe -- yuk (at least it's confined to INIT)
iffe.sh: lcl,nxt: drop default sys/ check iffe.sh: lcl,nxt: drop default sys/ check
ditto.sh: tw --logical by default; add --physical ditto.sh: tw --logical by default; add --physical
02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey 02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey
@ -735,7 +735,7 @@ All recorded changes follow.
package.mk: tarball package.notice replaces `license accepted' prompt package.mk: tarball package.notice replaces `license accepted' prompt
package.sh: eliminate `license accepted' prompt package.sh: eliminate `license accepted' prompt
package.sh: add update to download latest from a url package.sh: add update to download latest from a url
package.sh: use builtin arithmetic when we know its ksh package.sh: use builtin arithmetic when we know it's ksh
iffe.sh: unkown -> unknown iffe.sh: unkown -> unknown
01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN 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 package.mk: convert to YYYY-MM-DD delta releases instead of NNNN
@ -758,7 +758,7 @@ All recorded changes follow.
01-08-11 package.mk: handle single gz executable packages (e.g., for ksh) 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 package.sh: fix package install to require nmake only if no *.sum
iffe.sh: drop ancient menu and prompt actions; check ./hdr.h clash 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-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-27 ratz: handle hard and soft links if possible
01-06-07 Makefile: fix :MAPLIB: for sco 01-06-07 Makefile: fix :MAPLIB: for sco
01-05-31 crossexec.sh: add 01-05-31 crossexec.sh: add
@ -789,7 +789,7 @@ All recorded changes follow.
01-02-26 iffe.sh: fix bug that omitted runtime #define for `mac' op 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-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 01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
C+probe: quote "$cc" when its an argument! C+probe: quote "$cc" when it's an argument!
mamake: execute actions with $SHELL, ignored signals back to default mamake: execute actions with $SHELL, ignored signals back to default
package.sh: nmake check error output to /dev/null package.sh: nmake check error output to /dev/null
package.sh: fix INIT a.out updates for knr cc package.sh: fix INIT a.out updates for knr cc
@ -810,7 +810,7 @@ All recorded changes follow.
package.sh: add $SECONDS to the DEBUG trace prompt package.sh: add $SECONDS to the DEBUG trace prompt
01-01-01 ratz.c: #ifdef for uwin ncc 01-01-01 ratz.c: #ifdef for uwin ncc
iffe.sh,package.sh: check PACKAGE_PATH for local installations iffe.sh,package.sh: check PACKAGE_PATH for local installations
package.sh: add psrinfo for osf.alpha host cpu package.sh: add psrinfo for osf.alpha host cpu
package.sh: change pax --meter probe; some hang on /dev/tty package.sh: change pax --meter probe; some hang on /dev/tty
package.sh: fix `install flat ARCH' package.sh: fix `install flat ARCH'
mamake: eliminate loops from scan order mamake: eliminate loops from scan order
@ -863,7 +863,7 @@ All recorded changes follow.
package: fix write delta source to use default pax format package: fix write delta source to use default pax format
package: add disambiguating bias for sgi.mips3 over sgi.mips4 package: add disambiguating bias for sgi.mips3 over sgi.mips4
package.mk: fix for directory content packages lib ast-locale package.mk: fix for directory content packages lib ast-locale
00-05-01 iffe: fix invalid _LIB_ macro identifier 00-05-01 iffe: fix invalid _LIB_ macro identifier
00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude 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-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
00-03-17 package: all archives are .tgz for binary download 00-03-17 package: all archives are .tgz for binary download
@ -944,7 +944,7 @@ All recorded changes follow.
98-11-11 regress: fix UNIT PATH lookup 98-11-11 regress: fix UNIT PATH lookup
98-11-01 regress: add PROG 98-11-01 regress: add PROG
98-10-01 hostinfo: add unixware.* 98-10-01 hostinfo: add unixware.*
use: export PACKAGE_* use: export PACKAGE_*
98-08-11 C.probe: add /usr/include check (for sco CC) 98-08-11 C.probe: add /usr/include check (for sco CC)
hostinfo: handle uwin uname update hostinfo: handle uwin uname update
98-05-01 regress: fix bug sometimes didn't list last test 98-05-01 regress: fix bug sometimes didn't list last test

View file

@ -386,7 +386,7 @@ All recorded changes follow.
package.mk: add the runtime package type (no *.&#0091;ah&#0093;) package.mk: add the runtime package type (no *.&#0091;ah&#0093;)
iffe.sh: fix key test reports iffe.sh: fix key test reports
04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp&#0091;l&#0093; ldexp&#0091;l&#0093; } 04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp&#0091;l&#0093; ldexp&#0091;l&#0093; }
04-08-11 package.mk: handle HOSTTYPE for solaris &gt; 9 04-08-11 package.mk: handle HOSTTYPE for solaris &gt; 9
package.sh: add `checkaout proto' for { make view } package.sh: add `checkaout proto' for { make view }
package.sh: check for { md5sum md5 } package.sh: check for { md5sum md5 }
iffe.sh: add {if|elif|else|endif} test ... iffe.sh: add {if|elif|else|endif} test ...
@ -487,7 +487,7 @@ All recorded changes follow.
03-06-21 package.sh: fix INITROOT initialization bug 03-06-21 package.sh: fix INITROOT initialization bug
package.sh: make sure admin logs exists before tail'ing 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 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 cc.mvs.390: return code 4 yields exit code 3 but it's *really* ok
package.sh: fix onpath function global var conflict package.sh: fix onpath function global var conflict
make.probe: add CC.DIALECT { GNU -dD } make.probe: add CC.DIALECT { GNU -dD }
package.mk: add Mamfile to lcl manifest package.mk: add Mamfile to lcl manifest
@ -507,7 +507,7 @@ All recorded changes follow.
03-05-05 package.mk: fix cygwin tarball names 03-05-05 package.mk: fix cygwin tarball names
03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile 03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile
03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" =&gt; "" 03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" =&gt; ""
make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR) make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR)
make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD } make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD }
probe.win32: sync with latest CC.* probe.win32: sync with latest CC.*
03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh 03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh
@ -515,7 +515,7 @@ All recorded changes follow.
03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's 03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's
package.sh: fix admin write binary tarball snarf package.sh: fix admin write binary tarball snarf
03-04-21 package.mk: package covered *.@(pkg|lic) too 03-04-21 package.mk: package covered *.@(pkg|lic) too
03-04-15 package.mk: don't generate incremental archives for lcl 03-04-15 package.mk: don't generate incremental archives for lcl
package.mk: add incremental=&#0091;source:1 binary:0&#0093; archive control package.mk: add incremental=&#0091;source:1 binary:0&#0093; archive control
package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc
package.sh: admin must ditto lib/package/*.@(pkg|lic) too package.sh: admin must ditto lib/package/*.@(pkg|lic) too
@ -606,7 +606,7 @@ All recorded changes follow.
02-09-11 make.probe: move from nmake src to be part of mamprobe.sh 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 mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end
mamake.c: pass cc absolute path to mamprobe mamake.c: pass cc absolute path to mamprobe
package.sh: generate mamprobe -- yuk (at least its confined to INIT) package.sh: generate mamprobe -- yuk (at least it's confined to INIT)
iffe.sh: lcl,nxt: drop default sys/ check iffe.sh: lcl,nxt: drop default sys/ check
ditto.sh: tw --logical by default; add --physical ditto.sh: tw --logical by default; add --physical
02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey 02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey
@ -629,7 +629,7 @@ All recorded changes follow.
02-06-14 package.sh: fix admin_action to not include qualifiers 02-06-14 package.sh: fix admin_action to not include qualifiers
package.sh: fix help/html doc typo package.sh: fix help/html doc typo
02-06-11 package.sh: fix ditto update doc to `PACKAGEROOT field matching *:*' 02-06-11 package.sh: fix ditto update doc to `PACKAGEROOT field matching *:*'
02-06-07 WWW.mk: change substitute $(") to 02-06-07 WWW.mk: change substitute $(") to
02-06-06 package.sh: clarify output streams for help/html 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-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-04-04 package.sh: fix update to differentiate *.sun4 and sun4
@ -697,7 +697,7 @@ All recorded changes follow.
package.mk: tarball package.notice replaces `license accepted' prompt package.mk: tarball package.notice replaces `license accepted' prompt
package.sh: eliminate `license accepted' prompt package.sh: eliminate `license accepted' prompt
package.sh: add update to download latest from a url package.sh: add update to download latest from a url
package.sh: use builtin arithmetic when we know its ksh package.sh: use builtin arithmetic when we know it's ksh
iffe.sh: unkown -&gt; unknown iffe.sh: unkown -&gt; unknown
01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN 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 package.mk: convert to YYYY-MM-DD delta releases instead of NNNN
@ -720,7 +720,7 @@ All recorded changes follow.
01-08-11 package.mk: handle single gz executable packages (e.g., for ksh) 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 package.sh: fix package install to require nmake only if no *.sum
iffe.sh: drop ancient menu and prompt actions; check ./hdr.h clash 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-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-27 ratz: handle hard and soft links if possible
01-06-07 Makefile: fix :MAPLIB: for sco 01-06-07 Makefile: fix :MAPLIB: for sco
01-05-31 crossexec.sh: add 01-05-31 crossexec.sh: add
@ -751,7 +751,7 @@ All recorded changes follow.
01-02-26 iffe.sh: fix bug that omitted runtime #define for `mac' op 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 &lt;sfio.h&gt; 01-02-22 cc.ibm.risc: handle SF_CLOSE clash in &lt;sfio.h&gt;
01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc 01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
C+probe: quote "$cc" when its an argument! C+probe: quote "$cc" when it's an argument!
mamake: execute actions with $SHELL, ignored signals back to default mamake: execute actions with $SHELL, ignored signals back to default
package.sh: nmake check error output to /dev/null package.sh: nmake check error output to /dev/null
package.sh: fix INIT a.out updates for knr cc package.sh: fix INIT a.out updates for knr cc
@ -772,7 +772,7 @@ All recorded changes follow.
package.sh: add $SECONDS to the DEBUG trace prompt package.sh: add $SECONDS to the DEBUG trace prompt
01-01-01 ratz.c: #ifdef for uwin ncc 01-01-01 ratz.c: #ifdef for uwin ncc
iffe.sh,package.sh: check PACKAGE_PATH for local installations iffe.sh,package.sh: check PACKAGE_PATH for local installations
package.sh: add psrinfo for osf.alpha host cpu package.sh: add psrinfo for osf.alpha host cpu
package.sh: change pax --meter probe; some hang on /dev/tty package.sh: change pax --meter probe; some hang on /dev/tty
package.sh: fix `install flat ARCH' package.sh: fix `install flat ARCH'
mamake: eliminate loops from scan order mamake: eliminate loops from scan order
@ -825,7 +825,7 @@ All recorded changes follow.
package: fix write delta source to use default pax format package: fix write delta source to use default pax format
package: add disambiguating bias for sgi.mips3 over sgi.mips4 package: add disambiguating bias for sgi.mips3 over sgi.mips4
package.mk: fix for directory content packages lib ast-locale package.mk: fix for directory content packages lib ast-locale
00-05-01 iffe: fix invalid _LIB_ macro identifier 00-05-01 iffe: fix invalid _LIB_ macro identifier
00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude 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-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
00-03-17 package: all archives are .tgz for binary download 00-03-17 package: all archives are .tgz for binary download
@ -906,7 +906,7 @@ All recorded changes follow.
98-11-11 regress: fix UNIT PATH lookup 98-11-11 regress: fix UNIT PATH lookup
98-11-01 regress: add PROG 98-11-01 regress: add PROG
98-10-01 hostinfo: add unixware.* 98-10-01 hostinfo: add unixware.*
use: export PACKAGE_* use: export PACKAGE_*
98-08-11 C.probe: add /usr/include check (for sco CC) 98-08-11 C.probe: add /usr/include check (for sco CC)
hostinfo: handle uwin uname update hostinfo: handle uwin uname update
98-05-01 regress: fix bug sometimes didn't list last test 98-05-01 regress: fix bug sometimes didn't list last test

View file

@ -6,7 +6,7 @@
* if Giji not specified then G11 == L * if Giji not specified then G11 == L
* the first Ti.c that compiles/links with group -lGi1 ... -lGin * the first Ti.c that compiles/links with group -lGi1 ... -lGin
* but does not compile/link with no libraries maps * but does not compile/link with no libraries maps
* -lL to to require -lGi1 ... -lGin * -lL to require -lGi1 ... -lGin
* otherwise -lL is not required and maps to "no library required" * otherwise -lL is not required and maps to "no library required"
*/ */

View file

@ -338,7 +338,7 @@ socket :MAPLIB: socket.c nsl.c
* this is why unix is starting to look like windows * this is why unix is starting to look like windows
* this map allows makefiles to use -ldbm on all systems * this map allows makefiles to use -ldbm on all systems
* *
* and this just in: sometimes its <gdbm-ndbm.h> and possibly -lgdbm_compat * and this just in: sometimes it's <gdbm-ndbm.h> and possibly -lgdbm_compat
* *
* at least the -l* buck stops here * at least the -l* buck stops here
*/ */

View file

@ -329,7 +329,7 @@
package.mk: add the runtime package type (no *.[ah]) package.mk: add the runtime package type (no *.[ah])
iffe.sh: fix key test reports iffe.sh: fix key test reports
04-08-26 Makefile: { add m2.c m3.c } -lm tests for { frexp[l] ldexp[l] } 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 04-08-11 package.mk: handle HOSTTYPE for solaris > 9
package.sh: add `checkaout proto' for { make view } package.sh: add `checkaout proto' for { make view }
package.sh: check for { md5sum md5 } package.sh: check for { md5sum md5 }
iffe.sh: add {if|elif|else|endif} test ... iffe.sh: add {if|elif|else|endif} test ...
@ -430,7 +430,7 @@
03-06-21 package.sh: fix INITROOT initialization bug 03-06-21 package.sh: fix INITROOT initialization bug
package.sh: make sure admin logs exists before tail'ing 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 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 cc.mvs.390: return code 4 yields exit code 3 but it's *really* ok
package.sh: fix onpath function global var conflict package.sh: fix onpath function global var conflict
make.probe: add CC.DIALECT { GNU -dD } make.probe: add CC.DIALECT { GNU -dD }
package.mk: add Mamfile to lcl manifest package.mk: add Mamfile to lcl manifest
@ -450,7 +450,7 @@
03-05-05 package.mk: fix cygwin tarball names 03-05-05 package.mk: fix cygwin tarball names
03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile 03-04-30 package.sh: move (cc|ld|ldd).$HOSTTYPE updates from Makefile
03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" => "" 03-04-27 make.probe: fix mvs CC.PREFIX.SHARED "lib" => ""
make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR) make.probe: add CC.DLL.DIR = $(BINDIR) or $(LIBDIR)
make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD } make.probe: add { CC.LD.LAZY CC.LD.NOLAZY CC.LD.RECORD CC.LD.NORECORD }
probe.win32: sync with latest CC.* probe.win32: sync with latest CC.*
03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh 03-04-25 mamprobe.sh: add args to `. $makeprobe' for ancient sh
@ -458,7 +458,7 @@
03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's 03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's
package.sh: fix admin write binary tarball snarf package.sh: fix admin write binary tarball snarf
03-04-21 package.mk: package covered *.@(pkg|lic) too 03-04-21 package.mk: package covered *.@(pkg|lic) too
03-04-15 package.mk: don't generate incremental archives for lcl 03-04-15 package.mk: don't generate incremental archives for lcl
package.mk: add incremental=[source:1 binary:0] archive control package.mk: add incremental=[source:1 binary:0] archive control
package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc package.sh: generate $INSTALLROOT/bin/cc wrapper for CC != cc
package.sh: admin must ditto lib/package/*.@(pkg|lic) too package.sh: admin must ditto lib/package/*.@(pkg|lic) too
@ -549,7 +549,7 @@
02-09-11 make.probe: move from nmake src to be part of mamprobe.sh 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 mamprobe: generate from mamprobe.beg C.probe make.probe mamprobe.end
mamake.c: pass cc absolute path to mamprobe mamake.c: pass cc absolute path to mamprobe
package.sh: generate mamprobe -- yuk (at least its confined to INIT) package.sh: generate mamprobe -- yuk (at least it's confined to INIT)
iffe.sh: lcl,nxt: drop default sys/ check iffe.sh: lcl,nxt: drop default sys/ check
ditto.sh: tw --logical by default; add --physical ditto.sh: tw --logical by default; add --physical
02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey 02-09-10 package.sh: SHELLMAGIC creeps into package too -- duh and fooey
@ -640,7 +640,7 @@
package.mk: tarball package.notice replaces `license accepted' prompt package.mk: tarball package.notice replaces `license accepted' prompt
package.sh: eliminate `license accepted' prompt package.sh: eliminate `license accepted' prompt
package.sh: add update to download latest from a url package.sh: add update to download latest from a url
package.sh: use builtin arithmetic when we know its ksh package.sh: use builtin arithmetic when we know it's ksh
iffe.sh: unkown -> unknown iffe.sh: unkown -> unknown
01-10-18 package.sh: convert to YYYY-MM-DD delta releases instead of NNNN 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 package.mk: convert to YYYY-MM-DD delta releases instead of NNNN
@ -663,7 +663,7 @@
01-08-11 package.mk: handle single gz executable packages (e.g., for ksh) 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 package.sh: fix package install to require nmake only if no *.sum
iffe.sh: drop ancient menu and prompt actions; check ./hdr.h clash 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-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-27 ratz: handle hard and soft links if possible
01-06-07 Makefile: fix :MAPLIB: for sco 01-06-07 Makefile: fix :MAPLIB: for sco
01-05-31 crossexec.sh: add 01-05-31 crossexec.sh: add
@ -694,7 +694,7 @@
01-02-26 iffe.sh: fix bug that omitted runtime #define for `mac' op 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-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 01-02-14 cc.sgi.mips3,cc.sgi.mips4: handle -mips2 -mips3 -mips4 for cross cc
C+probe: quote "$cc" when its an argument! C+probe: quote "$cc" when it's an argument!
mamake: execute actions with $SHELL, ignored signals back to default mamake: execute actions with $SHELL, ignored signals back to default
package.sh: nmake check error output to /dev/null package.sh: nmake check error output to /dev/null
package.sh: fix INIT a.out updates for knr cc package.sh: fix INIT a.out updates for knr cc
@ -715,7 +715,7 @@
package.sh: add $SECONDS to the DEBUG trace prompt package.sh: add $SECONDS to the DEBUG trace prompt
01-01-01 ratz.c: #ifdef for uwin ncc 01-01-01 ratz.c: #ifdef for uwin ncc
iffe.sh,package.sh: check PACKAGE_PATH for local installations iffe.sh,package.sh: check PACKAGE_PATH for local installations
package.sh: add psrinfo for osf.alpha host cpu package.sh: add psrinfo for osf.alpha host cpu
package.sh: change pax --meter probe; some hang on /dev/tty package.sh: change pax --meter probe; some hang on /dev/tty
package.sh: fix `install flat ARCH' package.sh: fix `install flat ARCH'
mamake: eliminate loops from scan order mamake: eliminate loops from scan order
@ -768,7 +768,7 @@
package: fix write delta source to use default pax format package: fix write delta source to use default pax format
package: add disambiguating bias for sgi.mips3 over sgi.mips4 package: add disambiguating bias for sgi.mips3 over sgi.mips4
package.mk: fix for directory content packages lib ast-locale package.mk: fix for directory content packages lib ast-locale
00-05-01 iffe: fix invalid _LIB_ macro identifier 00-05-01 iffe: fix invalid _LIB_ macro identifier
00-04-11 C+probe: uniq stdinclude and stdlib, fix usrinclude 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-04-01 regress: fix explicit OUTPUT bug that didn't compare with expected
00-03-17 package: all archives are .tgz for binary download 00-03-17 package: all archives are .tgz for binary download
@ -849,7 +849,7 @@
98-11-11 regress: fix UNIT PATH lookup 98-11-11 regress: fix UNIT PATH lookup
98-11-01 regress: add PROG 98-11-01 regress: add PROG
98-10-01 hostinfo: add unixware.* 98-10-01 hostinfo: add unixware.*
use: export PACKAGE_* use: export PACKAGE_*
98-08-11 C.probe: add /usr/include check (for sco CC) 98-08-11 C.probe: add /usr/include check (for sco CC)
hostinfo: handle uwin uname update hostinfo: handle uwin uname update
98-05-01 regress: fix bug sometimes didn't list last test 98-05-01 regress: fix bug sometimes didn't list last test

View file

@ -34,7 +34,7 @@ omitted features that are completely upward compatible.
interpreted literally. Now it is an ANSI-C string. You interpreted literally. Now it is an ANSI-C string. You
must quote the dollar sign to get the previous behavior. must quote the dollar sign to get the previous behavior.
Also, a $ in front of a " indicates that the string needs Also, a $ in front of a " indicates that the string needs
to be translated for locales other than C or POSIX. The $ to be translated for locales other than C or POSIX. The $
is ignored in the C and POSIX locale. is ignored in the C and POSIX locale.
7. With ksh-88, tilde expansion did not take place inside ${...}. 7. With ksh-88, tilde expansion did not take place inside ${...}.
@ -55,7 +55,7 @@ omitted features that are completely upward compatible.
in your PATH, and you have a program named test in your in your PATH, and you have a program named test in your
directory, it will be executed when you type test; the directory, it will be executed when you type test; the
built-in version will be run at the point /bin is found built-in version will be run at the point /bin is found
in your PATH. in your PATH.
11. Some undocumented combinations of argument passing to ksh 11. Some undocumented combinations of argument passing to ksh
builtins no longer works since ksh-93 is getopts conforming builtins no longer works since ksh-93 is getopts conforming
@ -72,7 +72,7 @@ omitted features that are completely upward compatible.
14. If the file name following a redirection symbol contain pattern 14. If the file name following a redirection symbol contain pattern
characters they will only be expanded for interactive shells. characters they will only be expanded for interactive shells.
15. The arguments to a dot script will be restored when it completes. 15. The arguments to a dot script will be restored when it completes.
16. The list of tracked aliases is not displayed with alias unless 16. The list of tracked aliases is not displayed with alias unless
the -t option is specified. the -t option is specified.
@ -85,7 +85,7 @@ omitted features that are completely upward compatible.
18. The ^T directive of emacs mode has been changed to work the 18. The ^T directive of emacs mode has been changed to work the
way it does in gnu-emacs. way it does in gnu-emacs.
19. ksh-88 allowed unbalanced parenthes within ${name op val} whereas 19. ksh-88 allowed unbalanced parentheses within ${name op val} whereas
ksh-93 does not. Thus, ${foo-(} needs to be written as ${foo-\(} ksh-93 does not. Thus, ${foo-(} needs to be written as ${foo-\(}
which works with both versions. which works with both versions.
@ -100,7 +100,7 @@ omitted features that are completely upward compatible.
the end-of-options is reached to conform to the POSIX standard. the end-of-options is reached to conform to the POSIX standard.
23. Since the POSIX standard requires that octal constants be 23. Since the POSIX standard requires that octal constants be
recongnized, doing arithmetic on typeset -Z variables can recognized, doing arithmetic on typeset -Z variables can
yield different results that with ksh-88. Most of these yield different results that with ksh-88. Most of these
differences were eliminated in ksh-93o. Starting in ksh-93u+, the differences were eliminated in ksh-93o. Starting in ksh-93u+, the
let command no longer recognizes octal constants starting with 0 let command no longer recognizes octal constants starting with 0
@ -109,7 +109,7 @@ omitted features that are completely upward compatible.
24. Starting after ksh-93l, If you run ksh name, where name does 24. Starting after ksh-93l, If you run ksh name, where name does
not contain a /, the current directory will be searched not contain a /, the current directory will be searched
before doing a path search on name as required by the POSIX before doing a path search on name as required by the POSIX
shell standard. shell standard.
25. In ksh-93, cd - will output the directory that it changes 25. In ksh-93, cd - will output the directory that it changes
to on standard output as required by X/Open. With ksh-88, to on standard output as required by X/Open. With ksh-88,

View file

@ -46,7 +46,7 @@ Directory layout:
The data/bash_pre_rc.sh is a startup script used when emulating The data/bash_pre_rc.sh is a startup script used when emulating
bash if the shell is compiled with SHOPT_BASH and the shell bash if the shell is compiled with SHOPT_BASH and the shell
is invoked as bash. The bash emulation is not complete. is invoked as bash. The bash emulation is not complete.
Include directory: Include directory:
1. argnod.h contains the type definitions for command 1. argnod.h contains the type definitions for command
nodes, io nodes, argument nodes, and for positional nodes, io nodes, argument nodes, and for positional
@ -60,11 +60,11 @@ Include directory:
don't fit elsewhere and it includes several other don't fit elsewhere and it includes several other
headers. It defines a structure that contains ksh headers. It defines a structure that contains ksh
global data, sh, and a structure that contains per global data, sh, and a structure that contains per
function data, sh.st. function data, sh.st.
4. edit.h contains definitions that are common to both 4. edit.h contains definitions that are common to both
vi and emacs edit modes. vi and emacs edit modes.
5. env.h contains an alternative interfaces for creating and 5. env.h contains an alternative interfaces for creating and
modifying environment variables. modifying environment variables.
6. fault.h contains prototypes for signal related 6. fault.h contains prototypes for signal related
functions and trap and fault handling. functions and trap and fault handling.
7. fcin.h contains macro and function definitions for 7. fcin.h contains macro and function definitions for

View file

@ -96,7 +96,7 @@ variable should contains the name of this directory.
They may also They may also
be specified in the be specified in the
.B ENV .B ENV
file with the file with the
.B \-xf .B \-xf
option of option of
.BR typeset . .BR typeset .

View file

@ -1,5 +1,5 @@
12-08-01 --- Release ksh93u+ --- 12-08-01 --- Release ksh93u+ ---
12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep) 12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep)
that read from stdin has been fixed. that read from stdin has been fixed.
12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed. 12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed.
12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr. 12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr.
@ -38,7 +38,7 @@
12-06-19 Tab completion after a / when there is only one match not completes 12-06-19 Tab completion after a / when there is only one match not completes
with that match rather than generating a menu of matches. with that match rather than generating a menu of matches.
12-06-19 A bug in which patterns containing {...} where not processed 12-06-19 A bug in which patterns containing {...} where not processed
correctly inside ${var/pattern/string} has been fixed. correctly inside ${var/pattern/string} has been fixed.
12-06-18 Code modified to eliminate fts_notify variable. 12-06-18 Code modified to eliminate fts_notify variable.
12-06-15 Change the .paths plugin/builtin library variable name from 12-06-15 Change the .paths plugin/builtin library variable name from
BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware
@ -81,12 +81,12 @@
12-05-24 When the redirection operatory >; is directed to a symlink, it now 12-05-24 When the redirection operatory >; is directed to a symlink, it now
overwrites the file named by the link rather than the link. overwrites the file named by the link rather than the link.
12-05-21 +Added printf formats %(type)q where type can be html, url, pattern, 12-05-21 +Added printf formats %(type)q where type can be html, url, pattern,
ere, or csv. ere, or csv.
12-05-18 A bug with appending elements to an indexed array has been fixed. 12-05-18 A bug with appending elements to an indexed array has been fixed.
12-05-18 The exit status from getopts --man interactively was 0 instead of 2 12-05-18 The exit status from getopts --man interactively was 0 instead of 2
and has been fixed. and has been fixed.
12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has 12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has
been fixed. been fixed.
12-05-17 A bug with fixed size arrays which could cause a core dump has been 12-05-17 A bug with fixed size arrays which could cause a core dump has been
fixed. fixed.
12-05-17 A bug in which the here-document <<< $(<file) was not processed 12-05-17 A bug in which the here-document <<< $(<file) was not processed
@ -98,10 +98,10 @@
been fixed. been fixed.
12-05-15 Fixed a .paths bug in which only the first BUILTIN_LIB assignment worked. 12-05-15 Fixed a .paths bug in which only the first BUILTIN_LIB assignment worked.
12-05-14 Arithmetic expressions and subexpressions that are not floating point 12-05-14 Arithmetic expressions and subexpressions that are not floating point
now treat -0 as 0, so that $((-0)) is 0 and $((-0.0)) is -0. now treat -0 as 0, so that $((-0)) is 0 and $((-0.0)) is -0.
12-05-11 'unset .sh' now fails with readonly message instead of coredump. 12-05-11 'unset .sh' now fails with readonly message instead of coredump.
12-05-11 A bug which left an associative array arr containing one element in 12-05-11 A bug which left an associative array arr containing one element in
the wrong state after expanding with ${arr[@]} has been fixed. the wrong state after expanding with ${arr[@]} has been fixed.
12-05-10 A bug in which typeset -f did not display options that called getopts 12-05-10 A bug in which typeset -f did not display options that called getopts
has been fixed. has been fixed.
12-05-08 Fixed a number of potential bugs uncovered by valgrind. 12-05-08 Fixed a number of potential bugs uncovered by valgrind.
@ -127,8 +127,8 @@
12-04-23 +The -L option was added to kill. The -L option is the same as -l 12-04-23 +The -L option was added to kill. The -L option is the same as -l
except that without arguments the output format is in the form of except that without arguments the output format is in the form of
a select menu. a select menu.
12-04-23 A bug in which the exit status for an interactive shell was always 12-04-23 A bug in which the exit status for an interactive shell was always
0 has been fixed. 0 has been fixed.
12-04-20 Entering blank lines interactively no longer resets the exit status. 12-04-20 Entering blank lines interactively no longer resets the exit status.
12-04-18 A bug in file completion in which the second tab completion on a file 12-04-18 A bug in file completion in which the second tab completion on a file
would list the completion rather than inserting the completion has would list the completion rather than inserting the completion has
@ -202,7 +202,7 @@
12-03-18 A bug in which unset foo where foo is a name reference to a compound 12-03-18 A bug in which unset foo where foo is a name reference to a compound
variable defined inside a function is not unset has been fixed. variable defined inside a function is not unset has been fixed.
12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the 12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the
list of matches became empty has been fixed. list of matches became empty has been fixed.
12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax 12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax
error since a is not an assignment command. error since a is not an assignment command.
12-03-16 A bug in which an unset discipline from a variable defined in a 12-03-16 A bug in which an unset discipline from a variable defined in a
@ -211,7 +211,7 @@
of two elements rather than an array of one element which is of two elements rather than an array of one element which is
a compound variable. a compound variable.
12-03-02 +The vi and emacs edit modes now list all the entries in a directory 12-03-02 +The vi and emacs edit modes now list all the entries in a directory
when entering a <tab> for completion after a /. when entering a <tab> for completion after a /.
12-03-02 A bug in which a program that exits with value 12 when called 12-03-02 A bug in which a program that exits with value 12 when called
from a command substitution in which standard output has been from a command substitution in which standard output has been
redirected caused the shell to hang has been fixed. redirected caused the shell to hang has been fixed.
@ -238,7 +238,7 @@
from the KEYBD trap. Now read options -N, -n, and -t should work from the KEYBD trap. Now read options -N, -n, and -t should work
when called from a KEYBD trap. when called from a KEYBD trap.
12-02-13 If FCEDIT is not set and fc is invoked without the -e option, 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. 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 12-02-10 Another bug in the saving and restoring of IFS in a subshell
that caused a core dump has been fixed. that caused a core dump has been fixed.
12-02-08 A bug in which .sh.fun disciplines could be cleared after a 12-02-08 A bug in which .sh.fun disciplines could be cleared after a
@ -275,11 +275,11 @@
12-01-01 A timing problem with >; has been fixed. 12-01-01 A timing problem with >; has been fixed.
12-01-01 A macro expansion memory leak 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 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. 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 11-12-20 A number of code changes were made based on the results of errors
indicated by static code analysis. indicated by static code analysis.
11-12-13 In vi edit mode a lteral <TAB> can now be entered by preceding it 11-12-13 In vi edit mode a literal <TAB> can now be entered by preceding it
with a backshash. with a backslash.
11-12-13 When tab is entered for completion after a ' or ", the ' and " 11-12-13 When tab is entered for completion after a ' or ", the ' and "
characters are no longer deleted. characters are no longer deleted.
11-12-07 A bug in which a program in the current directory with a . in the 11-12-07 A bug in which a program in the current directory with a . in the
@ -329,7 +329,7 @@
11-09-16 The characters ! + - % and @ in file names are no longer escaped with 11-09-16 The characters ! + - % and @ in file names are no longer escaped with
file name completion. file name completion.
11-09-13 The let command no longer treats numbers starting with 0 as octal 11-09-13 The let command no longer treats numbers starting with 0 as octal
constants. constants.
11-09-08 A bug in which printf "%R" could cause a core dump for invalid shell 11-09-08 A bug in which printf "%R" could cause a core dump for invalid shell
patterns has been fixed. patterns has been fixed.
11-08-09 With set -u, ${var#pattern} reported that var was unset for special 11-08-09 With set -u, ${var#pattern} reported that var was unset for special
@ -366,7 +366,7 @@
an array instance when the array has been declared a compound variable an array instance when the array has been declared a compound variable
array. array.
11-05-31 A bug in which typeset -m of an array instance did not remove the 11-05-31 A bug in which typeset -m of an array instance did not remove the
original instance has been fixed. original instance has been fixed.
11-05-28 A bug in which typeset -m dest=src fails when src and are passed as 11-05-28 A bug in which typeset -m dest=src fails when src and are passed as
name references was fixed. name references was fixed.
11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound 11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound
@ -380,7 +380,7 @@
11-05-24 A bug in unsetting arrays of compound variables that could lead to 11-05-24 A bug in unsetting arrays of compound variables that could lead to
a core dump has been fixed. a core dump has been fixed.
11-05-24 A scoping bug in with typeset -m for variables passed as references 11-05-24 A scoping bug in with typeset -m for variables passed as references
has been fixed. has been fixed.
11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an 11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an
exception has been fixed. exception has been fixed.
11-05-03 Two more scoping bugs with name references and read -C were fixed. 11-05-03 Two more scoping bugs with name references and read -C were fixed.
@ -409,7 +409,7 @@
11-04-18 A bug in which name references to array elements could fail has 11-04-18 A bug in which name references to array elements could fail has
been fixed. been fixed.
11-04-15 +A compile option, SHOPT_2DMATCH, has been added which causes 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} .sh.match to be a two dimensional array after ${var//pat/str}
where the first dimension is the pattern number and the second is where the first dimension is the pattern number and the second is
the match instance. the match instance.
11-04-11 A bug in which readonly var, where var is exported could cause var 11-04-11 A bug in which readonly var, where var is exported could cause var
@ -461,7 +461,7 @@
11-02-18 A bug in which the value of $0 in a function defined by name() 11-02-18 A bug in which the value of $0 in a function defined by name()
was changed to name has been fixed. was changed to name has been fixed.
11-02-17 A bug in which the declaration typeset var[100] did not work 11-02-17 A bug in which the declaration typeset var[100] did not work
correctly has been fixed. correctly has been fixed.
11-02-15 A bug in which [[ -v sh.match ]] did not work correctly has been 11-02-15 A bug in which [[ -v sh.match ]] did not work correctly has been
fixed. fixed.
@ -498,7 +498,7 @@
i > ${#var} has been fixed. i > ${#var} has been fixed.
10-12-16 +sleep now treats . as decimal point even in locales that use comma. 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 10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer
mapping as provided with wctrans(). mapping as provided with wctrans().
10-12-10 A bug in which typeset -l displayed namespaces as well as lower case 10-12-10 A bug in which typeset -l displayed namespaces as well as lower case
variables has been fixed. variables has been fixed.
10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline 10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline
@ -521,7 +521,7 @@
10-11-24 A bug in which a name reference is make to arr[0] when arr is not 10-11-24 A bug in which a name reference is make to arr[0] when arr is not
an array has been fixed. an array has been fixed.
10-11-23 If a type definition is made without a compound variable assignment it 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. 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 10-11-22 The handling of \ inside [...] for for shell and ~(E) patterns has
been fixed. been fixed.
10-11-22 A patch was made to pfsh to handle an error case. 10-11-22 A patch was made to pfsh to handle an error case.
@ -595,7 +595,7 @@
with no members as an element of a compound variable did not work with no members as an element of a compound variable did not work
has been fixed. has been fixed.
10-10-08 A bug in which killing the last command in a function defined 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. 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 10-10-08 A bug which could cause a core dump if IFS is unset inside a function
has been fixed. has been fixed.
10-10-07 +To reduce unwanted side effects, invoking typeset without the export 10-10-07 +To reduce unwanted side effects, invoking typeset without the export
@ -605,7 +605,7 @@
character follows it. character follows it.
10-10-04 The change for $'...' expansion on 10-08-09 did not expand parameters 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. 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 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) definition would be displayed as a compound indexed array (-C -a)
has been fixed. has been fixed.
10-09-30 The C99 math function ldexp has been added. 10-09-30 The C99 math function ldexp has been added.
@ -658,7 +658,7 @@
10-08-27 +When running a subshell, the current pool is unset. 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 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. interactive shells could generate completion messages has been fixed.
10-08-25 Fixed a couple of bugs related to job pools. 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 10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of
those names are handled by the shell. those names are handled by the shell.
10-08-24 A bug in the running of a compiled dot script in which only the 10-08-24 A bug in the running of a compiled dot script in which only the
@ -771,7 +771,7 @@
10-05-27 Rewrote the subshell code to avoid using pipes an many cases. 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 10-05-24 Fixed a bug which cause an exception when both -l and -s were
specified with typeset -i. specified with typeset -i.
10-05-21 Inputting of three dimensional indexed arrays with ( ( (...)...)...) 10-05-21 Inputting of three dimensional indexed arrays with ( ( (...)...)...)
was not working and has been fixed. was not working and has been fixed.
10-05-21 A bug in which adding the attributes -Ai to a variable via a name 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. reference could cause the value to display incorrectly has been fixed.
@ -788,7 +788,7 @@
functions in arithmetic expressions has been fixed. functions in arithmetic expressions has been fixed.
10-05-19 <<< with an empty string no longer gives an error. 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 10-05-19 A bug in arithmetic evaluation when a name reference to an array
instance was used has been fixed. instance was used has been fixed.
10-05-14 A bug in which the shell treats a valid index array assignment, 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. 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 10-05-13 A bug in creating name references to associative array variable
@ -838,7 +838,7 @@
10-04-15 A bug which caused scripts containing user defined math functions to 10-04-15 A bug which caused scripts containing user defined math functions to
fail to compile with shcomp has been fixed. fail to compile with shcomp has been fixed.
10-04-15 +Job pools have been added with the SHOPT_COSHELL compilation option. 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 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 ...' or remotely and to be managed as a unit. The command '& name ...'
creates or uses a named job pool for subsequent background jobs. creates or uses a named job pool for subsequent background jobs.
kill, wait, and jobs allow the pool name as operands. kill, wait, and jobs allow the pool name as operands.
@ -954,7 +954,7 @@
overwrite the prompt. overwrite the prompt.
09-11-17 +Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2. 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 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 foo if local variable foo does not exist, instead of creating a
local variable. local variable.
09-11-17 "read -n1" from the terminal has been fixed to read exactly one character. 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 Job control now works for subshell commands, (...).
@ -988,7 +988,7 @@
09-09-17 A bug in which unsetting SVLVL could cause a script invoked by 09-09-17 A bug in which unsetting SVLVL could cause a script invoked by
name without #! to core dump has been fixed. 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 09-09-16 A bug in which a pipeline in a here-document could hang when the
pipefail option was on has been fixed. pipefail option was on has been fixed.
09-09-09 A bug in the processing of line joining in here documents which 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. 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 09-09-09 +A leading ; with commands in a brace group or parenthesis group
@ -1032,7 +1032,7 @@
type variables when reference with a name reference has been fixed. 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-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 09-08-06 A bug in which setting the trap on CHLD to ignore could cause
a script to hang has been fixed. a script to hang has been fixed.
09-07-08 A bug in the processing of name reference assignments when it 09-07-08 A bug in the processing of name reference assignments when it
contained pattern expansions with quoting has been fixed. contained pattern expansions with quoting has been fixed.
09-06-22 +The default width for typeset -X has been changed so that there 09-06-22 +The default width for typeset -X has been changed so that there
@ -1064,7 +1064,7 @@
would be listed with trap -p. would be listed with trap -p.
09-06-12 A bug in vi edit mode in which hitting the up arrow key at the 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 end of a line longer than 40 characters which caused a core dump
has been fixed. has been fixed.
09-06-11 A bug in which "eval non-builtin &" would create two processes, 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. 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 09-06-08 When var is an identifier and is unset, ${var} no longer tries to
@ -1278,7 +1278,7 @@
the same array. the same array.
08-09-09 The exit status of 2 from the DEBUG trap causes the next command 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 to be skipped. An exit value of 255 from a DEBUG trap called from
a function causes the function to return. a function causes the function to return.
08-09-08 A bug in which a coprocess created in a subshell that did not 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 complete when the subshell terminated could prevent a coprocess
from being created in the parent shell has been fixed. from being created in the parent shell has been fixed.
@ -1294,13 +1294,13 @@
08-08-25 +For an indexed array, a negative subscript now refers to offsets 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. 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-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 08-08-22 If oldvar is a compound variable, typeset -C newvar=oldvar creates
newvar as a copy of oldvar. newvar as a copy of oldvar.
08-08-19 +The ALRM signal no longer cause the sleep builtin to terminate. 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 08-08-13 When used in an arithmetic expression, the .sh.version variable
now produces a number that will be increasing for each release. 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 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. 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 08-08-07 +The -m option has been added to typeset to move or rename a
variable. Not documented yet. variable. Not documented yet.
08-08-06 A bug in read when used in a loop when a prompt was specified 08-08-06 A bug in read when used in a loop when a prompt was specified
@ -1326,7 +1326,7 @@
08-07-08 +The %B format now outputs compound variables and arrays. The 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. 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 08-07-03 When the window change signal, WINCH, is received, the current
edit line is redrawn in place. edit line is redrawn in place.
08-07-01 A bug in the handling of shared variables when inside an embedded 08-07-01 A bug in the handling of shared variables when inside an embedded
type has been fixed. type has been fixed.
08-06-29 A bug in multiline edit mode which occurred when the prompt length 08-06-29 A bug in multiline edit mode which occurred when the prompt length
@ -1386,7 +1386,7 @@
result from an expansion. result from an expansion.
08-05-15 The trap on SIGCLD is no longer triggered by the completion of 08-05-15 The trap on SIGCLD is no longer triggered by the completion of
the foreground job as with ksh88. the foreground job as with ksh88.
08-05-14 A bug in the implementation of the editing feature added on 08-05-14 A bug in the implementation of the editing feature added on
07-09-19 in emacs mode has been fixed. 07-09-19 in emacs mode has been fixed.
08-05-12 A bug in processing the test built-in with parenthesis has been 08-05-12 A bug in processing the test built-in with parenthesis has been
fixed. fixed.
@ -1435,7 +1435,7 @@
specific data used by discipline functions. specific data used by discipline functions.
08-03-27 A bug in which the terminal group was not given back to the parent 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 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. and the other parts of the pipeline complete has been fixed.
The symptom was that the pipeline became uninterruptible. The symptom was that the pipeline became uninterruptible.
08-03-25 A bug in restricted mode introduced in ksh93s that caused scripts 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. that did not use #! to executed in restricted mode has been fixed.
@ -1492,7 +1492,7 @@
08-01-31 The prefix expansion operator @ has been added. ${@name} 08-01-31 The prefix expansion operator @ has been added. ${@name}
expands to the type of name or yields the attributes. expands to the type of name or yields the attributes.
07-11-15 A bug in the macro expander for multibyte characters in which 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. 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 07-10-03 A bug in which : was not allowed as part of an alias name has been
fixed. fixed.
07-09-26 A bug in which appending a compound variable to a compound variable 07-09-26 A bug in which appending a compound variable to a compound variable
@ -1538,16 +1538,16 @@
08-01-16 Incomplete arithmetic assignments, for example ((x += )), now 08-01-16 Incomplete arithmetic assignments, for example ((x += )), now
generate an error message. generate an error message.
08-01-16 A bug in which a set discipline defined for a variable before 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. 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 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 returned by a process that catches the SIGCONT signal is stopped
and then continued. and then continued.
07-12-13 A race condition in which a program that has been stopped and then 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. 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 07-12-12 Code to check for file system out of space write errors for all
writes has been added. writes has been added.
07-12-11 A bug in the macro expander for multibyte characters in which 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. 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 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. 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 07-12-04 A bug in which using <n>TAB after a variable name listing expansion
@ -1629,7 +1629,7 @@
an exit status of 127 when pipefail was enabled has been fixed. 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-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 07-06-25 In vi insert mode, ksh no longer emits a backspace character
before the carriage return when the newline is entered. before the carriage return when the newline is entered.
07-06-25 A bug in which pipefail would cause a command to return 0 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 when the pipeline was the last command and the failure happened
on a component other than the last has been fixed. on a component other than the last has been fixed.
@ -1669,7 +1669,7 @@
the exit status of the stop signal number. the exit status of the stop signal number.
07-02-26 +M-^L added to emacs mode to clear the screen. 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 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. 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 +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 07-02-19 A bug in which ksh93 did not allow multibyte characters in
identifier names has been fixed. identifier names has been fixed.
@ -1684,14 +1684,14 @@
06-12-29 --- Release ksh93s --- 06-12-29 --- Release ksh93s ---
06-12-29 A bug in which the value of IFS could be changed after a command 06-12-29 A bug in which the value of IFS could be changed after a command
substitution has been fixed. substitution has been fixed.
06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on 06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on
systems that provide getaddrinfo(3). systems that provide getaddrinfo(3).
06-12-19 +A -v option was added to read. With this option the value of 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 the first variable name argument will become the default value
when read from a terminal device. when read from a terminal device.
06-11-20 A bug in which "${foo[@]:1}}" expands a null argument (instead of 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. no argument), when foo[0] is not empty has been fixed.
06-11-16 The discipline functions have been modified to allow each subscript 06-11-16 The discipline functions have been modified to allow each subscript
to act independently. Currently the discipline function will not to act independently. Currently the discipline function will not
be called when called from a discipline function of the same variable. be called when called from a discipline function of the same variable.
@ -1734,7 +1734,7 @@
select condition can be preceded by a semi-colon which will select condition can be preceded by a semi-colon which will
be ignored when showme is off. When showme is on, any command be ignored when showme is off. When showme is on, any command
preceded by a colon will be traced but not executed. 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 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 except when used for file expansion. In this case if not
matches are found, the pattern is replaced by nothing rather matches are found, the pattern is replaced by nothing rather
than itself. than itself.
@ -1756,13 +1756,13 @@
06-07-20 The ability to use egrep, grep, and fgrep expressions within 06-07-20 The ability to use egrep, grep, and fgrep expressions within
shell patterns has been documented. shell patterns has been documented.
06-07-17 A bug with arithmetic command expressions for locales in which 06-07-17 A bug with arithmetic command expressions for locales in which
the comma is a thousands separator has been fixed. the comma is a thousands separator has been fixed.
06-07-13 +The default HISTSIZE was increased from 128 to 512. 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-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 06-06-23 A number of bug fixes for command, file, and variable completion
have been mode. have been mode.
06-06-20 +Floating point division by zero now yields the constant Inf or -Inf 06-06-20 +Floating point division by zero now yields the constant Inf or -Inf
and floating functions with invalid arguments yield NaN. and floating functions with invalid arguments yield NaN.
06-06-20 +The floating point constants Inf and NaN can be used in arithmetic 06-06-20 +The floating point constants Inf and NaN can be used in arithmetic
expressions. expressions.
06-06-20 +The functions isinf(), isnan(), tanhl() have been added for 06-06-20 +The functions isinf(), isnan(), tanhl() have been added for
@ -1777,7 +1777,7 @@
06-06-04 Modified built-in binding so that for systems for which /bin 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 and /usr/bin are the same, a builtin bound to /bin will get
selected when either /bin or /usr/bin is scanned. selected when either /bin or /usr/bin is scanned.
06-06-04 +Added literal-next character processing for emacs/gmacs mode. 06-06-04 +Added literal-next character processing for emacs/gmacs mode.
This change is not compatible with earlier versions of ksh93 This change is not compatible with earlier versions of ksh93
and ksh88 when the stty lnext is control-v. The sequence and ksh88 when the stty lnext is control-v. The sequence
escape-control-v will display the shell version. escape-control-v will display the shell version.
@ -1787,7 +1787,7 @@
the completion with the corresponding item. the completion with the corresponding item.
06-05-19 +Modified arithmetic so that conversions to strings default to 06-05-19 +Modified arithmetic so that conversions to strings default to
the maximum number of precision digits. the maximum number of precision digits.
06-05-16 Bug fixes for multibyte locales. 06-05-16 Bug fixes for multibyte locales.
06-05-10 The =~ operator was added to [[...]] and [[ string ~= ERE ]] 06-05-10 The =~ operator was added to [[...]] and [[ string ~= ERE ]]
is equivalent to [[ string == ~(E)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 06-04-25 A bug in the vi edit mode which could cause the shell to core dump
@ -1800,7 +1800,7 @@
integers. integers.
06-03-28 A bug in which variables assignment lists before functions 06-03-28 A bug in which variables assignment lists before functions
defined with function name were not passed on the functions defined with function name were not passed on the functions
invoked by this function has been fixed. invoked by this function has been fixed.
06-03-28 A bug in which name references defined within a function defined 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 with function name could not be used with compound variables has
been fixed. been fixed.
@ -1808,7 +1808,7 @@
(output) pipe to close before reading from (after writing to) (output) pipe to close before reading from (after writing to)
it has been fixed. it has been fixed.
06-02-28 A bug in which stopping a job created with the hist builtin command 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. would create a job that could not be restarted has been fixed.
06-01-24 --- Release ksh93r --- 06-01-24 --- Release ksh93r ---
06-01-24 A bug in which running commands with standard output closed would 06-01-24 A bug in which running commands with standard output closed would
@ -1819,7 +1819,7 @@
the colon was an assignment. the colon was an assignment.
05-12-24 A bug which could lead to a core dump when elements of a compound 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. 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+=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 05-12-13 An arithmetic bug in which x||y was returning x when x was non-zero
rather than 1 has been fixed. rather than 1 has been fixed.
05-12-07 +The aliases for integer and float have been changed to use attributes 05-12-07 +The aliases for integer and float have been changed to use attributes
@ -1913,7 +1913,7 @@
05-02-12 A bug in which the lib_init() function for .paths BUILTIN_LIB 05-02-12 A bug in which the lib_init() function for .paths BUILTIN_LIB
libraries was not called has been fixed. 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 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. 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 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. 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 05-02-06 A bug where external builtin stdout/stderr redirection corrupted
@ -1954,7 +1954,7 @@
'BUILTIN_LIB=libname'. When a command is searched for this directory, 'BUILTIN_LIB=libname'. When a command is searched for this directory,
the shared library named by libname will first be searched for a the shared library named by libname will first be searched for a
built-in version of the command. built-in version of the command.
04-09-03 <<< here documents now handle quotes in the word token correctly. 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 04-08-08 +The maximum size for read -n and and read -N was increased from
4095 to 32M. 4095 to 32M.
04-08-04 +printf %q was modified so that if an no operand was supplied, no 04-08-04 +printf %q was modified so that if an no operand was supplied, no
@ -1996,7 +1996,7 @@
04-03-29 +The preset alias source='command .' has been added. 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 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 name with #! on the first line would not get the signals handling
initialized correctly has been fixed. initialized correctly has been fixed.
04-03-29 A bug introduced in ksh93p in which a HUP signal received by 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 a shell that is a session group leader was not passed down to
its children has been fixed. its children has been fixed.
@ -2013,10 +2013,10 @@
04-01-20 A bug in which an unset discipline function could cause a core 04-01-20 A bug in which an unset discipline function could cause a core
dump on some systems has been fixed. dump on some systems has been fixed.
04-01-12 A bug in which a continue or break called outside a loop from 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 inside a function defined with name() syntax could affect
the invoking function has been fixed. the invoking function has been fixed.
04-01-08 If a command name begins with ~, only filename completion will be 04-01-08 If a command name begins with ~, only filename completion will be
attempted rather than pathname completion using the builtin editors. 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 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. multiple word replacements with the . directive has been fixed.
04-01-06 Backspace characters are now handled correctly in prompt strings. 04-01-06 Backspace characters are now handled correctly in prompt strings.
@ -2027,7 +2027,7 @@
03-12-15 A bug in which a quoted string ending with an unescaped $ would 03-12-15 A bug in which a quoted string ending with an unescaped $ would
delete the ending $ in certain cases has been fixed. 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 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. 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 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 the meta key were not processed until return was hit. This
has been fixed. has been fixed.
@ -2039,7 +2039,7 @@
03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc 03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc
for interactive shells. for interactive shells.
03-11-21 A bug introduced in ksh93o in which the DEBUG trap could get 03-11-21 A bug introduced in ksh93o in which the DEBUG trap could get
disabled after it triggered has been fixed. disabled after it triggered has been fixed.
03-11-04 A bug in which using arithmetic prefix operators ++ or -- on a 03-11-04 A bug in which using arithmetic prefix operators ++ or -- on a
non-lvalue could cause a core dump has been fixed. non-lvalue could cause a core dump has been fixed.
03-11-04 A bug in which leading zeros were stripped from variable 03-11-04 A bug in which leading zeros were stripped from variable
@ -2065,7 +2065,7 @@
03-08-07 A bug in which the KEYBD trap was not being invoked when 03-08-07 A bug in which the KEYBD trap was not being invoked when
characters with the 8th bit set has been fixed. characters with the 8th bit set has been fixed.
03-08-02 A parser bug introduced in ksh93o which caused the character 03-08-02 A parser bug introduced in ksh93o which caused the character
after () in a Posix function definition to be skipped after () in a Posix function definition to be skipped
when reading from standard input has been fixed. when reading from standard input has been fixed.
03-08-01 A bug in which "${foo#pattern}(x)" treated (x) as if it were 03-08-01 A bug in which "${foo#pattern}(x)" treated (x) as if it were
part of the pattern has been fixed. part of the pattern has been fixed.
@ -2111,7 +2111,7 @@
matches all files and any number of directory levels. matches all files and any number of directory levels.
03-05-30 A bug in which the PATH search could give incorrect results when 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. 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 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. mode to better handle escape sequences in the prompt.
03-05-27 I added = to the list of characters that mark the beginning of 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 a word for edit completion so that filenames in assignments
@ -2121,7 +2121,7 @@
03-05-19 A bug in which the output of uname from a command substitution 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 would go to the standard output of the invoking command when
uname was invoked with a non-standard option has been fixed. 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 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 it hadn't take back the terminal has been fixed. The bug
could occur when running a function that contained a pipeline could occur when running a function that contained a pipeline
whose last element was a function. whose last element was a function.
@ -2129,7 +2129,7 @@
which could cause a pipeline to hang if the first component which could cause a pipeline to hang if the first component
completed quickly has been fixed. completed quickly has been fixed.
03-05-13 +The read builtin has been modified so that the builtin editors 03-05-13 +The read builtin has been modified so that the builtin editors
will not overwrite output from a previous incomplete line. 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 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 .sh. prefixed to it after expanding a variable whose name begins
with .sh. has been fixed. with .sh. has been fixed.
@ -2192,7 +2192,7 @@
03-01-09 A bug in which using ${.sh.match} multiple times could lead to 03-01-09 A bug in which using ${.sh.match} multiple times could lead to
a memory exception has been fixed. a memory exception has been fixed.
03-01-06 A bug in the expansion of ${var/pattern/$string} in the case that 03-01-06 A bug in the expansion of ${var/pattern/$string} in the case that
$string contains \digit has been fixed. $string contains \digit has been fixed.
03-01-02 +A -P option was added for systems such as Solaris 8 that support 03-01-02 +A -P option was added for systems such as Solaris 8 that support
profile shell. profile shell.
03-01-02 For backward compatibility with ksh88, arithmetic expansion 03-01-02 For backward compatibility with ksh88, arithmetic expansion
@ -2215,7 +2215,7 @@
a signal is received so that cleanup can be performed. a signal is received so that cleanup can be performed.
02-10-31 +User applications can now trap the ALRM signal. Previously, 02-10-31 +User applications can now trap the ALRM signal. Previously,
the ALRM signal was used internally and could not be used the ALRM signal was used internally and could not be used
by applications. by applications.
02-10-31 A bug in which signals received while reading from a coprocess 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. 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 02-10-31 A bug in which a file opened with exec inside a subshell could
@ -2224,7 +2224,7 @@
take effect has been fixed. take effect has been fixed.
02-10-21 A bug which could cause a core dump when a local SECONDS variable 02-10-21 A bug which could cause a core dump when a local SECONDS variable
is defined in a function has been fixed. is defined in a function has been fixed.
02-10-15 A bug in which the associate array name operator ${!array[@]} 02-10-15 A bug in which the associative array name operator ${!array[@]}
could return the same name multiple times has been fixed. 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 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 not getting set when an assignment was made without a subscript
@ -2241,7 +2241,7 @@
02-09-27 A bug in which the error message for ${var?message} when var was 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. 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 02-09-27 A bug in which closing file descriptors 0 through 2 could
cause a subsequent here document to fail has been fixed. cause a subsequent here document to fail has been fixed.
02-09-14 A bug in whence which occurs when the specified name contained 02-09-14 A bug in whence which occurs when the specified name contained
a / has been fixed. a / has been fixed.
02-09-14 A bug in the parser for strings of the form name$((expr))=value 02-09-14 A bug in the parser for strings of the form name$((expr))=value
@ -2250,9 +2250,9 @@
an array was treated as an invariant has been fixed. 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 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 3 and 9 could cause a subsequent here document to fail has been
fixed. fixed.
02-09-09 A bug in which a background job was not removed from the job list 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&). 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) 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 could be interpreted as an array assignment rather than a
compound variable assignment has been fixed. compound variable assignment has been fixed.
@ -2283,8 +2283,8 @@
02-06-17 A bug in which background job completion could cause the sleep 02-06-17 A bug in which background job completion could cause the sleep
builtin to terminate prematurely has been fixed. builtin to terminate prematurely has been fixed.
02-06-17 A bug in which the shell could core dump if getopts was called 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. 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 +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 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 cat command was used in command substitution on a file whose
size was larger than PIPE_BUF has been fixed. size was larger than PIPE_BUF has been fixed.
@ -2319,7 +2319,7 @@
by name from within a function has been fixed. by name from within a function has been fixed.
02-01-08 A bug in which a shell script executed from within a subshell 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 could cause this script to have an invalid pointer leading
to a memory fault has been fixed. to a memory fault has been fixed.
02-01-07 +Added here documents of the form <<< word (as per zsh) which 02-01-07 +Added here documents of the form <<< word (as per zsh) which
is equivalent to << delim\nword\ndelim. is equivalent to << delim\nword\ndelim.
02-01-07 A bug in which the first word of a compound assignment, 02-01-07 A bug in which the first word of a compound assignment,
@ -2331,7 +2331,7 @@
been added. When this options is set, all commands implemented been added. When this options is set, all commands implemented
in libcmd become shell builtin commands by default. in libcmd become shell builtin commands by default.
02-01-07 A bug in which builtin foo, where foo is already a builtin 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. 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 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. 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 The value of $? was not being set when called with exit.
@ -2364,7 +2364,7 @@
01-09-27 Two bugs relating to multibyte history searches and to find 01-09-27 Two bugs relating to multibyte history searches and to find
have been fixed. have been fixed.
01-09-27 A bug introduced in ksh93k in which the PATH searching was 01-09-27 A bug introduced in ksh93k in which the PATH searching was
not restored after running a command with an assignment list not restored after running a command with an assignment list
has been fixed. has been fixed.
01-09-26 A bug in which a zero filled field was treated as octal when 01-09-26 A bug in which a zero filled field was treated as octal when
converted to integer has been fixed. converted to integer has been fixed.
@ -2379,7 +2379,7 @@
offsets which cause offsets to be measured from the end. offsets which cause offsets to be measured from the end.
01-09-25 Some spelling errors in the documentation were corrected. 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 01-09-24 +The /dev/tcp/host/port and /dev/udp/host/port now allow
the ports to be specified by service name. the ports to be specified by service name.
01-09-24 +The change staring with ksh93g in which the the appropriate 01-09-24 +The change staring with ksh93g in which the the appropriate
library path variable is prepended with a corresponding library library path variable is prepended with a corresponding library
directory has been modified. With the new method, only the directory has been modified. With the new method, only the
@ -2430,7 +2430,7 @@
name references to be treated as invariants has been fixed. 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 01-07-09 A bug in which a discipline function applied to a local variable
could cause a shell exception has been fixed. Discipline could cause a shell exception has been fixed. Discipline
functions can only be specified for global variables. functions can only be specified for global variables.
01-06-18 --- Release ksh93l --- 01-06-18 --- Release ksh93l ---
01-06-18 A bug in assigning integers larger than can be represented as 01-06-18 A bug in assigning integers larger than can be represented as
@ -2453,14 +2453,14 @@
01-05-20 +The shell allows *-(pattern), +-(pattern), ?-(pattern), 01-05-20 +The shell allows *-(pattern), +-(pattern), ?-(pattern),
{m,n}-(pattern}, and @-(pattern) to cause the minimal {m,n}-(pattern}, and @-(pattern) to cause the minimal
match of pattern to be selected whenever possible rather match of pattern to be selected whenever possible rather
than the maximal (greedy) match. than the maximal (greedy) match.
01-05-20 +The character class [:word:] has been added to patterns. 01-05-20 +The character class [:word:] has been added to patterns.
The word class is the union of [:alnum:] and the character _. The word class is the union of [:alnum:] and the character _.
01-05-20 +Inside (...) pattern groups, the \ character is now treated 01-05-20 +Inside (...) pattern groups, the \ character is now treated
specially even when in an enclosing character class. The specially even when in an enclosing character class. The
sequences, \w, \d, \s are equivalent to the character classes sequences, \w, \d, \s are equivalent to the character classes
word, digit, and space respectively. The sequences \W, \D, word, digit, and space respectively. The sequences \W, \D,
and \S are their complement sets. and \S are their complement sets.
01-05-20 +The shell now recognizes pattern groups of the form 01-05-20 +The shell now recognizes pattern groups of the form
~(options:pattern) where options or :pattern can be omitted. ~(options:pattern) where options or :pattern can be omitted.
Options use the letters + and - to enable and disable options Options use the letters + and - to enable and disable options
@ -2477,16 +2477,16 @@
performing the completion, expansion, or listing. performing the completion, expansion, or listing.
01-05-14 A small memory leak from subshells has been fixed. 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 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. 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-10 +Redirection to a null file name now generates an error message.
01-05-09 The shell now rejects some invalid parameter substitutions that 01-05-09 The shell now rejects some invalid parameter substitutions that
were previously processed in undefined ways. were previously processed in undefined ways.
01-05-09 A bug in which the output of select was not flushed before the 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. 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 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. when subshells ran built-ins in the background has been fixed.
01-05-08 +The FPATH variable now requires an explicit . to cause the 01-05-08 +The FPATH variable now requires an explicit . to cause the
current directory to be treated as a function directory. 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-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 01-05-07 A bug in which function definitions could be listed as part
of the history has been fixed. of the history has been fixed.
@ -2496,7 +2496,7 @@
for while and until loops. for while and until loops.
01-04-30 +The variable .sh.match is set after each pattern match (# % or /) 01-04-30 +The variable .sh.match is set after each pattern match (# % or /)
in a variable substitution. The variable .sh.match is an in a variable substitution. The variable .sh.match is an
indexed array with element 0 being the complete match. indexed array with element 0 being the complete match.
The array is only valid until the next subsequent pattern The array is only valid until the next subsequent pattern
match or until the value of the variable changes which ever match or until the value of the variable changes which ever
comes first. comes first.
@ -2537,7 +2537,7 @@
01-04-02 On some systems the wcwith() function was returning a wrong 01-04-02 On some systems the wcwith() function was returning a wrong
value for characters and caused characters to be displayed value for characters and caused characters to be displayed
incorrectly from the shell edit modes. A work around for incorrectly from the shell edit modes. A work around for
this problem has been added. this problem has been added.
01-03-26 A bug in which valid scripts could produce syntax errors 01-03-26 A bug in which valid scripts could produce syntax errors
when run with locales that considered characters such as "'" when run with locales that considered characters such as "'"
to be space characters has been fixed. to be space characters has been fixed.
@ -2580,14 +2580,14 @@
it results in null string rather than nothing. it results in null string rather than nothing.
01-02-02 memory leak problem with local variables in functions fixed. 01-02-02 memory leak problem with local variables in functions fixed.
01-01-25 +allow arithmetic expressions with float%int and treat them 01-01-25 +allow arithmetic expressions with float%int and treat them
as ((int)float)%int rather than as an error. as ((int)float)%int rather than as an error.
01-01-19 read -n1 was not working and has been fixed. 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 01-01-17 +ksh now handles the case in which a here document in command
substitution $() is terminated by the trailing ). Previously, substitution $() is terminated by the trailing ). Previously,
a new-line was needed at the end of the delimiter word. 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 01-01-02 A bug in which a KEYBD trap would cause a multi-line token
to be processed incorrectly has been fixed. to be processed incorrectly has been fixed.
00-12-10 +Arithmetic integer constants can now have L and U suffices. 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 00-12-10 A bug in the processing of arithmetic expressions with compound
variables when the -n option is on has been fixed. 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 00-12-08 A bug in M-f and M-b from emacs mode has been fixed. This
@ -2641,10 +2641,10 @@
R replace directive in vi-mode has been fixed. R replace directive in vi-mode has been fixed.
00-06-12 +Added variable name completion/expansion/listing to the set of 00-06-12 +Added variable name completion/expansion/listing to the set of
completions. Variable name completions begin with $ or "$ followed completions. Variable name completions begin with $ or "$ followed
by a letter. by a letter.
00-05-09 --- Release ksh93j --- 00-05-09 --- Release ksh93j ---
00-05-09 Modified command substitution to avoid using /tmp files when 00-05-09 Modified command substitution to avoid using /tmp files when
run on read-only file systems. run on read-only file systems.
00-04-17 +Modified printf to handle '%..Xc' and '%..Xs' options where X 00-04-17 +Modified printf to handle '%..Xc' and '%..Xs' options where X
is not an alpha character. Previous versions core dumped with this. is not an alpha character. Previous versions core dumped with this.
00-04-10 +Changes to multibyte editing code were made to use standard 00-04-10 +Changes to multibyte editing code were made to use standard
@ -2662,11 +2662,11 @@
00-03-28 A bug in which the set and trap commands invoked with --name 00-03-28 A bug in which the set and trap commands invoked with --name
type arguments would terminate the invoking script has type arguments would terminate the invoking script has
been fixed. been fixed.
00-03-27 A bug in which the library path variable was not updated 00-03-27 A bug in which the library path variable was not updated
correctly on some systems as described in the 'g' point correctly on some systems as described in the 'g' point
release has been fixed. release has been fixed.
00-03-07 printf now returns a non-zero exit status when one of 00-03-07 printf now returns a non-zero exit status when one of
its arguments cannot be converted to the given type. its arguments cannot be converted to the given type.
00-03-05 The return value and error message for a command that 00-03-05 The return value and error message for a command that
was found on the path but was not executable was set was found on the path but was not executable was set
incorrectly. incorrectly.
@ -2706,7 +2706,7 @@
99-03-31 A bug in shcomp for compilation of unary operators with [[...]] 99-03-31 A bug in shcomp for compilation of unary operators with [[...]]
has been fixed. has been fixed.
99-03-31 A bug in which the value of $? was changed when executing 99-03-31 A bug in which the value of $? was changed when executing
a keyboard trap has been fixed. a keyboard trap has been fixed.
99-03-31 The handling of SIGCHLD has been changed so that the 99-03-31 The handling of SIGCHLD has been changed so that the
trap is not triggered while executing trap commands trap is not triggered while executing trap commands
to avoid recursive trap calls. to avoid recursive trap calls.
@ -2752,7 +2752,7 @@
evaluation has been fixed. evaluation has been fixed.
98-04-30 A bug when a name reference with a shorter name than 98-04-30 A bug when a name reference with a shorter name than
the variable it references was the subject of a compound the variable it references was the subject of a compound
assignment has been fixed. assignment has been fixed.
98-04-30 A bug which in which assignment to array variables in 98-04-30 A bug which in which assignment to array variables in
a subshell could effect the parent shell has been a subshell could effect the parent shell has been
fixed. fixed.
@ -2767,7 +2767,7 @@
fixed. fixed.
98-04-30 The default base when not specified with typeset -i is 98-04-30 The default base when not specified with typeset -i is
10 in accordance with the documentation. Previously, 10 in accordance with the documentation. Previously,
the value was determined by the first assignment. the value was determined by the first assignment.
98-04-30 A parsing bug in which a # preceded alphanumeric 98-04-30 A parsing bug in which a # preceded alphanumeric
characters inside a command substitution caused characters inside a command substitution caused
a syntax error to be reported has been fixed. a syntax error to be reported has been fixed.
@ -2849,7 +2849,7 @@
has been revamped. has been revamped.
96-07-31 Empty command substitutions of the form $() now work. 96-07-31 Empty command substitutions of the form $() now work.
whence -v foo now gives the correct result after calling whence -v foo now gives the correct result after calling
builtin -d foo. builtin -d foo.
96-07-31 A bug in right to left arithmetic assignment for which 96-07-31 A bug in right to left arithmetic assignment for which
the arithmetic expression (( y = x = 1.5 )) did not the arithmetic expression (( y = x = 1.5 )) did not
yield 1 for y when x was declared typeset -i was fixed. yield 1 for y when x was declared typeset -i was fixed.
@ -2960,7 +2960,7 @@
95-04-31 Variables that were unset but had attributes such as readonly 95-04-31 Variables that were unset but had attributes such as readonly
and export were not listed with readonly, export and typeset. and export were not listed with readonly, export and typeset.
95-04-31 Several problems with signals have been fixed. 95-04-31 Several problems with signals have been fixed.
95-04-31 A bug which prevented ulimit -t from working has 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 Also, a bug in which failed ulimits could cause a core dump
has also been fixed. has also been fixed.
95-04-31 A bug in expansion of the form ${name/#pattern/string} and 95-04-31 A bug in expansion of the form ${name/#pattern/string} and
@ -3072,7 +3072,7 @@
94-06-30 If foo is a function, and not a program, then command foo 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. now reports that foo isn't found rather than invoking foo.
94-06-30 The previous version incorrectly listed -A as an 94-06-30 The previous version incorrectly listed -A as an
invocation option. The -A option is only for set. invocation option. The -A option is only for set.
94-06-30 A bug was fixed which caused ksh to loop when execution trace 94-06-30 A bug was fixed which caused ksh to loop when execution trace
was enabled and the PS4 prompt required command substitution. was enabled and the PS4 prompt required command substitution.
94-06-30 A bug which could cause the job control switch character 94-06-30 A bug which could cause the job control switch character

View file

@ -3,7 +3,7 @@ of ksh.
1. New features in 12/28/93 1. New features in 12/28/93
a. Associative arrays. The new version of ksh supports both a. Associative arrays. The new version of ksh supports both
associate arrays and the older indexed arrays with the same associative arrays and the older indexed arrays with the same
array syntax. A new -A option of typeset is used to declare array syntax. A new -A option of typeset is used to declare
an array to be associative. As with indexed arrays, $name is an array to be associative. As with indexed arrays, $name is
equivalent to ${name[0]}. The prefix operator ! was added equivalent to ${name[0]}. The prefix operator ! was added
@ -72,10 +72,10 @@ of ksh.
assignment_list can be one of the following: assignment_list can be one of the following:
1. A list of words. In this case each word is expanded as 1. A list of words. In this case each word is expanded as
in a for list and the resulting items become elements in a for list and the resulting items become elements
of the indexed array varname. of the indexed array varname.
2. A list of subscript assignments in the form 2. A list of subscript assignments in the form
[subscript]=value. In this, these elements become [subscript]=value. In this, these elements become
elements of the associative array varname. elements of the associative array varname.
3. A list of assignments; simple or compound. In this 3. A list of assignments; simple or compound. In this
case, each assignment is made to varname.name, where case, each assignment is made to varname.name, where
name is the name of the enclosed assignment. name is the name of the enclosed assignment.
@ -103,7 +103,7 @@ of ksh.
h. On systems that support dynamic loading with dlopen(), it is h. On systems that support dynamic loading with dlopen(), it is
now possible to add built-in commands at runtime with the now possible to add built-in commands at runtime with the
a builtin command named builtin. a builtin command named builtin.
i. The following builtins have been added: i. The following builtins have been added:
1. command name [ ... ] 1. command name [ ... ]
@ -314,7 +314,7 @@ of ksh.
n. The trap command has been changed as follows: n. The trap command has been changed as follows:
1. Trap names can be either upper case or lower case. 1. Trap names can be either upper case or lower case.
2. Trap -p cause only the specified trap values to be displayed. 2. Trap -p only causes the specified trap values to be displayed.
3. The value of trap in a subshell will be the value in the parent 3. The value of trap in a subshell will be the value in the parent
shell until a call to trap which changes the trap settings has shell until a call to trap which changes the trap settings has
been made. Thus, savetraps=$(trap) works as required by the been made. Thus, savetraps=$(trap) works as required by the
@ -339,7 +339,7 @@ of ksh.
uses for the given command name to be reported. uses for the given command name to be reported.
u. unalias has -a option to clear all the aliases. u. unalias has -a option to clear all the aliases.
v. The times built-in command has been removed. The time v. The times built-in command has been removed. The time
reserved word, without a command, gives time cumulative reserved word, without a command, gives time cumulative
time for the shell and its children. A built-in alias time for the shell and its children. A built-in alias

View file

@ -1,5 +1,5 @@
This is a list of changes that have been made since the 12/28/93 version This is a list of changes that have been made since the 12/28/93 version
of ksh. of ksh.
1. New features in 12/28/93b 1. New features in 12/28/93b
a. If IFS contains two consecutive identical characters belonging a. If IFS contains two consecutive identical characters belonging
@ -65,7 +65,7 @@ of ksh.
f. If foo is a function, and not a program, then command foo f. If foo is a function, and not a program, then command foo
now reports that foo isn't found rather than invoking foo. now reports that foo isn't found rather than invoking foo.
g. The previous version incorrectly listed -A as an g. The previous version incorrectly listed -A as an
invocation option. The -A option is only for set. invocation option. The -A option is only for set.
h. A bug was fixed which caused ksh to loop when execution trace h. A bug was fixed which caused ksh to loop when execution trace
was enabled and the PS4 prompt required command substitution. was enabled and the PS4 prompt required command substitution.
i. A bug which could cause the job control switch character i. A bug which could cause the job control switch character
@ -179,7 +179,7 @@ of ksh.
n. Variables that were unset but had attributes such as readonly n. Variables that were unset but had attributes such as readonly
and export were not listed with readonly, export and typeset. and export were not listed with readonly, export and typeset.
o. Several problems with signals have been fixed. o. Several problems with signals have been fixed.
p. A bug which prevented ulimit -t from working has been fixed. p. A bug which prevented ulimit -t from working has been fixed.
Also, a bug in which failed ulimits could cause a core dump Also, a bug in which failed ulimits could cause a core dump
has also been fixed. has also been fixed.
q. A bug in expansion of the form ${name/#pattern/string} and q. A bug in expansion of the form ${name/#pattern/string} and
@ -225,7 +225,7 @@ of ksh.
11. Bugs fixed in 12/28/93e for default OPTIONS 11. Bugs fixed in 12/28/93e for default OPTIONS
a. Empty command substitutions of the form $() now work. a. Empty command substitutions of the form $() now work.
b. whence -v foo now gives the correct result after calling b. whence -v foo now gives the correct result after calling
builtin -d foo. builtin -d foo.
c. A bug in right to left arithmetic assignment for which c. A bug in right to left arithmetic assignment for which
the arithmetic expression (( y = x = 1.5 )) did not the arithmetic expression (( y = x = 1.5 )) did not
yield 1 for y when x was declared typeset -i was fixed. yield 1 for y when x was declared typeset -i was fixed.
@ -247,7 +247,7 @@ of ksh.
j. A bug that caused side effects in subscript evaluation j. A bug that caused side effects in subscript evaluation
when tracing was enabled for subscripts using ++ or -- when tracing was enabled for subscripts using ++ or --
has been fixed. has been fixed.
k. To conform to the Posix standard getopts has been changed k. To conform to the POSIX standard getopts has been changed
so that the option char is set to ? when it returns with so that the option char is set to ? when it returns with
a non-zero exit status. a non-zero exit status.
l. The handling of \} inside ${name...} has been fixed so l. The handling of \} inside ${name...} has been fixed so
@ -333,7 +333,7 @@ of ksh.
evaluation has been fixed. evaluation has been fixed.
d. A bug when a name reference with a shorter name than d. A bug when a name reference with a shorter name than
the variable it references was the subject of a compound the variable it references was the subject of a compound
assignment has been fixed. assignment has been fixed.
e. A bug which in which assignment to array variables in e. A bug which in which assignment to array variables in
a subshell could effect the parent shell has been a subshell could effect the parent shell has been
fixed. fixed.
@ -348,7 +348,7 @@ of ksh.
fixed. fixed.
m. The default base when not specified with typeset -i is m. The default base when not specified with typeset -i is
10 in accordance with the documentation. Previously, 10 in accordance with the documentation. Previously,
the value was determined by the first assignment. the value was determined by the first assignment.
n. A parsing bug in which a # preceded alphanumeric n. A parsing bug in which a # preceded alphanumeric
characters inside a command substitution caused characters inside a command substitution caused
a syntax error to be reported has been fixed. a syntax error to be reported has been fixed.
@ -362,7 +362,7 @@ of ksh.
a. I bug in shcomp for compilation of unary operators with [[...]] a. I bug in shcomp for compilation of unary operators with [[...]]
has been fixed. has been fixed.
b. A bug in which the value of $? was changed when executing b. A bug in which the value of $? was changed when executing
a keyboard trap has been fixed. a keyboard trap has been fixed.
c. The handling of SIGCHLD has been changed so that the c. The handling of SIGCHLD has been changed so that the
trap is not triggered while executing trap commands trap is not triggered while executing trap commands
to avoid recursive trap calls. to avoid recursive trap calls.
@ -449,7 +449,7 @@ of ksh.
or built-in. or built-in.
k. A callback function can be installed which will give k. A callback function can be installed which will give
notification of file duplications and file closes. notification of file duplications and file closes.
18. Incompatibilities with 12/28/93 version. 18. Incompatibilities with 12/28/93 version.
None intentional. None intentional.

View file

@ -92,7 +92,7 @@ can be used. Unlike (and ) which are always special, the { and } are
reserved words and require the space after { and a newline or ; before }. reserved words and require the space after { and a newline or ; before }.
Unlike $(), the ${ ;} command substitution executes the command in Unlike $(), the ${ ;} command substitution executes the command in
the current shell context saving the need to save and restore the current shell context saving the need to save and restore
changes, therefore also allowing side effects. changes, therefore also allowing side effects.
When trying to expand an element of a type, if the element does not exist, When trying to expand an element of a type, if the element does not exist,
ksh will look for a discipline function with that name and treat this as if ksh will look for a discipline function with that name and treat this as if

View file

@ -464,7 +464,7 @@ be freed before returning from you built-in, because by default,
\f5ksh\fP will terminate you built-in in the event of an \f5ksh\fP will terminate you built-in in the event of an
interrupt and the memory will not be freed. interrupt and the memory will not be freed.
.P .P
The best way to to allocate variable sized storage is The best way to allocate variable sized storage is
through calls to the \fBstak\fP library through calls to the \fBstak\fP library
which is included in \fBlibast\fP which is included in \fBlibast\fP
and which is used extensively by \f5ksh\fP itself. and which is used extensively by \f5ksh\fP itself.

View file

@ -292,7 +292,7 @@ int ed_viread(void *context, int fd, register char *shbuf, int nchar, int reedit
{ {
register int c = shbuf[0]; register int c = shbuf[0];
/*** Save and remove the last character if its an eol, ***/ /*** Save and remove the last character if it's an eol, ***/
/* changing '\r' to '\n' */ /* changing '\r' to '\n' */
if( i == 0 ) if( i == 0 )

View file

@ -93,7 +93,7 @@ command interpreter
.if \nZ=0 .IR sh ; .if \nZ=0 .IR sh ;
.if \nZ=1 .IR ksh ; .if \nZ=1 .IR ksh ;
.if \nZ=2 .IR ksh93 ; .if \nZ=2 .IR ksh93 ;
it is used to to execute commands with the attributes specified by it is used to execute commands with the attributes specified by
the user's profiles (see the user's profiles (see
.IR pfexec (1)). .IR pfexec (1)).
See See
@ -106,7 +106,7 @@ A
is one of the following characters: is one of the following characters:
.PP .PP
.RS .RS
\f3; & ( ) \(bv < > new-line space tab\fP \f3; & ( ) | < > new-line space tab\fP
.RE .RE
.PP .PP
A A
@ -197,7 +197,7 @@ A
is a sequence of one or more is a sequence of one or more
.I commands\^ .I commands\^
separated by separated by
.BR \(bv . .BR | .
The standard output of each command but the last The standard output of each command but the last
is connected by a is connected by a
.IR pipe (2) .IR pipe (2)
@ -224,29 +224,29 @@ pipelines
separated by separated by
.BR ; , .BR ; ,
.BR & , .BR & ,
.BR \(bv& , .BR |& ,
.BR && , .BR && ,
or or
.BR \(bv\|\(bv , .BR |\|| ,
and optionally terminated by and optionally terminated by
.BR ; , .BR ; ,
.BR & , .BR & ,
or or
.BR \(bv& . .BR |& .
Of these five symbols, Of these five symbols,
.BR ; , .BR ; ,
.BR & , .BR & ,
and and
.B \(bv& .B |&
have equal precedence, have equal precedence,
which is lower than that of which is lower than that of
.B && .B &&
and and
.BR \(bv\|\(bv . .BR |\|| .
The symbols The symbols
.B && .B &&
and and
.B \(bv\|\(bv .B |\||
also have equal precedence. also have equal precedence.
A semicolon A semicolon
.RB ( ; ) .RB ( ; )
@ -256,7 +256,7 @@ causes asynchronous execution of the preceding pipeline (i.e., the shell does
.I not\^ .I not\^
wait for that pipeline to finish). wait for that pipeline to finish).
The symbol The symbol
.B \(bv& .B |&
causes asynchronous execution of the preceding pipeline causes asynchronous execution of the preceding pipeline
with a two-way pipe established to the parent shell; with a two-way pipe established to the parent shell;
the standard input and output of the spawned pipeline the standard input and output of the spawned pipeline
@ -278,7 +278,7 @@ and
described later. described later.
The symbol The symbol
.B && .B &&
.RB (\| \(bv\|\(bv \^) .RB (\| |\|| \^)
causes the causes the
.I list\^ .I list\^
following it to be executed only if the preceding following it to be executed only if the preceding
@ -421,7 +421,7 @@ displaying the
.B PS3 .B PS3
prompt for the next selection. prompt for the next selection.
.TP .TP
\f3case\fP \f2word\^\fP \f3in\fP \*(OK \*(OK\f3(\fP\*(CK\f2pattern\^\fP \*(OK \(bv \f2pattern\^\fP \*(CK .\|.\|. \f3)\fP \f2list\^\fP \f3;;\fP \*(CK .\|.\|. \f3esac\fP \f3case\fP \f2word\^\fP \f3in\fP \*(OK \*(OK\f3(\fP\*(CK\f2pattern\^\fP \*(OK | \f2pattern\^\fP \*(CK .\|.\|. \f3)\fP \f2list\^\fP \f3;;\fP \*(CK .\|.\|. \f3esac\fP
A A
.B case .B case
command executes the command executes the
@ -945,7 +945,7 @@ is a
.IR variable , .IR variable ,
one or more digits, one or more digits,
or any of the characters or any of the characters
.BR \(** , .BR * ,
.BR @ , .BR @ ,
.BR # , .BR # ,
.BR ? , .BR ? ,
@ -1164,7 +1164,7 @@ enclosed in braces.
If If
.I parameter\^ .I parameter\^
is is
.B \(** .B *
or or
.BR @ , .BR @ ,
then all the positional then all the positional
@ -1175,7 +1175,7 @@ are substituted
If an array If an array
.I vname\^ .I vname\^
with last subscript with last subscript
.B \(** .B *
.BR @ , .BR @ ,
or for index arrays of the form or for index arrays of the form
.I sub1\^ .I sub1\^
@ -1189,7 +1189,7 @@ elements between
and and
.I sub2\^ .I sub2\^
inclusive (or all elements for inclusive (or all elements for
.B \(** .B *
and and
.BR @ ) .BR @ )
is substituted, is substituted,
@ -1203,7 +1203,7 @@ the value of
If If
.I parameter\^ .I parameter\^
is is
.B \(** .B *
or or
.BR @ , .BR @ ,
the number of positional parameters is substituted. the number of positional parameters is substituted.
@ -1362,11 +1362,11 @@ to prevent the shell from interpreting the operator as
If If
.I parameter\^ .I parameter\^
is is
.B \(** .B *
or or
.BR @ , .BR @ ,
or is an array name indexed by or is an array name indexed by
.B \(** .B *
or or
.BR @ , .BR @ ,
then then
@ -1379,7 +1379,7 @@ A negative
.I offset\^ .I offset\^
is taken relative to one greater than the highest subscript is taken relative to one greater than the highest subscript
for indexed arrays. for indexed arrays.
The order for associate arrays is unspecified. The order for associative arrays is unspecified.
.TP .TP
.PD 0 .PD 0
\f3${\fP\f2parameter\^\fP\f3#\fP\f2pattern\^\fP\f3}\fP \f3${\fP\f2parameter\^\fP\f3#\fP\f2pattern\^\fP\f3}\fP
@ -1911,7 +1911,7 @@ The first character of the
.B IFS .B IFS
variable is used to separate arguments for the variable is used to separate arguments for the
.B .B
"$\(**" "$*"
substitution (see substitution (see
.I Quoting .I Quoting
below). below).
@ -2395,7 +2395,7 @@ and
.BR z04cx . .BR z04cx .
.SS File Name Generation. .SS File Name Generation.
Following splitting, each field is scanned for the characters Following splitting, each field is scanned for the characters
.BR \(** , .BR * ,
.BR ? , .BR ? ,
.BR ( , .BR ( ,
and and
@ -2451,14 +2451,13 @@ are not treated specially.
.PD 0 .PD 0
.RS .RS
.TP .TP
.B \(** .B *
Matches any string, including the null string. Matches any string, including the null string.
When used for filename expansion, When used for filename expansion,
if the if the
.B globstar .B globstar
option is on, two adjacent option is on, an isolated pattern of two adjacent
.BR \(** 's .BR * 's
by itself
will match all files and zero or more directories will match all files and zero or more directories
and subdirectories. and subdirectories.
If followed by a If followed by a
@ -2522,11 +2521,11 @@ is a list of one or more patterns separated from each other
with a with a
.B & .B &
or or
.BR \(bv . .BR | .
A A
.B & .B &
signifies that all patterns must be matched whereas signifies that all patterns must be matched whereas
.BR \(bv .BR |
requires that only one pattern be matched. requires that only one pattern be matched.
Composite patterns can be formed with one or more of the following sub-patterns: Composite patterns can be formed with one or more of the following sub-patterns:
.PD 0 .PD 0
@ -2603,7 +2602,7 @@ Each
is a two character sequence which cannot contain is a two character sequence which cannot contain
.B & .B &
or or
.BR \(bv . .BR | .
The first The first
.I pattern-pair\^ .I pattern-pair\^
specifies the starting and ending characters for the match. specifies the starting and ending characters for the match.
@ -2810,14 +2809,14 @@ in front of a double quoted string will be ignored
in the "C" or "POSIX" locale, and may cause in the "C" or "POSIX" locale, and may cause
the string to be replaced by a locale specific string otherwise. the string to be replaced by a locale specific string otherwise.
The meaning of The meaning of
.B "$\(**" .B "$*"
and and
.B "$@" .B "$@"
is identical when not quoted or when used as a variable assignment value is identical when not quoted or when used as a variable assignment value
or as a file name. or as a file name.
However, when used as a command argument, However, when used as a command argument,
.B .B
"$\(**" "$*"
is equivalent to is equivalent to
\f3"$1\fP\f2d\fP\f3\|$2\fP\f2d\fP\|.\|.\|.\f3"\fP, \f3"$1\fP\f2d\fP\f3\|$2\fP\f2d\fP\|.\|.\|.\f3"\fP,
where where
@ -2918,7 +2917,7 @@ can be used within an arithmetic expression:
.if n abs acos acosh asin asinh atan atan2 atanh cbrt ceil copysign cos cosh erf erfc exp exp2 expm1 fabs fpclassify fdim finite floor fma fmax fmin fmod hypot ilogb int isfinite sinf isnan isnormal issubnormal issubordered iszero j0 j1 jn lgamma log log10 log2 logb nearbyint nextafter nexttoward pow remainder rint round scanb signbit sin sinh sqrt tan tanh tgamma trunc y0 y1 yn .if n abs acos acosh asin asinh atan atan2 atanh cbrt ceil copysign cos cosh erf erfc exp exp2 expm1 fabs fpclassify fdim finite floor fma fmax fmin fmod hypot ilogb int isfinite sinf isnan isnormal issubnormal issubordered iszero j0 j1 jn lgamma log log10 log2 logb nearbyint nextafter nexttoward pow remainder rint round scanb signbit sin sinh sqrt tan tanh tgamma trunc y0 y1 yn
.if t abs acos acosh asin asinh atan atan2 atanh cbrt ceil copysign cos cosh erf erfc exp exp2 expm1 fabs fpclassify fdim finite floor fma fmax fmod j0 j1 jn hypot ilogb int isfinite isinf isnan isnormal issubnormal issubordered iszero lgamma log log10 log2 logb nearbyint nextafter nexttoward pow rint round scalb signbit sin sinh sqrt tan tanh tgamma trunc y0 y1 yn .if t abs acos acosh asin asinh atan atan2 atanh cbrt ceil copysign cos cosh erf erfc exp exp2 expm1 fabs fpclassify fdim finite floor fma fmax fmod j0 j1 jn hypot ilogb int isfinite isinf isnan isnormal issubnormal issubordered iszero lgamma log log10 log2 logb nearbyint nextafter nexttoward pow rint round scalb signbit sin sinh sqrt tan tanh tgamma trunc y0 y1 yn
.if t .RE .if t .RE
In addition, arithmetic functions can be define as shell functions with a In addition, arithmetic functions can be defined as shell functions with a
variant of the variant of the
.B function .B function
.I name\^ .I name\^
@ -2961,7 +2960,7 @@ option causes the expansion to be represented as a floating decimal number
when it is expanded. when it is expanded.
The The
.B \-X .B \-X
option cause the expansion to be represented using the option causes the expansion to be represented using the
.B %a .B %a
format defined by ISO C-99. format defined by ISO C-99.
The optional option argument The optional option argument
@ -3324,7 +3323,7 @@ and
.I expression2\^ .I expression2\^
are both true. are both true.
.TP .TP
\f2expression1\fP \f3\(bv\(bv\fP \f2expression2\fP \f2expression1\fP \f3||\fP \f2expression2\fP
True, if either True, if either
.I expression1\^ .I expression1\^
or or
@ -4426,7 +4425,7 @@ or commands that match a partially entered word.
When applied to the first word on the line, When applied to the first word on the line,
or the first word after a or the first word after a
.BR ; , .BR ; ,
.BR \(bv , .BR | ,
.BR & , .BR & ,
or or
.BR ( , .BR ( ,
@ -5093,7 +5092,7 @@ Cursor backward one word.
[\f2count\fP]\f3B\fP [\f2count\fP]\f3B\fP
Cursor to preceding blank separated word. Cursor to preceding blank separated word.
.TP 10 .TP 10
[\f2count\fP]\f3\(bv\fP [\f2count\fP]\f3|\fP
Cursor to column Cursor to column
.IR count . .IR count .
.TP 10 .TP 10
@ -5627,7 +5626,7 @@ A built-in specified by a pathname will only be executed when that pathname
would be found during the path search. Built-ins found in libraries loaded would be found during the path search. Built-ins found in libraries loaded
via the via the
.B .paths .B .paths
file will be associate with the pathname of the directory containing the file will associate with the pathname of the directory containing the
.B .paths .B .paths
file. file.
.P .P
@ -5955,7 +5954,7 @@ Does nothing, and exits 1. Used with
for infinite loops. for infinite loops.
.TP .TP
.PD 0 .PD 0
\f3fc\fP \*(OK \f3\-e\fP \f2ename\^\fP \ \*(CK \*(OK \f3\-nlr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK \f3fc\fP \*(OK \f3\-e\fP \f2ename\^\fP \ \*(CK \*(OK \f3\-N\fP \f2num\^\fP \*(CK \*(OK \f3\-nlr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK
.TP .TP
\f3fc \-s \fP \*(OK \f2old\fP\f3\=\fP\f2new\^\fP \*(CK \*(OK \f2command\^\fP \*(CK \f3fc \-s \fP \*(OK \f2old\fP\f3\=\fP\f2new\^\fP \*(CK \*(OK \f2command\^\fP \*(CK
.PD .PD
@ -6124,7 +6123,7 @@ option empties the hash table. This can also be achieved by resetting
.BR PATH. .BR PATH.
.TP .TP
.PD 0 .PD 0
\f3hist\fP \*(OK \f3\-e\fP \f2ename\^\fP \ \*(CK \*(OK \f3\-nlr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK \f3hist\fP \*(OK \f3\-e\fP \f2ename\^\fP \ \*(CK \*(OK \f3\-N\fP \f2num\^\fP \*(CK \*(OK \f3\-nlr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK
.TP .TP
\f3hist \-s \fP \*(OK \f2old\fP\f3\=\fP\f2new\^\fP \*(CK \*(OK \f2command\^\fP \*(CK \f3hist \-s \fP \*(OK \f2old\fP\f3\=\fP\f2new\^\fP \*(CK \*(OK \f2command\^\fP \*(CK
.PD .PD
@ -6197,8 +6196,15 @@ The resulting command is executed
after the optional substitution after the optional substitution
\f2old\^\fP\f3=\fP\f2new\^\fP \f2old\^\fP\f3=\fP\f2new\^\fP
is performed. is performed.
The option
.B \-N
causes
.BR hist
to start
.I num
commands back.
.TP .TP
\f3history\fP \*(OK \f3\-nr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK \f3history\fP \*(OK \f3\-N\fP \f2num\^\fP \*(CK \*(OK \f3\-nr\^\fP \*(CK \*(OK \f2first\^\fP \*(OK \f2last\^\fP \*(CK \*(CK
Lists commands in the history file. Lists commands in the history file.
The same as The same as
.BR hist\ \-l . .BR hist\ \-l .
@ -6408,7 +6414,7 @@ The
option causes the option causes the
arguments to be written onto the pipe arguments to be written onto the pipe
of the process spawned with of the process spawned with
.B \(bv& .B |&
instead of standard output. instead of standard output.
The The
.B \-v .B \-v
@ -6704,7 +6710,7 @@ option causes the input line
to be taken from the input pipe to be taken from the input pipe
of a process spawned by the shell of a process spawned by the shell
using using
.BR \(bv& . .BR |& .
If the If the
.B \-s .B \-s
option is present, option is present,
@ -6834,10 +6840,6 @@ is used, the variable
is not unset first. is not unset first.
.TP 8 .TP 8
.B \-B .B \-B
Enable brace pattern field generation.
This is the default behavior.
.TP 8
.B \-B
Enable brace group expansion. On by default. Enable brace group expansion. On by default.
.TP 8 .TP 8
.B \-C .B \-C
@ -6846,12 +6848,12 @@ Prevents redirection
from truncating existing files. from truncating existing files.
Files that are created are opened with the O_EXCL mode. Files that are created are opened with the O_EXCL mode.
Requires Requires
.B >\(bv .B >|
to truncate a file when turned on. to truncate a file when turned on.
.TP 8 .TP 8
.B \-G .B \-G
Causes the pattern Causes the pattern
.B \(**\(** .B **
by itself to match files and zero or more directories and sub-directories by itself to match files and zero or more directories and sub-directories
when used for file name generation. when used for file name generation.
If followed by a If followed by a
@ -6872,7 +6874,7 @@ state rather than waiting for the next prompt.
.TP 8 .TP 8
.B \-e .B \-e
Unless contained in a Unless contained in a
.B \(bv\(bv .B ||
or or
.B && .B &&
command, or the command following an command, or the command following an
@ -7082,7 +7084,7 @@ Sort the positional parameters lexicographically.
Treat unset parameters as an error when substituting. Treat unset parameters as an error when substituting.
.B "$@" .B "$@"
and and
.B "$\(**" .B "$*"
are exempt. are exempt.
.TP 8 .TP 8
.B \-v .B \-v
@ -7148,10 +7150,22 @@ can be any arithmetic expression that evaluates to a non-negative
number less than or equal to number less than or equal to
.BR $# . .BR $# .
.TP .TP
\f3sleep\fP \f2seconds\^\fP \f3sleep\fP \*(OK \f3\-s\^\fP \*(CK \f2duration\^\fP
Suspends execution for the number of decimal seconds or fractions of a Suspends execution for the number of decimal seconds or fractions of a
second given by second given by
.IR seconds . .IR duration .
.I duration
can be an integer, floating point value or ISO 8601 duration specifying
the length of time to sleep.
The option
.B \-s
causes the sleep builtin to terminate when it receives any signal.
If
.I duration
is not specified in conjunction with
.BR \-s ,
.BR sleep
will wait for a signal indefinitely.
.TP .TP
\f3source\fP \f2name\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK \f3source\fP \f2name\^\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK
Same as Same as
@ -7314,7 +7328,7 @@ Does nothing, and exits 0. Used with
.B while .B while
for infinite loops. for infinite loops.
.TP .TP
\f3type\fP \*(OK \f3\-afp\fP \*(CK \f2name\^\fP .\|.\|. \f3type\fP \*(OK \f3\-afpq\fP \*(CK \f2name\^\fP .\|.\|.
The same as The same as
.BR whence\ \-v . .BR whence\ \-v .
.TP .TP
@ -7699,7 +7713,7 @@ that have attributes
are printed. are printed.
.RE .RE
.TP .TP
\f3ulimit\fP \*(OK \f3\-HSacdfmnpstv\fP \*(CK \*(OK \f2limit\^\fP \*(CK \f3ulimit\fP \*(OK \f3\-HSaMctdfxlqenupmrbiswTv\fP \*(CK \*(OK \f2limit\^\fP \*(CK
Set or display a resource limit. Set or display a resource limit.
The available resource limits are listed below. The available resource limits are listed below.
Many systems do not support one or more of these limits. Many systems do not support one or more of these limits.
@ -7738,16 +7752,31 @@ name and unit is printed before the value.
.B \-a .B \-a
Lists all of the current resource limits. Lists all of the current resource limits.
.TP .TP
.B \-b
The socket buffer size in bytes.
.TP
.B \-c .B \-c
The number of 512-byte blocks on the size of core dumps. The number of 512-byte blocks on the size of core dumps.
.TP .TP
.B \-d .B \-d
The number of K-bytes on the size of the data area. The number of K-bytes on the size of the data area.
.TP .TP
.B \-e
The scheduling priority.
.TP
.B \-f .B \-f
The number of 512-byte blocks on files that can be written by the The number of 512-byte blocks on files that can be written by the
current process or by child processes (files of any size may be read). current process or by child processes (files of any size may be read).
.TP .TP
.B \-i
The signal queue size.
.TP
.B \-l
The locked address space in K-bytes.
.TP
.B \-M
The address space limit in K-bytes.
.TP
.B \-m .B \-m
The number of K-bytes on the size of physical memory. The number of K-bytes on the size of physical memory.
.TP .TP
@ -7757,14 +7786,32 @@ The number of file descriptors plus 1.
.B \-p .B \-p
The number of 512-byte blocks for pipe buffering. The number of 512-byte blocks for pipe buffering.
.TP .TP
.B \-q
The message queue size in K-bytes.
.TP
.B \-r
The max real time priority.
.TP
.B \-s .B \-s
The number of K-bytes on the size of the stack area. The number of K-bytes on the size of the stack area.
.TP .TP
.B \-T
The number of threads.
.TP
.B \-t .B \-t
The number of CPU seconds to be used by each process. The number of CPU seconds to be used by each process.
.TP .TP
.B \-u
The number of processes.
.TP
.B \-v .B \-v
The number of K-bytes for virtual memory. The number of K-bytes for virtual memory.
.TP
.B \-w
The swap size in K-bytes.
.TP
.B \-x
The number of file locks.
.PD .PD
.PP .PP
If no option is given, If no option is given,
@ -7879,7 +7926,7 @@ See
for a description of the format of for a description of the format of
.IR job . .IR job .
.TP .TP
\f3whence\fP \*(OK \f3\-afpv\fP \*(CK \f2name\^\fP .\|.\|. \f3whence\fP \*(OK \f3\-afpqv\fP \*(CK \f2name\^\fP .\|.\|.
For each For each
.IR name , .IR name ,
indicate how it indicate how it
@ -7904,6 +7951,14 @@ option turns off the
.B \-v .B \-v
option. option.
The The
.B \-q
option causes
.BR whence
to enter quiet mode.
.BR whence
will return zero if all arguments are built-ins, functions, or
are programs found on the path.
The
.B \-a .B \-a
option option
is similar to the is similar to the
@ -8247,7 +8302,7 @@ command to correct this situation.
Some very old shell scripts contain a Some very old shell scripts contain a
.B ^ .B ^
as a synonym for the pipe character as a synonym for the pipe character
.BR \(bv . .BR | .
.PP .PP
Using the Using the
.B hist\^ .B hist\^

View file

@ -3522,7 +3522,7 @@ void nv_setref(register Namval_t *np, Dt_t *hp, int flags)
/* /*
* get the scope corresponding to <index> * get the scope corresponding to <index>
* whence uses the same values as lseeek() * whence uses the same values as lseek()
*/ */
Shscope_t *sh_getscope(int index, int whence) Shscope_t *sh_getscope(int index, int whence)
{ {

View file

@ -3024,7 +3024,7 @@ Sfdouble_t sh_mathfun(Shell_t *shp,void *fp, int nargs, Sfdouble_t *arg)
/* /*
* This routine is used to execute the given function <fun> in a new scope * This routine is used to execute the given function <fun> in a new scope
* If <fun> is NULL, then arg points to a structure containing a pointer * If <fun> is NULL, then arg points to a structure containing a pointer
* to a function that will be executed in the current environment. * to a function that will be executed in the current environment.
*/ */
int sh_funscope(int argn, char *argv[],int(*fun)(void*),void *arg,int execflg) int sh_funscope(int argn, char *argv[],int(*fun)(void*),void *arg,int execflg)
{ {

View file

@ -601,7 +601,7 @@ then actual=$(
"(expected $(printf %q "$expect"), got $(printf %q "$actual"))" "(expected $(printf %q "$expect"), got $(printf %q "$actual"))"
fi fi
#"====== # ======
# Expansion of multibyte characters after expansion of single-character names $1..$9, $?, $!, $-, etc. # Expansion of multibyte characters after expansion of single-character names $1..$9, $?, $!, $-, etc.
function exptest function exptest
{ {

View file

@ -34,7 +34,7 @@ hash: generic, scoped hash table support
include/ast: libast support headers include/ast: libast support headers
align.h compile time type alignmnent support align.h compile time type alignment support
dirent.h POSIX directory(3) interface definitions dirent.h POSIX directory(3) interface definitions
error.h error() interface definitions error.h error() interface definitions
ftw.h ftwalk() interface definitions ftw.h ftwalk() interface definitions

View file

@ -1,7 +1,7 @@
12-07-25 pathprobe.c: fix read() loop to handle EINTR 12-07-25 pathprobe.c: fix read() loop to handle EINTR
12-06-28 vmalloc/malloc.c: use sbrk() unless VMALLOC_OPTIONS=mmap or asoinit(0,0,0)!=0 (workaround until next malloc update) 12-06-28 vmalloc/malloc.c: use sbrk() unless VMALLOC_OPTIONS=mmap or asoinit(0,0,0)!=0 (workaround until next malloc update)
12-06-28 aso/aso.c: asoinit(0,0,0): 0: no specific init, 1: app initialized 12-06-28 aso/aso.c: asoinit(0,0,0): 0: no specific init, 1: app initialized
12-06-27 sfio/sfvprintf.c: allow { L* z* } aliases for I* -- posix will probably pick one 12-06-27 sfio/sfvprintf.c: allow { L* z* } aliases for I* -- POSIX will probably pick one
12-06-26 regex/regnexec.c: fix uninitialized variable reference 12-06-26 regex/regnexec.c: fix uninitialized variable reference
12-06-26 comp/setlocale.c: utf8_wctomb() now calls (the correct) wc2utf8() 12-06-26 comp/setlocale.c: utf8_wctomb() now calls (the correct) wc2utf8()
12-06-25 string/chresc.c: accept \u[U+<hex>] and \u{U+<hex>} 12-06-25 string/chresc.c: accept \u[U+<hex>] and \u{U+<hex>}
@ -10,7 +10,7 @@
12-06-18 sfio/_sfopen.c: add 'e' => O_CLOEXEC 12-06-18 sfio/_sfopen.c: add 'e' => O_CLOEXEC
12-06-18 features/fcntl.c: add #define O_CLOEXEC 0 if not defined 12-06-18 features/fcntl.c: add #define O_CLOEXEC 0 if not defined
12-06-13 features/float: handle __mips c99 peculiarities 12-06-13 features/float: handle __mips c99 peculiarities
12-06-13 features/standards: handle __MACH__ posix peculiarities 12-06-13 features/standards: handle __MACH__ POSIX peculiarities
12-06-08 sfio/sfclose.c,sfmode.c: sfclose() for sfopopen() stream returns sh-compatible $? 12-06-08 sfio/sfclose.c,sfmode.c: sfclose() for sfopopen() stream returns sh-compatible $?
12-06-08 comp/strtold.c: fix header botch that missed ldexpl() prototype -- ouch 12-06-08 comp/strtold.c: fix header botch that missed ldexpl() prototype -- ouch
12-06-06 misc/proclib.h: partially undo <ast_standards.h> for leaked ancient bsd-isms 12-06-06 misc/proclib.h: partially undo <ast_standards.h> for leaked ancient bsd-isms
@ -143,7 +143,7 @@
10-08-11 misc/conformance.c: check ast_env_serial for dynamic astconf() changes 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-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-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-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-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-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-07-26 misc/optget.c: fix interaction with nested plugin/builtin calls
@ -213,7 +213,7 @@
10-01-01 ast_std.h: add { AST_LC_internal AST_LC_setenv } 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-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-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: POSIX semantics for [z-a]
09-12-11 regex/regcomp.c: fix BRE/ERE ^^ logic 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: fix regcomb() for REG_LEFT|REG_RIGHT
09-12-11 regex/regcomp.c: bm complete=0 if REX_END 09-12-11 regex/regcomp.c: bm complete=0 if REX_END
@ -304,7 +304,7 @@
08-07-21 include/glob.h,misc/glob.c: GLOB_STARSTAR only forces lstat on chdir 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 sfio: sync with kpv
08-07-17 misc/optget.c: call astwinsize() each time terminal width required 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 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 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-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 tm/tmxfmt.c: fix %z to handle tm_isdst -- doh
@ -330,7 +330,7 @@
08-03-06 misc/optget.c: ---* and +++* are now operands 08-03-06 misc/optget.c: ---* and +++* are now operands
08-03-06 misc/errorx.c: fix old error_info.translate workaround 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-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-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-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/regsubexec.c: fix null match (tricky)
08-02-14 regex/regsubcomp.c: fix SRE to match ksh 08-02-14 regex/regsubcomp.c: fix SRE to match ksh
@ -403,12 +403,12 @@
07-02-14 include/int.h: drop 07-02-14 include/int.h: drop
07-02-14 include/sfio.h: add SF_WCWIDTH 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.sh: fix CONF_LIMIT bug that missed ULONG_MAX etc.
07-02-12 comp/conf.tab: *LONGLONG* => *LLONG* to match posix 07-02-12 comp/conf.tab: *LONGLONG* => *LLONG* to match POSIX
07-02-12 features/float: *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 port/astconf.c: handle CONF_LIMITS_DEF with no deferral
07-02-12 stdio/vasprintf.c: add trailing '\0' -- doh 07-02-12 stdio/vasprintf.c: add trailing '\0' -- doh
07-02-04 string/fmtelapsed.c: fix naive multi month/year logic 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-02-02 misc/optget.c: add --??POSIX for getopts(1)/getopt(3)
07-01-26 string/chresc.c: use mbchar() 07-01-26 string/chresc.c: use mbchar()
07-01-26 misc/optget.c: handle "o:-:" usage for old-style long options 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 sfio/sfdisc.c,sfpool.c: handle push on streams with pending peek
@ -502,7 +502,7 @@
06-06-27 features/float,sfio/sfcvt.c: fix Nan logic 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 port/astmath.c: fix long double isnan() test
06-06-27 features/map.c: _map_libc for std => _ast_std 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-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-19 port/mnt.c,features/fs: handle netbsd getmntent api change
06-06-18 regex/regstat.c: add REG_LITERAL check 06-06-18 regex/regstat.c: add REG_LITERAL check
06-06-11 cdt/dtview.c: update from kpv 06-06-11 cdt/dtview.c: update from kpv
@ -750,9 +750,9 @@
vmalloc/malloc.c: _AST_mem_method==_mem_* to force mem get method 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? 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 path/pathshell.c: verify abs path and access(path,X_OK) -- duh
vmalloc/vmhdr.h: add private _Vmessage() for non-sfio ASSERT() vmalloc/vmhdr.h: add private _Vmessage() for non-sfio ASSERT()
port/astconf.c: fix bug that always returned the minmax value 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> 03-06-11 comp/*.c: reorder macro hding for mvs.390 and <ast_map.h>
features/vmalloc: add _lib_brk and _lib_sbrk verification features/vmalloc: add _lib_brk and _lib_sbrk verification
include/ast_std.h,etc.: add _map_malloc for malloc => _ast_malloc include/ast_std.h,etc.: add _map_malloc for malloc => _ast_malloc
comp/conf.sh: fix SI_* and *_SI_* macro redefs comp/conf.sh: fix SI_* and *_SI_* macro redefs
@ -774,7 +774,7 @@
03-05-24 misc/optget.c: fix (ancient) argv null dereference 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-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-22 sfio/sfsprintf.c: n<0 => don't append '\0'
03-05-18 misc/fts.c: re-stat FTS_DP to update nlink/times 03-05-18 misc/fts.c: re-stat FTS_DP to update nlink/times
misc/fts.c: add FTSENT.stack to eliminate getlist() recursion misc/fts.c: add FTSENT.stack to eliminate getlist() recursion
regex/ucs_names.h: use "..." catenation to placate some cc's regex/ucs_names.h: use "..." catenation to placate some cc's
03-05-11 string/strtoi.h: handle "-" "+" "0x" "11#" 03-05-11 string/strtoi.h: handle "-" "+" "0x" "11#"
@ -1429,7 +1429,7 @@
98-06-19 tokscan: add %f %g 98-06-19 tokscan: add %f %g
98-06-01 disc/sf*.c: memset(0) after disc malloc() 98-06-01 disc/sf*.c: memset(0) after disc malloc()
98-05-11 strelapsed: y==Y 98-05-11 strelapsed: y==Y
fts: pathcanon() top list fts: pathcanon() top list
98-04-01 error: error_info.time for all msgs, just after cmd id 98-04-01 error: error_info.time for all msgs, just after cmd id
error: no sfsync(sfstdin) error: no sfsync(sfstdin)
sfio: sfpool, Sffmt_t update sfio: sfpool, Sffmt_t update
@ -1539,7 +1539,7 @@
sfio.h,stdio.h,ast_common.h: pollution cleanup sfio.h,stdio.h,ast_common.h: pollution cleanup
magic.c: add | op for switch magic.c: add | op for switch
Makefile: stdio.h was on both HEADERSRC and HEADERGEN -- don't do that Makefile: stdio.h was on both HEADERSRC and HEADERGEN -- don't do that
drop pp:notice to get <sfio.h> ... <ast.h> to work drop pp:notice to get <sfio.h> ... <ast.h> to work
regex: add [[:<:]]==\< and [[:>:]]==\> for bsd compat regex: add [[:<:]]==\< and [[:>:]]==\> for bsd compat
mime.c: ignore X-* headers while scanning for Content-* mime.c: ignore X-* headers while scanning for Content-*
magic.c: check for negative indirect offsets magic.c: check for negative indirect offsets
@ -1549,7 +1549,7 @@
magic.c: MAGIFILE is now a : file list magic.c: MAGIFILE is now a : file list
mnt.c: another 4.4 bsd fix -- users must include <sys/crap.h> mnt.c: another 4.4 bsd fix -- users must include <sys/crap.h>
common: fix _WIN32 chicken&egg with va_copy common: fix _WIN32 chicken&egg with va_copy
sfio: forgot to set f->val along with _Sfi in sfexcept() sfio: forgot to set f->val along with _Sfi in sfexcept()
Makefile: add mini target for uwin libmini.a Makefile: add mini target for uwin libmini.a
sfcvt.c: workaround for flaky long double optimizers sfcvt.c: workaround for flaky long double optimizers
features/common: fix to work with va_list==void* features/common: fix to work with va_list==void*
@ -1562,7 +1562,7 @@
regerror: fix for xopen regerror: fix for xopen
getopt: fix for xopen getopt: fix for xopen
magic: add ciao virtual database magic: add ciao virtual database
astconf: posix/strict/xopen implies "standard" conformance astconf: POSIX/strict/xopen implies "standard" conformance
fs3d.h: hide mount prototype fs3d.h: hide mount prototype
ast_std.h,mnt.c,features/fs: ncr port tweaks ast_std.h,mnt.c,features/fs: ncr port tweaks
96-10-31 version 5.0 96-10-31 version 5.0
@ -1694,7 +1694,7 @@
oops object / shared library compat with _sfgetl2 _sfgetu2 oops object / shared library compat with _sfgetl2 _sfgetu2
95-09-11 add getopt() compatibility 95-09-11 add getopt() compatibility
add fstat,lstat,mknod,stat fixes for _x versions in sys/stat.h add fstat,lstat,mknod,stat fixes for _x versions in sys/stat.h
add getconf CONFORMANCE - posix for things that aren't ast default add getconf CONFORMANCE - POSIX for things that aren't ast default
sfio_t.h: #ifndef _SFIO_H #include "sfio.h" #endif sfio_t.h: #ifndef _SFIO_H #include "sfio.h" #endif
snarf vmalloc from kpv snarf vmalloc from kpv
95-08-11 fix malloc bug in magic 95-08-11 fix malloc bug in magic
@ -1780,7 +1780,7 @@
, treated like :space: between stropt() options , treated like :space: between stropt() options
fix procopen() fd dup to ignore self-dups fix procopen() fd dup to ignore self-dups
add library id[] to misc/state.c add library id[] to misc/state.c
add ftwalk(FTW_METAPHYSICAL) for posix -H add ftwalk(FTW_METAPHYSICAL) for POSIX -H
sfvprintf() now handles balanced () in %() sfvprintf() now handles balanced () in %()
add tmfmt() with buffer size check to replace tmform() add tmfmt() with buffer size check to replace tmform()
add fmttime() calling tmfmt() to fit fmt*() mold add fmttime() calling tmfmt() to fit fmt*() mold
@ -1789,9 +1789,9 @@
add EXTTYPE extended header to tar.h add EXTTYPE extended header to tar.h
95-02-14 sfmove() buffer size overflow fix 95-02-14 sfmove() buffer size overflow fix
add _SFSTDIO_H to sfio.h add _SFSTDIO_H to sfio.h
rename setenv() to setenviron() -- posix finally decided rename setenv() to setenviron() -- POSIX finally decided
rename <option.h> opt_* to opt_info.* rename <option.h> opt_* to opt_info.*
update features/unistd.c for _SC_* and _PC_* posix additions update features/unistd.c for _SC_* and _PC_* POSIX additions
95-01-19 (char*)uchar cast in fmtesc() 95-01-19 (char*)uchar cast in fmtesc()
fix hash bucket memory leak in hashlook() [via John Mocenigo] fix hash bucket memory leak in hashlook() [via John Mocenigo]
update strings/strtape() update strings/strtape()

View file

@ -38,7 +38,7 @@ memmove(void* to, const void* from, register size_t n)
if (n <= 0) /* works if size_t is signed or not */ if (n <= 0) /* works if size_t is signed or not */
; ;
else if (in + n <= out || out + n <= in) else if (in + n <= out || out + n <= in)
return(memcpy(to, from, n)); /* hope it's fast*/ return(memcpy(to, from, n)); /* hope it's fast */
else if (out < in) else if (out < in)
do *out++ = *in++; while (--n > 0); do *out++ = *in++; while (--n > 0);
else else

View file

@ -529,7 +529,7 @@ runve(int mode, const char* path, char* const* argv, char* const* envv)
* (3) /c/(WINNT|WINDOWS)/system32 /c/(WINNT|WINDOWS) * (3) /c/(WINNT|WINDOWS)/system32 /c/(WINNT|WINDOWS)
* (4) the directories on $PATH * (4) the directories on $PATH
* there are no cygwin dlls in (3), so if (1) and (2) fail * there are no cygwin dlls in (3), so if (1) and (2) fail
* to produce the required dlls its up to (4) * to produce the required dlls it's up to (4)
* *
* the standard allows PATH to be anything once the path * the standard allows PATH to be anything once the path
* to an executable is determined; this code ensures that PATH * to an executable is determined; this code ensures that PATH

View file

@ -241,7 +241,7 @@ tst real_vfork note{ vfork child shares data with parent }end execute{
} }
}end }end
tst lib_posix_spawn unistd.h stdlib.h spawn.h -Dfork=______fork note{ posix_spawn exists and it works and its worth using }end status{ tst lib_posix_spawn unistd.h stdlib.h spawn.h -Dfork=______fork note{ posix_spawn exists, it works and it's worth using }end status{
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/wait.h> #include <sys/wait.h>
@ -304,7 +304,7 @@ tst lib_posix_spawn unistd.h stdlib.h spawn.h -Dfork=______fork note{ posix_spaw
NOTE("SIGHUP ignored in parent not ignored in child"); NOTE("SIGHUP ignored in parent not ignored in child");
_exit(0); _exit(0);
} }
/* must return exec-type errors or its useless to us *unless* there is no [v]fork() */ /* must return exec-type errors or it's useless to us *unless* there is no [v]fork() */
n = strlen(cmd[0]); n = strlen(cmd[0]);
if (n >= (sizeof(tmp) - 3)) if (n >= (sizeof(tmp) - 3))
{ {

View file

@ -75,7 +75,7 @@ is ANSI, K&R and C++ compatible and includes or defines the equivalent of
.L <string.h> .L <string.h>
and and
.LR <unistd.h> . .LR <unistd.h> .
Other libraries that depend on Other libraries that depend on
.B libast .B libast
may also have headers installed in the may also have headers installed in the
.L include/ast .L include/ast

View file

@ -134,7 +134,7 @@ on the same \f5dest\fP with values, say \fIv1\fP and \fIv2\fP.
The eventual value in \f5dest\fP The eventual value in \f5dest\fP
will be as if \f5*dest += 2\fP was performed in a single-threaded execution. will be as if \f5*dest += 2\fP was performed in a single-threaded execution.
That should be constrasted with a situation where, instead of \f5asoinc32()\fP or \f5asodec32()\fP, That should be contrasted with a situation where, instead of \f5asoinc32()\fP or \f5asodec32()\fP,
only normal increment (++) or decrement (--) were used. only normal increment (++) or decrement (--) were used.
Then, the end result could be either \f5*dest += 1\fP or \f5*dest += 2\fP, Then, the end result could be either \f5*dest += 1\fP or \f5*dest += 2\fP,
depending on states of the hardware cache and process scheduling. depending on states of the hardware cache and process scheduling.

View file

@ -76,7 +76,7 @@ is
then then
\f5"/"\fP \f5"/"\fP
is used. is used.
Otherwise if Otherwise if
.I path .I path
is not is not
.L 0 .L 0
@ -136,7 +136,7 @@ command options.
.TP .TP
.L UNIVERSE .L UNIVERSE
.L ucb .L ucb
for for
.I Berkeley .I Berkeley
style and style and
.L att .L att
@ -168,7 +168,7 @@ relative to
.IR path . .IR path .
If If
.I notify .I notify
returns returns
.L 0 .L 0
then the configuration parameter value is not changed. then the configuration parameter value is not changed.
.PP .PP
@ -188,7 +188,7 @@ or
.L R_OK|W_OK .L R_OK|W_OK
then all configuration parameters are listed. then all configuration parameters are listed.
.L R_OK .L R_OK
lists the readonly configuration parameters and lists the readonly configuration parameters and
.L W_OK .L W_OK
lists the settable configuration parameters. lists the settable configuration parameters.
.L X_OK .L X_OK

View file

@ -340,7 +340,7 @@ the key as defined by the \f5Dtdisc_t.size\fP field.
.PP .PP
.Ss " Void_t* (*memoryf)(Dt_t* dt, Void_t* addr, size_t size, Dtdisc_t* disc)" .Ss " Void_t* (*memoryf)(Dt_t* dt, Void_t* addr, size_t size, Dtdisc_t* disc)"
If not \f5NULL\fP, \f5memoryf\fP is used to allocate and free memory. If not \f5NULL\fP, \f5memoryf\fP is used to allocate and free memory.
When \f5addr\fP is \f5NULL\fP, a memory segment of size \f5size\fP is requested. When \f5addr\fP is \f5NULL\fP, a memory segment of size \f5size\fP is requested.
If \f5addr\fP is not \f5NULL\fP and \f5size\fP is zero, \f5addr\fP is to be freed. If \f5addr\fP is not \f5NULL\fP and \f5size\fP is zero, \f5addr\fP is to be freed.
If \f5addr\fP is not \f5NULL\fP and \f5size\fP is positive, If \f5addr\fP is not \f5NULL\fP and \f5size\fP is positive,
\f5addr\fP is to be resized to the given size. \f5addr\fP is to be resized to the given size.
@ -485,7 +485,7 @@ For \f5Dtset\fP, \f5Dtbag\fP, \f5Dtrhset\fP and \f5Dtrhbag\fP,
objects are ordered by some internal order defined at the time when these objects are ordered by some internal order defined at the time when these
functions are called. functions are called.
Objects in a dictionary or a viewpath can be walked using Objects in a dictionary or a viewpath can be walked using
a \f5for(;;)\fP loop as below. a \f5for(;;)\fP loop as below.
.Cs .Cs
for(obj = dtfirst(dt); obj; obj = dtnext(dt,obj)) for(obj = dtfirst(dt); obj; obj = dtnext(dt,obj))

View file

@ -57,7 +57,7 @@ is not 0 then
is set to point to the next character in is set to point to the next character in
.I s .I s
on return. on return.
0 is returned and 0 is returned and
.I e .I e
is not modified when the end of is not modified when the end of
.I s .I s
@ -77,9 +77,9 @@ value until up to the number of characters in an
.I int .I int
is reached. is reached.
This operation is inherently machine-dependent, This operation is inherently machine-dependent,
but at least its defined in one place. but at least it's defined in one place.
.PP .PP
The following The following
.B \e .B \e
escape sequences are recognized: escape sequences are recognized:
.TP .TP

View file

@ -73,7 +73,7 @@ A
is appended to the message text, so none should appear in the is appended to the message text, so none should appear in the
.L printf .L printf
format. format.
If If
.I error_info.id .I error_info.id
is not is not
.L 0 .L 0
@ -92,7 +92,7 @@ returns the
argument, but on some systems it may do language translation via lookup argument, but on some systems it may do language translation via lookup
on the original source text. on the original source text.
.RL ( error .RL ( error
calls calls
.L ERROR_translate .L ERROR_translate
with a 0 with a 0
.L flag .L flag
@ -107,7 +107,7 @@ Debug messages are prefixed with
.BI debug level. .BI debug level.
If If
.I "errno != error_info.last_errno" .I "errno != error_info.last_errno"
then then
.I error_info.last_errno .I error_info.last_errno
is set to is set to
.I errno .I errno
@ -164,7 +164,7 @@ to the message after
A usage message is emitted. A usage message is emitted.
.TP .TP
.L ERROR_PROMPT .L ERROR_PROMPT
The trailing The trailing
.I newline .I newline
is suppressed. is suppressed.
.TP .TP
@ -179,7 +179,7 @@ The message is from a library routine.
The elements of the global struct The elements of the global struct
.I error_info .I error_info
control error output and actions. control error output and actions.
Parts of Parts of
.I error_info .I error_info
can be initialized from the can be initialized from the
.L ERROR_OPTIONS .L ERROR_OPTIONS
@ -192,14 +192,14 @@ options, described below.
.I "int core" .I "int core"
If If
.I "error_info.core != 0" .I "error_info.core != 0"
then then
.I "level >= error_info.core" .I "level >= error_info.core"
generates a core dump. generates a core dump.
Initialized by Initialized by
.EX .EX
ERROR_OPTIONS="core=\fIlevel\fP" ERROR_OPTIONS="core=\fIlevel\fP"
.EE .EE
where where
.I level .I level
can be a number or one of can be a number or one of
.LR error , .LR error ,
@ -247,7 +247,7 @@ are defined
.RL ( _TRACE_ .RL ( _TRACE_
is defined by is defined by
.I makerules .I makerules
when when
.L CCFLAGS .L CCFLAGS
contains contains
.LR \-g ). .LR \-g ).
@ -264,7 +264,7 @@ and
.L message .L message
call call
.L liberror .L liberror
and and
.L error .L error
respectively if respectively if
.IR "error_info.trace<0" . .IR "error_info.trace<0" .

View file

@ -57,18 +57,18 @@ via
or or
.IR at . .IR at .
.PP .PP
.L findopen .L findopen
returns a handle to a returns a handle to a
.I fastfind .I fastfind
stream for the stream for the
.I ksh .I ksh
file pattern file pattern
.IR pattern . .IR pattern .
.L findnext .L findnext
returns the next pathname that matches the pattern specified by returns the next pathname that matches the pattern specified by
.IR handle . .IR handle .
.L findnext .L findnext
returns returns
.L 0 .L 0
when no more pathnames match the pattern. when no more pathnames match the pattern.
Finally, Finally,
@ -78,7 +78,7 @@ closes the
stream for stream for
.IR handle . .IR handle .
.SH BUGS .SH BUGS
These rotuines are only as good as the These routines are only as good as the
.I fastfind .I fastfind
information which is in the system administration domain. information which is in the system administration domain.
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -167,7 +167,7 @@ mode string for the file mode bits in
.IR mode . .IR mode .
If If
.I "external != 0" .I "external != 0"
then then
.I mode .I mode
is is
.IR modecanon (3) .IR modecanon (3)
@ -191,7 +191,7 @@ pattern
.L fmtsignal .L fmtsignal
returns the signal name, sans returns the signal name, sans
.LR SIG , .LR SIG ,
for the signal number for the signal number
.IR sig . .IR sig .
If If
.I "sig < 0" .I "sig < 0"

View file

@ -51,7 +51,7 @@ formats
.IR ls (1) .IR ls (1)
style file information into the buffer style file information into the buffer
.IR buf . .IR buf .
A pointer to the trailing 0 in A pointer to the trailing 0 in
.I buf .I buf
is returned. is returned.
.I name .I name
@ -130,7 +130,7 @@ The user and group fields are each
.B LS_W_NAME .B LS_W_NAME
characters wide, characters wide,
the the
.B LS_INUMBER .B LS_INUMBER
field is field is
.B LS_W_INUMBER .B LS_W_INUMBER
characters wide, characters wide,

View file

@ -114,7 +114,7 @@ The \fIuserf\fP prototype is:
char* path; /* full pathname */ char* path; /* full pathname */
short pathlen; /* strlen(path) */ short pathlen; /* strlen(path) */
unsigned short info; /* type of object */ unsigned short info; /* type of object */
unsigned short status; /* status of object */ unsigned short status; /* status of object */
short level; /* depth of object on the search path */ short level; /* depth of object on the search path */
short namelen; /* strlen(name) */ short namelen; /* strlen(name) */
char name[]; /* file name of object */ char name[]; /* file name of object */
@ -206,7 +206,7 @@ The \fIcomparf\fP prototype is:
\fIFtwalk\fR normally returns 0. \fIFtwalk\fR normally returns 0.
On hard errors such as running out of memory, it returns -1. On hard errors such as running out of memory, it returns -1.
\fIFtwalk\fR may also return other values as discussed with respect \fIFtwalk\fR may also return other values as discussed with respect
to \fIuserf\fR. to \fIuserf\fR.
.PP .PP
\fIFtwflags\fR returns a combination of \fB0, FTW_META, FTW_PHYSICAL\fR \fIFtwflags\fR returns a combination of \fB0, FTW_META, FTW_PHYSICAL\fR
according to the according to the

View file

@ -49,7 +49,7 @@ char* getcwd(char* \fIbuf\fP, size_t \fIlen\fP);
.L getcwd .L getcwd
copies the absolute path name of the current directory info into copies the absolute path name of the current directory info into
.I buf .I buf
of length of length
.IR len . .IR len .
The return path may be longer than The return path may be longer than
.LR PATH_MAX . .LR PATH_MAX .
@ -57,10 +57,10 @@ If
.I "buff == 0" .I "buff == 0"
then space is allocated via then space is allocated via
.IR malloc (3) .IR malloc (3)
and and
.I len .I len
extra characters are reserved after the generated path name. extra characters are reserved after the generated path name.
A pointer to the path name is returned, A pointer to the path name is returned,
.L 0 .L 0
on error. on error.
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -52,7 +52,7 @@ and its
.IR value . .IR value .
A A
.I key .I key
is a sequence of is a sequence of
.L char .L char
elements and a elements and a
.I value .I value
@ -116,7 +116,7 @@ The number of lookup collisions.
.RE .RE
.TP .TP
.L "Hash_table_t* scope" .L "Hash_table_t* scope"
The table that this scope covers, The table that this scope covers,
.L NULL .L NULL
if the table is not a scope. if the table is not a scope.
.TP .TP
@ -215,11 +215,11 @@ if
is specified and is specified and
.IR strcmp (3) .IR strcmp (3)
otherwise. otherwise.
The first argument is the The first argument is the
.I key .I key
from the current hash bucket on the from the current hash bucket on the
.I "collision chain" .I "collision chain"
and the second argument is the user supplied and the second argument is the user supplied
.IR key . .IR key .
.TP .TP
.L "HASH_free, (int(*)()) free" .L "HASH_free, (int(*)()) free"
@ -230,7 +230,7 @@ If
was set in was set in
.L hashalloc .L hashalloc
then the hash bucket pointer is passed, otherwise the bucket then the hash bucket pointer is passed, otherwise the bucket
.L value .L value
pointer is passed. pointer is passed.
.TP .TP
.L "HASH_hash, (int(*)()) hash" .L "HASH_hash, (int(*)()) hash"
@ -275,7 +275,7 @@ Changes the hash table flags by
.IR or ing .IR or ing
in in
.LR flags . .LR flags .
The flags, which may be The flags, which may be
.IR or ed .IR or ed
together, are: together, are:
.RS .RS
@ -321,7 +321,7 @@ in the hash table
.L tab .L tab
according to according to
.L flags .L flags
and and
.LR value . .LR value .
A A
.L Hash_bucket_t .L Hash_bucket_t
@ -408,7 +408,7 @@ value is returned.
For For
.L HASH_LOOKUP .L HASH_LOOKUP
the bucket the bucket
.L value .L value
field is returned, field is returned,
.L NULL .L NULL
if the bucket is not found. if the bucket is not found.
@ -481,7 +481,7 @@ in the hash table
.LR tab . .LR tab .
If If
.L flags .L flags
is is
.L HASH_NOSCOPE .L HASH_NOSCOPE
then only the top level hash table is used, otherwise the walk includes then only the top level hash table is used, otherwise the walk includes
all scope covered tables. all scope covered tables.
@ -514,7 +514,7 @@ pointer for a sequential scan on the hash table
.LR tab . .LR tab .
If If
.L flags .L flags
is is
.L HASH_NOSCOPE .L HASH_NOSCOPE
then only the top level hash table is used, otherwise the scan includes then only the top level hash table is used, otherwise the scan includes
all scope covered tables. all scope covered tables.
@ -534,9 +534,9 @@ If no elements remain then
is returned. is returned.
.TP .TP
.L "void hashdone(Hash_position_t* pos)" .L "void hashdone(Hash_position_t* pos)"
Completes a scan initiated by Completes a scan initiated by
.L hashscan() .L hashscan()
on on
.LR pos . .LR pos .
.TP .TP
.L "int hashset(Hash_table_t* tab, int flags)" .L "int hashset(Hash_table_t* tab, int flags)"
@ -567,14 +567,14 @@ may be cleared.
Dumps hash table accounting info to standard error. Dumps hash table accounting info to standard error.
If If
.L tab .L tab
is is
.L NULL .L NULL
then all allocated hash tables are dumped, otherwise only information on then all allocated hash tables are dumped, otherwise only information on
.L tab .L tab
is dumped. is dumped.
If If
.L flags .L flags
is is
.L HASH_BUCKET .L HASH_BUCKET
then the hash bucket then the hash bucket
.I key-value .I key-value

View file

@ -62,7 +62,7 @@ These routines provide an interface to the
command magic file. command magic file.
.L magicopen .L magicopen
returns a magic session handle that is passed to all of the other routines. returns a magic session handle that is passed to all of the other routines.
.I flags .I flags
may be may be
.TP .TP
.L MAGIC_MIME .L MAGIC_MIME
@ -94,13 +94,13 @@ loads the magic file named by
.I path .I path
into the magic session. into the magic session.
.I flags .I flags
are the same as with are the same as with
.LR magicopen . .LR magicopen .
More than one magic file can be loaded into a session; More than one magic file can be loaded into a session;
the files are searched in load order. the files are searched in load order.
If If
.I path .I path
is is
.L 0 .L 0
then the default magic file is loaded. then the default magic file is loaded.
.PP .PP
@ -133,7 +133,7 @@ flag then
.I st .I st
is assumed to contain valid stat information, otherwise is assumed to contain valid stat information, otherwise
.L magictype .L magictype
calls calls
.L stat .L stat
on on
.IR st . .IR st .
@ -150,7 +150,7 @@ However, with the extended format it is possible to write a single
magic file that works on all platforms. magic file that works on all platforms.
Most of the net magic files floating around work with Most of the net magic files floating around work with
.LR magic , .LR magic ,
but they usually double up on but they usually double up on
.I le .I le
and and
.I be .I be
@ -227,7 +227,7 @@ field is either the offset into the data upon which the current entry operates
or a file metadata identifier. or a file metadata identifier.
Offsets are either integer constants or offset expressions. Offsets are either integer constants or offset expressions.
An offset expression is contained in (...) and is a combination of An offset expression is contained in (...) and is a combination of
integral arithmetic operators and the integral arithmetic operators and the
.L @ .L @
indirection operator. indirection operator.
Indirections take the form Indirections take the form
@ -238,9 +238,9 @@ The size of the indirection value is taken either from one of the suffixes
.LR H (short, 2 chars), .LR H (short, 2 chars),
.LR L (long, 4 chars), .LR L (long, 4 chars),
pr pr
.LR Q (quead, 8 chars), .LR Q (quad, 8 chars),
or from the or from the
.L type .L type
field. field.
Valid file metadata identifiers are: Valid file metadata identifiers are:
.TP .TP
@ -372,7 +372,7 @@ field takes the form
.LI & number .LI & number
where where
.I number .I number
is is
.I anded .I anded
with the integral value at with the integral value at
.L offset .L offset
@ -389,13 +389,13 @@ field entries above.
means any value and applies to all types. means any value and applies to all types.
Integral Integral
.L type .L type
expression take the form [\fIoperator\fP] \fIoperand\P where expression take the form [\fIoperator\fP] \fIoperand\P where
.I operand .I operand
is compared with the data value at is compared with the data value at
.L offset .L offset
using using
.IR operator . .IR operator .
.I operator .I operator
may be one of may be one of
.LR < . .LR < .
.LR <= , .LR <= ,
@ -407,7 +407,7 @@ or
defaults to defaults to
.L == .L ==
if omitted. if omitted.
.I operand .I operand
may be an integral constant or one of the following builtin function calls: may be an integral constant or one of the following builtin function calls:
.TP .TP
.L magic() .L magic()
@ -415,7 +415,7 @@ A recursive call to the magic algorithm starting with the data at
.LR offset . .LR offset .
.TP .TP
\f5loop(\fIfunction\fP,\fIoffset\fP,\fIincrement\fP)\fR \f5loop(\fIfunction\fP,\fIoffset\fP,\fIincrement\fP)\fR
Call Call
.I function .I function
starting at starting at
.I offset .I offset
@ -447,7 +447,7 @@ then a
is placed between the descriptions is placed between the descriptions
(most optional descriptions start with (most optional descriptions start with
.IR comma .) .IR comma .)
The data value at The data value at
.L offset .L offset
can be referenced in the description using can be referenced in the description using
.L %s .L %s

View file

@ -62,7 +62,7 @@ and
may be the same. may be the same.
.PP .PP
.L memdup .L memdup
copies the copies the
.I n .I n
byte buffer byte buffer
.I buf .I buf
@ -86,11 +86,11 @@ and
may be the same. may be the same.
.PP .PP
.L memzero .L memzero
sets the first sets the first
.I n .I n
bytes in bytes in
.I buf .I buf
to to
.IR 0 . .IR 0 .
.SH "SEE ALSO" .SH "SEE ALSO"
Proposed Bell Laboratories ASCII/EBCDIC standard, April 16, 1979. Proposed Bell Laboratories ASCII/EBCDIC standard, April 16, 1979.

View file

@ -62,7 +62,7 @@ These routines provide an interface to the MIME type database.
.L mimeopen .L mimeopen
returns a mime session handle that is passed to all of the other routines. returns a mime session handle that is passed to all of the other routines.
The The
.I flags .I flags
argument is currently unused. argument is currently unused.
.PP .PP
.L mimeclose .L mimeclose
@ -93,7 +93,7 @@ More than one mime file can be loaded into a session;
the files are searched in load order. the files are searched in load order.
If If
.I path .I path
is is
.L 0 .L 0
then the default mime file is loaded. then the default mime file is loaded.
.PP .PP

View file

@ -98,7 +98,7 @@ The traditional bit access macro (\f5S_\fP prefix changes to \f5X_\fP) are:
and and
.L X_IRWXO . .L X_IRWXO .
.LI X_ITYPE( mode ) .LI X_ITYPE( mode )
returns the type bits for returns the type bits for
.IR mode . .IR mode .
.SH "SEE ALSO" .SH "SEE ALSO"
pax(1), stat(2) pax(1), stat(2)

View file

@ -67,7 +67,7 @@ Path buffers are assumed to be of size
.L <ast.h> .L <ast.h>
always defines always defines
.LR PATH_MAX , .LR PATH_MAX ,
even if it indeterminant on the local system. even if it's indeterminate on the local system.
Yes, this was probably a bad choice, but it was made about 10 years ago. Yes, this was probably a bad choice, but it was made about 10 years ago.
We will probably move to a <stk.h> based implementation. We will probably move to a <stk.h> based implementation.
.PP .PP
@ -80,7 +80,7 @@ with access
.L mode .L mode
using the using the
.L : .L :
separated directories in separated directories in
.IR dirs . .IR dirs .
Both Both
.I a .I a
@ -109,11 +109,11 @@ A regular file.
.L PATH_ABSOLUTE .L PATH_ABSOLUTE
Generated path name is rooted at Generated path name is rooted at
.LR / . .LR / .
.I path .I path
is returned, 0 on error. is returned, 0 on error.
.PP .PP
.L pathbin .L pathbin
returns a pointer to the returns a pointer to the
.L : .L :
separated list of directories to search for executable commands. separated list of directories to search for executable commands.
The The
@ -130,7 +130,7 @@ canonicalizes the path
in place. in place.
A pointer to the trailing 0 in the canonicalized path is returned. A pointer to the trailing 0 in the canonicalized path is returned.
A canonical path has: A canonical path has:
redundant redundant
.L . .L .
and and
.L / .L /
@ -156,7 +156,7 @@ Symbolic links are resolved at each component.
If an error occurs and either of If an error occurs and either of
.L PATH_DOTDOT .L PATH_DOTDOT
or or
.L PATH_EXISTS .L PATH_EXISTS
is set then is set then
.I path .I path
will contain the components following the failure point. will contain the components following the failure point.
@ -205,7 +205,7 @@ is longer than
then it is split up into a sequence of relative paths and then it is split up into a sequence of relative paths and
.I chdir .I chdir
is called on each of these. is called on each of these.
For any given system, if you got to a directory, then For any given system, if you got to a directory, then
.L pathcd .L pathcd
can get you back, modulo permission and link changes. can get you back, modulo permission and link changes.
.PP .PP
@ -231,13 +231,13 @@ by converting non-standard dynamic link text to
converts in the other direction. converts in the other direction.
.PP .PP
.L pathkey .L pathkey
generates in generates in
.I key .I key
a 14 character lookup key (plus terminating 0) for the language a 14 character lookup key (plus terminating 0) for the language
.I lang .I lang
processor in processor in
.IR path . .IR path .
A poihter to the key is returned, 0 on error. A pointer to the key is returned, 0 on error.
If If
.I "key == 0" .I "key == 0"
then space is allocated via then space is allocated via
@ -270,9 +270,9 @@ and the
environment variable (set by environment variable (set by
.IR ksh (1) ) .IR ksh (1) )
are used for related root searching. are used for related root searching.
If If
.I p .I p
also contains a also contains a
.L / .L /
then then
.I ../p .I ../p
@ -367,14 +367,14 @@ where the length of
if !=0, is limited to 5, the length of if !=0, is limited to 5, the length of
.I <pid> .I <pid>
(the base 64 representation of the current process id) (the base 64 representation of the current process id)
is limited to 3, and is limited to 3, and
.I <suf> .I <suf>
(an internally generated suffix that avoid file confilicts) (an internally generated suffix that avoid file conflicts)
is limited to 3. is limited to 3.
The generated path name conforms to the classic UNIX 14 char and the DOS The generated path name conforms to the classic UNIX 14 char and the DOS
.LR 8.3 .LR 8.3
limitations. limitations.
Both Both
.I dir .I dir
and and
.I pfx .I pfx

View file

@ -92,10 +92,10 @@ In this case
is set to indicate the error. is set to indicate the error.
.TP .TP
.L ispreroot .L ispreroot
Non-zero is returned if Non-zero is returned if
.I dir .I dir
is the current process preroot. is the current process preroot.
If If
.I dir .I dir
is is
.B 0 .B 0
@ -124,7 +124,7 @@ with the process preroot set to
must be a must be a
.BR 0 -terminated .BR 0 -terminated
argument array. argument array.
If If
.I argv .I argv
is is
.B 0 .B 0

View file

@ -72,12 +72,12 @@ and flags in
.IR flags . .IR flags .
.PP .PP
.I command .I command
is searched for using the is searched for using the
.L PATH .L PATH
environment variable from the calling environment. environment variable from the calling environment.
If If
.I command .I command
is is
.L 0 .L 0
then the current shell is used (see then the current shell is used (see
.IR pathshell (3)). .IR pathshell (3)).
@ -85,7 +85,7 @@ If
.I envv .I envv
is not is not
.L 0 .L 0
then it is a then it is a
.L 0 .L 0
terminated vector of terminated vector of
\fIname\fP[=\fIvalue\fP] \fIname\fP[=\fIvalue\fP]
@ -110,9 +110,9 @@ and will appear at the top of the child environment.
.PP .PP
If If
.I opv .I opv
is not is not
.L 0 .L 0
then it is a 0 terminaled vector of operations to perform. then it is a zero-terminated vector of operations to perform.
In the following In the following
.I context .I context
is a combination of is a combination of
@ -131,7 +131,7 @@ is closed in
\f5PROC_FD_DUP(\fIfrom\fP,\fIto\fP,\fIcontext\fP)\fR \f5PROC_FD_DUP(\fIfrom\fP,\fIto\fP,\fIcontext\fP)\fR
The file descriptor The file descriptor
.I from .I from
is is
.IR dup (2)'d .IR dup (2)'d
into the file descriptor into the file descriptor
.I to .I to
@ -155,7 +155,7 @@ in the child context.
\f5PROC_SYS_PGRP(\fIpgid\fP)\fR \f5PROC_SYS_PGRP(\fIpgid\fP)\fR
The child process group is set to The child process group is set to
.IR pgid . .IR pgid .
.I pgid .I pgid
may have the following values: may have the following values:
.TP .TP
.L <0 .L <0
@ -190,7 +190,7 @@ when
is a shell script. is a shell script.
.TP .TP
.L PROC_BACKGROUND .L PROC_BACKGROUND
Standard shell Standard shell
.L & .L &
setup is done for the child process. setup is done for the child process.
.TP .TP
@ -241,7 +241,7 @@ if it is a shell script.
.L PROC_PRIVELEGED .L PROC_PRIVELEGED
If the effective user id is If the effective user id is
.L 0 .L 0
then the child real user id is set to then the child real user id is set to
.L 0 .L 0
and the child real group id is set to the effective group id. and the child real group id is set to the effective group id.
.TP .TP
@ -274,7 +274,7 @@ The child process id.
.TP .TP
.L "pid_t \fIpgrp\fP" .L "pid_t \fIpgrp\fP"
The child process group. The child process group.
.TP .TP
.L "int \fIrfd\fP" .L "int \fIrfd\fP"
A read file descriptor connected to A read file descriptor connected to
.IR command 's .IR command 's
@ -308,9 +308,9 @@ Presumably some other mechanism will be used to wait for
.IR proc.pid . .IR proc.pid .
.PP .PP
.L procrun .L procrun
combines combines
.L procopen .L procopen
and and
.L procclose .L procclose
with the flags with the flags
.L PROC_GID|PROC_UID .L PROC_GID|PROC_UID

View file

@ -105,7 +105,7 @@ then the array
is filled with character pointers to the substrings of is filled with character pointers to the substrings of
.I source .I source
that correspond to the that correspond to the
parenthesized subexpressions of parenthesized subexpressions of
.IR pattern : .IR pattern :
.I re\->match[i].sp .I re\->match[i].sp
points to the beginning and points to the beginning and
@ -128,12 +128,12 @@ are filled with zeros.
Matches involving Matches involving
.LR * , .LR * ,
.LR + , .LR + ,
and and
.L ? .L ?
are extended as far as possible. are extended as far as possible.
A maximum of 9 subexpressions will be matched. A maximum of 9 subexpressions will be matched.
The structure of elements of The structure of elements of
.I re\->match .I re\->match
is: is:
.nf .nf
.ta 8n .ta 8n
@ -168,7 +168,7 @@ string delimited by
.LI re\->match[ n ].sp .LI re\->match[ n ].sp
and and
.LI re\->match[ n ].ep . .LI re\->match[ n ].ep .
Each instance of Each instance of
.L & .L &
is replaced by the string delimited by is replaced by the string delimited by
.I re\->match[0].sp .I re\->match[0].sp

View file

@ -165,7 +165,7 @@ long sffmtversion(Sffmt_t* fe, type);
.ft 5 .ft 5
Void_t* sfsetbuf(Sfio_t* f, Void_t* buf, size_t size); Void_t* sfsetbuf(Sfio_t* f, Void_t* buf, size_t size);
int sfsync(Sfio_t* f); int sfsync(Sfio_t* f);
int sfpoll(Sfio_t** flist, int n, int timeout); int sfpoll(Sfio_t** flist, int n, int timeout);
Sfio_t* sfpool(Sfio_t* f, Sfio_t* poolf, int mode); Sfio_t* sfpool(Sfio_t* f, Sfio_t* poolf, int mode);
int sfpurge(Sfio_t* f); int sfpurge(Sfio_t* f);
.ft 1 .ft 1
@ -188,7 +188,7 @@ SF_DPUSH
SF_DPOP SF_DPOP
SF_DPOLL SF_DPOLL
SF_DBUFFER SF_DBUFFER
SF_SYNC SF_SYNC
SF_PURGE SF_PURGE
SF_FINAL SF_FINAL
SF_READY SF_READY
@ -283,7 +283,7 @@ stream pools for automatic data synchronization.
Applications can extend the \f5sfprintf()/sfscanf()\fP functions Applications can extend the \f5sfprintf()/sfscanf()\fP functions
to define their own conversion patterns as well as redefine existing ones. to define their own conversion patterns as well as redefine existing ones.
.PP .PP
A discipline defines analogues of A discipline defines analogues of
the system calls \f5read(2), write(2)\fP and \f5lseek(2)\fP. the system calls \f5read(2), write(2)\fP and \f5lseek(2)\fP.
Such system calls or their discipline replacements are used to process stream data. Such system calls or their discipline replacements are used to process stream data.
Henceforth, ``\fIsystem call\fP'' will refer to either a system call Henceforth, ``\fIsystem call\fP'' will refer to either a system call
@ -455,8 +455,8 @@ no longer behave as macros. Thus, an application that requires such fast macro f
should leave \f5SF_MTSAFE\fP off and performs explicit locking with \f5sfmutex()\fP. should leave \f5SF_MTSAFE\fP off and performs explicit locking with \f5sfmutex()\fP.
.Tp .Tp
\f5SF_IOINTR\fP: \f5SF_IOINTR\fP:
This flag indicates that I/O system calls should not be resumed This flag indicates that I/O system calls should not be resumed
after being interrupted by signals. It is useful for after being interrupted by signals. It is useful for
aborting I/O operations on such interruptions. Note, however, aborting I/O operations on such interruptions. Note, however,
that certain operating systems (e.g., BSD Unix systems) may automatically that certain operating systems (e.g., BSD Unix systems) may automatically
resume interrupted system calls outside the scope of the library. On such systems, resume interrupted system calls outside the scope of the library. On such systems,
@ -784,7 +784,7 @@ from input stream \f5fr\fP to output stream \f5fw\fP.
An object can be either a byte if the record separator argument An object can be either a byte if the record separator argument
\f5rsc\fP is negative or a record of \f5rsc\fP is non-negative. \f5rsc\fP is negative or a record of \f5rsc\fP is non-negative.
In the latter case, a record is incomplete if it does not end in \f5rsc\fP. In the latter case, a record is incomplete if it does not end in \f5rsc\fP.
Generally speaking, a stream can have at most one incomplete record. Generally speaking, a stream can have at most one incomplete record.
If \f5n\fP is negative, all complete objects of \f5fr\fP will be moved. If \f5n\fP is negative, all complete objects of \f5fr\fP will be moved.
Otherwise, \f5n\fP indicates the number of objects to move. Otherwise, \f5n\fP indicates the number of objects to move.
@ -866,7 +866,7 @@ call can be obtained in another \f5sfreserve()\fP call with the argument
\f5type\fP being \f5SF_LASTR\fP. The second argument \f5n\fP \f5type\fP being \f5SF_LASTR\fP. The second argument \f5n\fP
to \f5sfreserve()\fP will be ignored in this case. to \f5sfreserve()\fP will be ignored in this case.
A \f5sfreserve()\fP call is successful if it can obtain a data block A \f5sfreserve()\fP call is successful if it can obtain a data block
of size at least the absolute value of \f5n\fP. of size at least the absolute value of \f5n\fP.
For a \f5SF_READ\fP atream, the argument \f5n\fP is treated as follows: For a \f5SF_READ\fP atream, the argument \f5n\fP is treated as follows:
.Tp .Tp
@ -986,7 +986,7 @@ which contains the following elements:
char* form; /* format string to stack */ char* form; /* format string to stack */
va_list args; /* corresponding arg list */ va_list args; /* corresponding arg list */
int fmt; /* pattern being processed */ int fmt; /* pattern being processed */
ssize_t size; /* object size */ ssize_t size; /* object size */
int flags; /* formatting control flags */ int flags; /* formatting control flags */
@ -1100,7 +1100,7 @@ Arguments are always processed in order and
\f5fe->extf\fP is called exactly once per argument. \f5fe->extf\fP is called exactly once per argument.
Note that, when \f5pos$\fP (below) is not used anywhere in a format string, Note that, when \f5pos$\fP (below) is not used anywhere in a format string,
each argument is used exactly once per a corresponding pattern. each argument is used exactly once per a corresponding pattern.
In that case, \f5fe->extf\fP is called In that case, \f5fe->extf\fP is called
as soon as the pattern is recognized and before any scanning or formatting. as soon as the pattern is recognized and before any scanning or formatting.
On the other hand, when \f5pos$\fP is used in a format string, On the other hand, when \f5pos$\fP is used in a format string,
an argument may be used multiple times. an argument may be used multiple times.
@ -1257,7 +1257,7 @@ In the second case, a given decimal value would define a size while
Then, if the conversion specifier is \f5s\fP, this size defines the Then, if the conversion specifier is \f5s\fP, this size defines the
length of the string or strings being formatted (see the discussion of \f5base\fP below). length of the string or strings being formatted (see the discussion of \f5base\fP below).
For integer and floating point patterns, For integer and floating point patterns,
the size is used to select a type from one of the below lists as the size is used to select a type from one of the below lists as
indicated by the conversion specifier: indicated by the conversion specifier:
.nf .nf
@ -1270,7 +1270,7 @@ indicated by the conversion specifier:
The selection algorithm always matches types from left to right in any given list. The selection algorithm always matches types from left to right in any given list.
Although selection is generally based on sizes in bytes, Although selection is generally based on sizes in bytes,
for compatibility with Microsoft-C, the size 64 for compatibility with Microsoft-C, the size 64
is matched with an appropriate type with the same number of bits, if any. is matched with an appropriate type with the same number of bits, if any.
If the given size does not match any of the listed types, If the given size does not match any of the listed types,
it shall match one of \f5int\fP, \f5unsigned int\fP, and \f5double\fP it shall match one of \f5int\fP, \f5unsigned int\fP, and \f5double\fP
@ -1517,7 +1517,7 @@ indicated by the conversion specifier:
The selection algorithm always matches types from left to right in any given list. The selection algorithm always matches types from left to right in any given list.
Although selection is generally based on sizes in bytes, Although selection is generally based on sizes in bytes,
for compatibility with Microsoft-C, the size 64 for compatibility with Microsoft-C, the size 64
is matched with an appropriate type with the same number of bits, if any. is matched with an appropriate type with the same number of bits, if any.
If the given size does not match any of the listed types, If the given size does not match any of the listed types,
it shall match one of \f5int\fP, \f5unsigned int\fP, and \f5double\fP it shall match one of \f5int\fP, \f5unsigned int\fP, and \f5double\fP
@ -1738,7 +1738,7 @@ the discipline that was pushed down.
Note that a discipline can be used on only one stream at a time. Note that a discipline can be used on only one stream at a time.
An application should take care to allocate different discipline An application should take care to allocate different discipline
structures for use with different streams. structures for use with different streams.
A discipline structure is of the type \f5Sfdisc_t\fP which A discipline structure is of the type \f5Sfdisc_t\fP which
contains the following public fields: contains the following public fields:
@ -1854,7 +1854,7 @@ I/O modes are ready.
.Tp .Tp
\f5SF_SYNC\fP, \f5SF_PURGE\fP: \f5SF_SYNC\fP, \f5SF_PURGE\fP:
If \f5SF_IOCHECK\fP is set, If \f5SF_IOCHECK\fP is set,
these events are raised respectively for a \f5sfsync()\fP or \f5sfpurge()\fP call. these events are raised respectively for a \f5sfsync()\fP or \f5sfpurge()\fP call.
In each case, the respective event is raised once before the appropriate In each case, the respective event is raised once before the appropriate
operation (synchronization or purging) with \f5((int)value)\fP being \f51\fP operation (synchronization or purging) with \f5((int)value)\fP being \f51\fP
and once after with \f5((int)value)\fP being \f50\fP. and once after with \f5((int)value)\fP being \f50\fP.
@ -2066,7 +2066,7 @@ On such a call, if the return value is negative, \f5sfwalk()\fP will terminate.
Otherwise, it returns the return value from the last invocation of \f5walkf()\fP. Otherwise, it returns the return value from the last invocation of \f5walkf()\fP.
As an example, the call \f5sfwalk(walkf, data, SF_READ)\fP will iterate over all streams As an example, the call \f5sfwalk(walkf, data, SF_READ)\fP will iterate over all streams
opened for reading. Similarly, \f5sfwalk(walkf, data, SF_READ|SF_WRITE)\fP opened for reading. Similarly, \f5sfwalk(walkf, data, SF_READ|SF_WRITE)\fP
iterates over all streams opened for both reading and writing. iterates over all streams opened for both reading and writing.
Lastly, \f5sfwalk(walkf, data, 0)\fP iterates over all streams. Lastly, \f5sfwalk(walkf, data, 0)\fP iterates over all streams.

View file

@ -90,7 +90,7 @@ do this on systems that don't support
.IR fork (2). .IR fork (2).
This makes porting to NT and Windows a snap: a simple This makes porting to NT and Windows a snap: a simple
.IR iffe (1) .IR iffe (1)
probe provides a probe provides a
.L spawnveg .L spawnveg
implementation using the NT or Windows process primitives. implementation using the NT or Windows process primitives.
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -56,14 +56,14 @@ install it as the active stack.
A stack is created with the \f5stakcreate\fP() function. A stack is created with the \f5stakcreate\fP() function.
A \fIflags\fP argument of \f5STAK_SMALL\fP indicates that unused A \fIflags\fP argument of \f5STAK_SMALL\fP indicates that unused
space on the stack should be freed whenever this stack ceases space on the stack should be freed whenever this stack ceases
to be the active stack. to be the active stack.
If successful, If successful,
\f5stakcreate\fP() returns a pointer to a stack whose reference \f5stakcreate\fP() returns a pointer to a stack whose reference
count is 1. count is 1.
Otherwise, \f5stakcreate\fP() returns a null pointer. Otherwise, \f5stakcreate\fP() returns a null pointer.
The \f5staklink\fP() function increases the reference count for the The \f5staklink\fP() function increases the reference count for the
given \fIstack\fP. given \fIstack\fP.
The \f5stakinstall\fP() function The \f5stakinstall\fP() function
makes the specified \fIstack\fP the active stack and returns a pointer makes the specified \fIstack\fP the active stack and returns a pointer
to the previous active stack. to the previous active stack.
When the \fIoverflow\fP argument is not null, When the \fIoverflow\fP argument is not null,
@ -113,7 +113,7 @@ If \fIaddress\fP is not the address of an object on the
stack the result is undefined. stack the result is undefined.
.PP .PP
The remaining functions are used to build the current object incrementally. The remaining functions are used to build the current object incrementally.
An object that is built incrementally on the stack will An object that is built incrementally on the stack will
always occupy contiguous memory within a stack frame but always occupy contiguous memory within a stack frame but
until \f5stakfreeze\fP() is called, until \f5stakfreeze\fP() is called,
the location in memory for the object can change. the location in memory for the object can change.
@ -123,7 +123,7 @@ Initially, this offset is zero, and the offset changes as a result
of the operations you specify. of the operations you specify.
The \f5stakseek\fP() function is used set the offset for the The \f5stakseek\fP() function is used set the offset for the
current object. current object.
The \fIoffset\fP argument to \f5stakseek\fP() specifies the new The \fIoffset\fP argument to \f5stakseek\fP() specifies the new
offset for the current object. offset for the current object.
The frame will be extended or moved The frame will be extended or moved
if \f5offset\fP causes the new current offset to extend beyond the if \f5offset\fP causes the new current offset to extend beyond the

View file

@ -57,14 +57,14 @@ install it as the active stack.
A stack is created with the \f5stkopen\fP() function. A stack is created with the \f5stkopen\fP() function.
A \fIflags\fP argument of \f5STK_SMALL\fP indicates that unused A \fIflags\fP argument of \f5STK_SMALL\fP indicates that unused
space on the stack should be freed whenever this stack ceases space on the stack should be freed whenever this stack ceases
to be the active stack. to be the active stack.
If successful, If successful,
\f5stkopen\fP() returns a pointer to a stack whose reference \f5stkopen\fP() returns a pointer to a stack whose reference
count is 1. count is 1.
Otherwise, \f5stkopen\fP() returns a null pointer. Otherwise, \f5stkopen\fP() returns a null pointer.
The \f5stklink\fP() function increases the reference count for the The \f5stklink\fP() function increases the reference count for the
given \fIstack\fP. given \fIstack\fP.
The \f5stkinstall\fP() function The \f5stkinstall\fP() function
makes the specified \fIstack\fP the active stack and returns a pointer makes the specified \fIstack\fP the active stack and returns a pointer
to the previous active stack. to the previous active stack.
When the \fIoverflow\fP argument is not null, When the \fIoverflow\fP argument is not null,
@ -115,7 +115,7 @@ stack the result is undefined.
.PP .PP
The \f5sfio\fP(3) output functions can be used to build The \f5sfio\fP(3) output functions can be used to build
current object incrementally. current object incrementally.
An object that is built incrementally on the stack will An object that is built incrementally on the stack will
always occupy contiguous memory within a stack frame but always occupy contiguous memory within a stack frame but
until \f5stkfreeze\fP() is called, until \f5stkfreeze\fP() is called,
the location in memory for the object can change. the location in memory for the object can change.
@ -125,7 +125,7 @@ Initially, this offset is zero, and the offset changes as a result
of the operations you specify. of the operations you specify.
The \f5stkseek\fP() function is used set the offset for the The \f5stkseek\fP() function is used set the offset for the
current object. current object.
The \fIoffset\fP argument to \f5stkseek\fP() specifies the new The \fIoffset\fP argument to \f5stkseek\fP() specifies the new
offset for the current object. offset for the current object.
The frame will be extended or moved The frame will be extended or moved
if \f5offset\fP causes the new current offset to extend beyond the if \f5offset\fP causes the new current offset to extend beyond the

View file

@ -43,7 +43,7 @@ stresc \- convert character constants in string
.L "int stresc(char* s)" .L "int stresc(char* s)"
.SH DESCRIPTION .SH DESCRIPTION
.I stresc .I stresc
converts converts
.L \e .L \e
character constant expressions in the nul-terminated string character constant expressions in the nul-terminated string
.I s .I s

View file

@ -66,7 +66,7 @@ Except for
.I & .I &
and and
.IR ! , .IR ! ,
each shell pattern has an equivalent each shell pattern has an equivalent
.IR egrep (1) .IR egrep (1)
construct. construct.
.EX .EX

View file

@ -74,7 +74,7 @@ where
.I name .I name
must be one of the option names in must be one of the option names in
.IR tab , .IR tab ,
.I value .I value
is an optional value, and is an optional value, and
.B no .B no
is for Boolean options. is for Boolean options.
@ -108,7 +108,7 @@ is not found in
.I tab .I tab
then then
.I fun .I fun
is called with is called with
.I p .I p
pointing to an internal pointing to an internal
.I namval .I namval

View file

@ -48,7 +48,7 @@ applies a file permission expression in the nul-terminated string
to the initial file permission mask to the initial file permission mask
.IR p . .IR p .
The new permission mask is returned. The new permission mask is returned.
If If
.I e .I e
not 0 then not 0 then
.I *e .I *e

View file

@ -56,7 +56,7 @@ elements using the comparison function
.I compare .I compare
returns returns
.L \-1 .L \-1
if if
.I a .I a
is lexicographically less than is lexicographically less than
.IR b , .IR b ,
@ -67,7 +67,7 @@ is equal to
.IR b , .IR b ,
and and
.L 1 .L 1
if if
.I a .I a
is lexicographically greater than is lexicographically greater than
.IR b . .IR b .

View file

@ -47,7 +47,7 @@ converts the generic tape device specification in the nul-terminated string
.I s .I s
to a local tape device pathname. to a local tape device pathname.
A pointer to the device pathname is returned. A pointer to the device pathname is returned.
If If
.I e .I e
not 0 then not 0 then
.I *e .I *e

View file

@ -46,7 +46,7 @@ strton \- convert string to long integer
converts the nul-terminated string converts the nul-terminated string
.I s .I s
to a long integer. to a long integer.
If If
.I e .I e
not 0 then not 0 then
.I *e .I *e
@ -63,7 +63,7 @@ All but
are optional. are optional.
.I sign .I sign
may be \+ or \-. may be \+ or \-.
.I base .I base
may be: may be:
.TP .TP
.B 0x .B 0x

View file

@ -60,7 +60,7 @@ and
.PP .PP
.L swapop .L swapop
returns the swap operation required to convert the returns the swap operation required to convert the
.L width .L width
byte integer byte integer
.L external .L external
to the to the
@ -85,7 +85,7 @@ and
.L 1 .L 1
with bytes with bytes
.L 2 .L 2
and and
.LR 3 . .LR 3 .
.TP .TP
.L 4 .L 4
@ -101,7 +101,7 @@ in the header
described in described in
.IR int (3). .IR int (3).
.PP .PP
.L swapget .L swapget
returns the returns the
.L width .L width
byte integer in the buffer byte integer in the buffer
@ -109,7 +109,7 @@ byte integer in the buffer
swapped according to swapped according to
.LR op . .LR op .
.PP .PP
.L swapput .L swapput
copies the copies the
.L width .L width
byte integer byte integer
@ -122,16 +122,16 @@ swapped according to
is returned. is returned.
.PP .PP
.L swapmem .L swapmem
swaps swaps
.L n .L n
bytes from the buffer bytes from the buffer
.L from .L from
to the buffer to the buffer
.L to .L to
according to according to
.LR op . .LR op .
.L to .L to
and and
.L from .L from
may be the same. may be the same.
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -42,8 +42,8 @@ tab \- simple table lookup routines
.SH SYNOPSIS .SH SYNOPSIS
.L "#include <ast.h>" .L "#include <ast.h>"
.sp .sp
.L "int tabindex(const void* tab, int size, const char* name);" .L "int tabindex(const void* tab, int size, const char* name);"
.L "void* tablook(const void* tab, int size, const char* name);" .L "void* tablook(const void* tab, int size, const char* name);"
.SH DESCRIPTION .SH DESCRIPTION
These routines do linear lookups in These routines do linear lookups in
.I small .I small

View file

@ -46,7 +46,7 @@ The
.I tm .I tm
library supports conversion between library supports conversion between
string date specifications, string date specifications,
seconds reolution seconds resolution
.L time_t .L time_t
clock values and clock values and
.LR Tm_t . .LR Tm_t .
@ -356,7 +356,7 @@ The nanosecond part of the time.
\fB%Q\fP\fI<delim>recent<delim>distant<delim>\fP \fB%Q\fP\fI<delim>recent<delim>distant<delim>\fP
Recent dates are formatted with Recent dates are formatted with
.I recent .I recent
and distand dates are formatted with and distant dates are formatted with
.IR distant , .IR distant ,
where where
.I <delim> .I <delim>
@ -400,7 +400,7 @@ character.
.IR hh : mm : ss . .IR hh : mm : ss .
.TP .TP
.B u .B u
Weeday number with 1 for Monday, 7 for Sunday. Weekday number with 1 for Monday, 7 for Sunday.
.TP .TP
.B U .B U
Week number with Sunday as the first day. Week number with Sunday as the first day.
@ -507,9 +507,9 @@ then it specifies a time zone other that the local time zone.
.TP .TP
.L "void tmset(Tm_zone_t* zone);" .L "void tmset(Tm_zone_t* zone);"
.L tmset .L tmset
sets the reference timezoe to sets the reference timezone to
.LR zone . .LR zone .
.L tm_info.local .L tm_info.local
points to the local timezone and points to the local timezone and
.L tm_info.zone .L tm_info.zone
points to the current reference timezone. points to the current reference timezone.

View file

@ -385,9 +385,9 @@ then it specifies a time zone other that the local time zone.
.TP .TP
.L "void tmset(Tm_zone_t* zone);" .L "void tmset(Tm_zone_t* zone);"
.L tmset .L tmset
sets the reference timezoe to sets the reference timezone to
.LR zone . .LR zone .
.L tm_info.local .L tm_info.local
points to the local timezone and points to the local timezone and
.L tm_info.zone .L tm_info.zone
points to the current reference timezone. points to the current reference timezone.

View file

@ -84,7 +84,7 @@ then it will point to the next unread character in
on return. on return.
The number of scanned tokens is returned. The number of scanned tokens is returned.
.L \-1 .L \-1
is returned if is returned if
.L string .L string
was not empty and was not empty and
.L format .L format
@ -116,7 +116,7 @@ is a line splice.
.L % .L %
in in
.L format .L format
prefixes format conversion characters; each conversion character prefixes format conversion characters; each conversion character
corresponds to a corresponds to a
.L tokscan .L tokscan
argument following the argument following the
@ -125,7 +125,7 @@ argument.
The format conversions are: The format conversions are:
.TP .TP
.L %c .L %c
A single A single
.LR char . .LR char .
.TP .TP
.L "%hd %d %ld" .L "%hd %d %ld"
@ -185,7 +185,7 @@ to
.L tokscan .L tokscan
above converts quoted above converts quoted
.I carriage-return .I carriage-return
back to back to
.IR newline ), .IR newline ),
and deletes and deletes
.I "# ... newline" .I "# ... newline"
@ -206,7 +206,7 @@ then
is a 0 terminated string; is a 0 terminated string;
otherwise otherwise
.L input .L input
is an open is an open
.L Sfio_t* .L Sfio_t*
stream. stream.
If If

View file

@ -53,7 +53,7 @@ loads a string vector from lines in
.LR string . .LR string .
.L string .L string
may be modified upon return. may be modified upon return.
Each line in Each line in
.L string .L string
is treated as a new vector element. is treated as a new vector element.
Lines with Lines with
@ -64,15 +64,15 @@ joins consecutive lines.
A string vector pointer is returned, 0 on error. A string vector pointer is returned, 0 on error.
.PP .PP
.L vecfile .L vecfile
constructs a string vector by calling constructs a string vector by calling
.L vecload .L vecload
on the contents of the file named by on the contents of the file named by
.LR path . .LR path .
The string vector pointer is returned, 0 on error. The string vector pointer is returned, 0 on error.
.PP .PP
.L vecstring .L vecstring
constructs a string vector by calling constructs a string vector by calling
.L vecload .L vecload
on a copy of on a copy of
.LR string . .LR string .
The string vector pointer is returned, 0 on error. The string vector pointer is returned, 0 on error.
@ -92,7 +92,7 @@ inserts the string vector
.L vecload .L vecload
or or
.LR vecstring ) .LR vecstring )
between between
.L "(*argvp)[0]" .L "(*argvp)[0]"
and and
.LR "(*argvp)[1]" , .LR "(*argvp)[1]" ,
@ -108,7 +108,7 @@ is called before the return.
is returned if the insertion failed. is returned if the insertion failed.
.SH EXAMPLES .SH EXAMPLES
.L vecargs .L vecargs
is commonly used to modify command is commonly used to modify command
.L argv .L argv
from fixed files. from fixed files.
For example, For example,

View file

@ -53,7 +53,7 @@ vmalloc \- virtual memory allocation
.MW "int vmstat(Vmalloc_t* vm, Vmstat_t* statb);" .MW "int vmstat(Vmalloc_t* vm, Vmstat_t* statb);"
.MW "int vmtrace(int fd);" .MW "int vmtrace(int fd);"
.MW "int vmtrbusy(Vmalloc_t* vm);" .MW "int vmtrbusy(Vmalloc_t* vm);"
.MW "Void_t* vmdata(Vmalloc_t* vm);" .MW "Void_t* vmdata(Vmalloc_t* vm);"
.fi .fi
.SS "Malloc-compatible functions" .SS "Malloc-compatible functions"
.nf .nf
@ -268,7 +268,7 @@ a structure with these members:
.fi .fi
.in -.5i .in -.5i
.TP .TP
.MW round .MW round
If this value is positive, all size arguments to the If this value is positive, all size arguments to the
\f5memoryf\fP function will be multiples of it. \f5memoryf\fP function will be multiples of it.
.TP .TP
@ -410,7 +410,7 @@ By default, this file descriptor is 2, the standard error.
checks a region using \f5Vmdebug\fP or \f5Vmbest\fP for integrity. checks a region using \f5Vmdebug\fP or \f5Vmbest\fP for integrity.
If \f5Vmdebug\fP, this also checks for block overwriting errors. If \f5Vmdebug\fP, this also checks for block overwriting errors.
On errors, \fIvmdbwarn\fP is called. On errors, \fIvmdbwarn\fP is called.
If flag \f5VM_DBCHECK\fP is on, If flag \f5VM_DBCHECK\fP is on,
\fIvmdbcheck\fP is called at each invocation of \fIvmdbcheck\fP is called at each invocation of
\fIvmalloc\fP, \fIvmfree\fP, or \fIvmresize\fP. \fIvmalloc\fP, \fIvmfree\fP, or \fIvmresize\fP.
.PP .PP

View file

@ -24,7 +24,7 @@
* FF_dir FF_gnu with sfgetl/sfputl and trailing / on dirs (FF_dir_magic) * FF_dir FF_gnu with sfgetl/sfputl and trailing / on dirs (FF_dir_magic)
* FF_typ FF_dir with (mime) types (FF_typ_magic) * FF_typ FF_dir with (mime) types (FF_typ_magic)
* *
* the bigram encoding steals the eighth bit (that's why its FF_old) * the bigram encoding steals the eighth bit (that's why it's FF_old)
* maybe one day we'll limit it to readonly: * maybe one day we'll limit it to readonly:
* *
* 0-2*FF_OFF likeliest differential counts + offset to make nonnegative * 0-2*FF_OFF likeliest differential counts + offset to make nonnegative

View file

@ -599,7 +599,7 @@ procopen(const char* cmd, char** argv, char** envv, long* modv, int flags)
if (!fork()) if (!fork())
{ {
sfsprintf(path, sizeof(path), "%d", getppid()); sfsprintf(path, sizeof(path), "%d", getppid());
execlp("trace", "trace", "-p", path, NiL); execlp("trace", "trace", "-p", path, NULL);
_exit(EXIT_NOTFOUND); _exit(EXIT_NOTFOUND);
} }
sleep(2); sleep(2);

View file

@ -26,7 +26,7 @@
10-06-14 rm.c: fix -rfu logic 10-06-14 rm.c: fix -rfu logic
10-06-12 paste.c: repeat after me: do not modify argv[i] 10-06-12 paste.c: repeat after me: do not modify argv[i]
10-06-01 sync with ast api 20100601 10-06-01 sync with ast api 20100601
10-05-09 tail.c: fix -0f bug that inially listed the entire file 10-05-09 tail.c: fix -0f bug that initially listed the entire file
10-05-06 basename.c: add { -a,--all -s,--suffux=suffix } from BSD 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-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-11 cmp.c: add --print-bytes, --count=n, --differences=n
@ -77,12 +77,12 @@
09-02-02 mktemp.c: add 09-02-02 mktemp.c: add
09-02-02 features/utsname: UWIN _UNAME_os_DEFAULT => UWIN 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-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-05 cmp.c: fix EOF diagnostic to conform to POSIX
09-01-03 mkfifo.c: fix --mode=mode logic 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-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-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-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-09-08 stty.c: #ifdef guard TAB[012] -- FreeBSD: damn the POSIX, full speed ahead
08-06-17 shcmd.h: move to libast 08-06-17 shcmd.h: move to libast
08-04-24 uniq.c: add optget() 'n' option for -1 => -f1 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-24 getconf.c: clarify diffs between "name - value" and "name = value"
@ -135,8 +135,8 @@
06-11-11 getconf.c: fix deferred getconf path search 06-11-11 getconf.c: fix deferred getconf path search
06-11-11 fmt.c: handle two char { \t \n } in --usage output 06-11-11 fmt.c: handle two char { \t \n } in --usage output
06-10-31 global edit to eliminate most non-const static data0 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 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 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE }
06-10-31 join.c: tone down /tmp usage vi SFSK_DISCARD 06-10-31 join.c: tone down /tmp usage vi SFSK_DISCARD
06-10-31 cp.c,rm.c: update to <fts.h> to accommodate non-static data 06-10-31 cp.c,rm.c: update to <fts.h> to accommodate non-static data
06-10-29 date.c: "...%H%..." => "...%H" "%..." to avoid SCCS conflict 06-10-29 date.c: "...%H%..." => "...%H" "%..." to avoid SCCS conflict
@ -162,7 +162,7 @@
06-07-17 cut.c: handle last line with no newline 06-07-17 cut.c: handle last line with no newline
06-07-17 cut.c: --output-delimiter == --line-delimiter 06-07-17 cut.c: --output-delimiter == --line-delimiter
06-06-25 chmod.c: mask -c output with S_IPERM 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-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-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-14 tail.c: fix -f bug that lost fast stream data
06-02-11 getconf.c: exit 1 if name invalid -- duh 06-02-11 getconf.c: exit 1 if name invalid -- duh
@ -231,7 +231,7 @@
02-08-19 chgrp.c: convert to use <cdt.h> 02-08-19 chgrp.c: convert to use <cdt.h>
02-07-23 join.c: fix comm snarf typo 02-07-23 join.c: fix comm snarf typo
02-04-05 date.c: add %u 02-04-05 date.c: add %u
02-01-24 stty.c: ifdef a few more macros for uts (yes, its still running) 02-01-24 stty.c: ifdef a few more macros for uts (yes, it's still running)
01-12-14 date.c: clarify %z doc 01-12-14 date.c: clarify %z doc
01-10-31 mkdir.c: mkdir() on existing dir could fail with errno!=EEXIST 01-10-31 mkdir.c: mkdir() on existing dir could fail with errno!=EEXIST
uname.c: add execve() loop check for unknown options uname.c: add execve() loop check for unknown options