On 12/5/06, Glenn Fowler <gsf at research.att.com> wrote:
>
> I'm not going to code the getconf builtin to use the hidden
> sun __xpg* process global vars
>
> the code is table driven and I adjusted the table to defer to the getconf on 
> $PATH
> all vars known to be different between the { default xpg4 xpg6 } getconf 
> variants
>
> new alpha tarballs posted at www.research.att.com/sw/download/alpha:
>
>         INIT.2006-12-04.tgz
>         INIT.2006-12-04.md5
>         ast-ksh.2006-12-04.tgz
>         ast-ksh.2006-12-04.md5
>
> -- Glenn Fowler -- AT&T Research, Florham Park NJ --
patch diff from 20061031 to 20061204 attached
-- 
      _        Felix Schulte
    _|_|_     mailto:felix.schulte at gmail.com
    (0 0)
ooO--(_)--Ooo
-------------- next part --------------
diff -r -N -u ksh93_2006_10_31/lib/package/ast-ksh.html 
ksh93_2006_12_04/lib/package/ast-ksh.html
--- ksh93_2006_10_31/lib/package/ast-ksh.html   2006-11-02 20:54:15.000000000 
+0100
+++ ksh93_2006_12_04/lib/package/ast-ksh.html   2006-12-05 08:32:50.000000000 
+0100
@@ -192,7 +192,14 @@
 <P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh93 
changes">ksh93 changes</A></H3></FONT></FONT></CENTER>
 <PRE>
 
-06-10-30  --- Release ksh93s-  ---
+06-11-20  --- Release ksh93s  ---
+06-11-20  A bug in which "${foo&#0091;@&#0093;:1}}" expands a null argument 
(instead of
+         no argument), when foo&#0091;0&#0093; is not empty has been fixed. 
+06-11-16  The discipline functions have been modified to allow each subscript
+         to act independently.  Currently the discipline function will not
+         be called when called from a discipline function of the same variable.
+06-11-14  A bug which could cause a core dump if a file descriptor for
+         an internal file was closed from with a subshell has been fixed.
 06-10-30  The redirections &lt;# pattern, and &lt;## pattern have been added.
          Both seek forward to the beginning of the next line that contains
          the pattern.  The &lt;## form copies the skipped portion to standard
@@ -1421,7 +1428,7 @@
 95-04-31  The expansion of "$@" was incorrect when $1 was the null
          string.
 95-04-31  A bug which could incorrectly report a syntax error in
-         a backquoted expression when a $ was preceded by 
+         a backquoted expression when a $ was preceded by \\
          has been fixed.
 95-04-31  A bug which prevented the shell from exiting after
          reporting an error when failing to open a script
@@ -1608,6 +1615,19 @@
 <P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libast 
changes">libast changes</A></H3></FONT></FONT></CENTER>
 <PRE>
 
+06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
+06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
+06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside 
&#0091;...&#0093;
+06-12-01 sfio/sfcvt.c: add signbit/copysign tests
+06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d
+06-11-20 features/common: bias _ast_int8_t "long long" before "__int64"
+06-11-20 string/strperm.c: fix X to work with all ops (not just +)
+06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants
+06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls
+06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native
+06-11-11 comp/conf.tab: add D to defer to native
+06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash
+06-11-01 include/ast.h: add FMT_PARAM for fmtquote()
 06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control
 06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127
 06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts
@@ -1714,7 +1734,7 @@
         magic.tab: ammend bsd db magic
 05-05-23 regex: REX_NEST 
(?%&#0091;D.&#0093;&#0091;E.&#0093;&#0091;L.&#0093;&#0091;Q.&#0093;&#0091;oc&#0093;...)
 05-05-21 regex: state.fold&#0091;&#0093; is now locale specific -- doh
-05-05-19 regex: add REX_NEST (?%lt;&gt;&#0091;&#0093;""...) %(...) nested match
+05-05-19 regex: add REX_NEST (?%\\()&lt;&gt;&#0091;&#0093;""...) %(...) nested 
match
 05-05-15 recfmt.h: add recstr() reclen() fmtrec()
 05-05-13 optget.c: allow boolean options to take numeric values
 05-05-12 recfmt.c: add to recfmt.h, adjust Recfmt_t encodings
@@ -2973,7 +2993,7 @@
 95-01-01 add this RELEASE file
         fix strperm() to properly handle "644 file"
         fix tokline() to return last '&nbsp;' terminated line in string
-        fix tokscan() to properly handle  splice
+        fix tokscan() to properly handle \\n splice
         add fmtesc() to complement stresc()
         add LS_NUMBER to fmtls()
         drop spurious optusage() ' '
@@ -2983,6 +3003,12 @@
 <P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libcmd 
changes">libcmd changes</A></H3></FONT></FONT></CENTER>
 <PRE>
 
+06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro
+06-11-21 cp.c: fix 06-10-31 const dot&#0091;&#0093; readonly assignment
+06-11-15 cp.c: fix 06-10-31 ln -s enoent bug
+06-11-11 getconf.c: let astconf() handle "undefined" vs. ""
+06-11-11 getconf.c: fix deferred getconf path search
+06-11-11 fmt.c: handle two char { \t } in --usage ouput
 06-10-31 global edit to eliminate most non-const static data0
 06-10-31 use &lt;cmd.h&gt; for all b_*() implementations; drop 
&lt;cmdlib.h&gt; 
 06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } 
@@ -3234,7 +3260,7 @@
 <TR>
 <TD align=left></TD>
 <TD align=center></TD>
-<TD align=right>November 02, 2006</TD>
+<TD align=right>December 05, 2006</TD>
 </TR>
 </TABLE>
 <P>
diff -r -N -u ksh93_2006_10_31/lib/package/ast-ksh.README 
ksh93_2006_12_04/lib/package/ast-ksh.README
--- ksh93_2006_10_31/lib/package/ast-ksh.README 2006-11-02 20:53:59.000000000 
+0100
+++ ksh93_2006_12_04/lib/package/ast-ksh.README 2006-12-05 08:32:50.000000000 
+0100
@@ -92,7 +92,14 @@
 
 :::::::: ksh93 ::::::::
 
-06-10-30  --- Release ksh93s-  ---
+06-11-20  --- Release ksh93s  ---
+06-11-20  A bug in which "${f...@]:1}}" expands a null argument (instead of
+         no argument), when foo[0] is not empty has been fixed. 
+06-11-16  The discipline functions have been modified to allow each subscript
+         to act independently.  Currently the discipline function will not
+         be called when called from a discipline function of the same variable.
+06-11-14  A bug which could cause a core dump if a file descriptor for
+         an internal file was closed from with a subshell has been fixed.
 06-10-30  The redirections <# pattern, and <## pattern have been added.
          Both seek forward to the beginning of the next line that contains
          the pattern.  The <## form copies the skipped portion to standard
@@ -1505,6 +1512,19 @@
 
 :::::::: libast ::::::::
 
+06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
+06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
+06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside [...]
+06-12-01 sfio/sfcvt.c: add signbit/copysign tests
+06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d
+06-11-20 features/common: bias _ast_int8_t "long long" before "__int64"
+06-11-20 string/strperm.c: fix X to work with all ops (not just +)
+06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants
+06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls
+06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native
+06-11-11 comp/conf.tab: add D to defer to native
+06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash
+06-11-01 include/ast.h: add FMT_PARAM for fmtquote()
 06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control
 06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127
 06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts
@@ -2877,6 +2897,12 @@
 
 :::::::: libcmd ::::::::
 
+06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro
+06-11-21 cp.c: fix 06-10-31 const dot[] readonly assignment
+06-11-15 cp.c: fix 06-10-31 ln -s enoent bug
+06-11-11 getconf.c: let astconf() handle "undefined" vs. ""
+06-11-11 getconf.c: fix deferred getconf path search
+06-11-11 fmt.c: handle two char { \t \n } in --usage ouput
 06-10-31 global edit to eliminate most non-const static data0
 06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h> 
 06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } 
diff -r -N -u ksh93_2006_10_31/lib/package/ast-ksh.ver 
ksh93_2006_12_04/lib/package/ast-ksh.ver
--- ksh93_2006_10_31/lib/package/ast-ksh.ver    2006-10-30 19:09:26.000000000 
+0100
+++ ksh93_2006_12_04/lib/package/ast-ksh.ver    2006-12-05 08:32:49.000000000 
+0100
@@ -1 +1 @@
-ast-ksh 2006-10-31 2006-10-31 1
+ast-ksh 2006-12-04 2006-12-04 1
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/data/math.tab 
ksh93_2006_12_04/src/cmd/ksh93/data/math.tab
--- ksh93_2006_10_31/src/cmd/ksh93/data/math.tab        2006-10-19 
08:00:14.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/data/math.tab        2006-11-12 
07:45:40.000000000 +0100
@@ -52,8 +52,8 @@
 f 2 remainder
 f 1 rint
 f 1 round
-f 1 scanb
-f 1 scanbn
+f 2 scalb
+f 2 scalbn
 i 1 signbit
 f 1 sin
 f 1 sinh
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/data/strdata.c 
ksh93_2006_12_04/src/cmd/ksh93/data/strdata.c
--- ksh93_2006_10_31/src/cmd/ksh93/data/strdata.c       2006-10-24 
15:56:39.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/data/strdata.c       2006-12-04 
23:28:02.000000000 +0100
@@ -22,7 +22,7 @@
  * data for string evaluator library
  */
 
-#include       "FEATURE/isoc"
+#include       <ast_standards.h>
 #include       "FEATURE/options"
 #include       "streval.h"
 
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/edit/completion.c 
ksh93_2006_12_04/src/cmd/ksh93/edit/completion.c
--- ksh93_2006_10_31/src/cmd/ksh93/edit/completion.c    2006-08-14 
15:49:19.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/edit/completion.c    2006-11-20 
17:47:36.000000000 +0100
@@ -131,6 +131,10 @@
                        if(!inquote)
                                bp = cp;
                        break;
+                   case '~':
+                       if(*cp=='(')
+                               break;
+                       /* fall through */
                    default:
                        if(c && c==endchar)
                                return(xp);
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/edit/emacs.c 
ksh93_2006_12_04/src/cmd/ksh93/edit/emacs.c
--- ksh93_2006_10_31/src/cmd/ksh93/edit/emacs.c 2006-06-23 22:47:45.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/edit/emacs.c 2006-11-29 23:12:00.000000000 
+0100
@@ -329,7 +329,7 @@
                        continue;
 #endif /* u370 */
                case '\t':
-                       if(cur>0 && cur>=eol  && ep->ed->sh->nextprompt)
+                       if(cur>0  && ep->ed->sh->nextprompt)
                        {
                                if(ep->ed->e_tabcount==0)
                                {
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/edit/vi.c 
ksh93_2006_12_04/src/cmd/ksh93/edit/vi.c
--- ksh93_2006_10_31/src/cmd/ksh93/edit/vi.c    2006-08-14 15:49:19.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/edit/vi.c    2006-11-29 23:13:44.000000000 
+0100
@@ -1474,7 +1474,7 @@
                        return;
 
                case '\t':              /** command completion **/
-                       if(mode!=SEARCH && last_virt>=0 && cur_virt>=last_virt 
&& (vp->ed->e_tabcount|| !isblank(cur_virt)) && vp->ed->sh->nextprompt)
+                       if(mode!=SEARCH && last_virt>=0 && 
(vp->ed->e_tabcount|| !isblank(cur_virt)) && vp->ed->sh->nextprompt)
                        {
                                if(vp->ed->e_tabcount==0)
                                {
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/features/isoc 
ksh93_2006_12_04/src/cmd/ksh93/features/isoc
--- ksh93_2006_10_31/src/cmd/ksh93/features/isoc        2006-10-24 
15:55:39.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/features/isoc        1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-if tst note{ -D_ISOC99_SOURCE cooperates with <stdlib.h> and <math.h> }end 
-D_ISOC99_SOURCE compile{
-               #include <stdlib.h>
-               #include <math.h>
-       }end {
-               #ifndef _ISOC99_SOURCE
-               #define _ISOC99_SOURCE          1
-               #endif
-       }
-endif
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/features/math.sh 
ksh93_2006_12_04/src/cmd/ksh93/features/math.sh
--- ksh93_2006_10_31/src/cmd/ksh93/features/math.sh     2006-10-26 
18:39:12.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/features/math.sh     2006-12-04 
23:28:59.000000000 +0100
@@ -19,29 +19,18 @@
 ########################################################################
 : generate the ksh math builtin table
 : include math.tab
-: include FEATURE/isoc
 
-# @(#)math.sh (AT&T Research) 2006-10-26
+# @(#)math.sh (AT&T Research) 2006-12-04
 
 command=$0
-iffeflags="-n -v"
+iffeflags="-n -v -F ast_standards.h"
 iffehdrs="math.h ieeefp.h"
-ifferefs=""
 iffelibs="-lm"
 table=/dev/null
 
 eval $1
 shift
-while  :
-do     case $# in
-       0)      break ;;
-       esac
-       case $1 in
-       *.tab)  table=$1 ;;
-       */isoc) ifferefs=`sed -e '1,/-D/d' -e '/#define/!d' -e 's/#define.\([^  
      ]*\).*/-D\1/' $1` ;;
-       esac
-       shift
-done
+table=$1
 
 names=
 tests=
@@ -60,7 +49,7 @@
 
 : check the math library
 
-eval `iffe $iffeflags -c "$cc" - lib $tests $iffehdrs $ifferefs $iffelibs 
2>&$stderr`
+eval `iffe $iffeflags -c "$cc" - lib $tests $iffehdrs $iffelibs 2>&$stderr`
 tests=
 for name in $names
 do     eval x='$'_lib_${name}l y='$'_lib_${name}
@@ -69,7 +58,7 @@
        *:1)    tests="$tests,${name}" ;;
        esac
 done
-eval `iffe $iffeflags -c "$cc" - dat $tests $iffehdrs $ifferefs $iffelibs 
2>&$stderr`
+eval `iffe $iffeflags -c "$cc" - dat $tests $iffehdrs $iffelibs 2>&$stderr`
 tests=
 for name in $names
 do     eval x='$'_dat_${name}l y='$'_dat_${name}
@@ -78,7 +67,7 @@
        *:1)    tests="$tests,${name}" ;;
        esac
 done
-eval `iffe $iffeflags -c "$cc" - npt $tests $iffehdrs $ifferefs 2>&$stderr`
+eval `iffe $iffeflags -c "$cc" - npt $tests $iffehdrs 2>&$stderr`
 tests=
 for name in $names
 do     eval x='$'_lib_${name}l y='$'_lib_${name}
@@ -89,7 +78,7 @@
        '')     tests="$tests,${name}" ;;
        esac
 done
-eval `iffe $iffeflags -c "$cc" - mac $tests $iffehdrs $ifferefs 2>&$stderr`
+eval `iffe $iffeflags -c "$cc" - mac $tests $iffehdrs 2>&$stderr`
 
 cat <<!
 #pragma prototyped
@@ -99,6 +88,8 @@
 typedef Sfdouble_t (*Math_f)(Sfdouble_t,...);
 
 !
+echo "#include <ast_standards.h>"
+echo "#include <math.h>"
 case $_hdr_ieeefp in
 1)     echo "#include <ieeefp.h>"
        echo
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/include/name.h 
ksh93_2006_12_04/src/cmd/ksh93/include/name.h
--- ksh93_2006_10_31/src/cmd/ksh93/include/name.h       2006-09-12 
22:40:04.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/include/name.h       2006-11-13 
22:07:05.000000000 +0100
@@ -65,6 +65,8 @@
 #define ARRAY_FILL     (8L<<ARRAY_BITS)        /* used with nv_putsub() */
 #define ARRAY_NOCLONE  (16L<<ARRAY_BITS)       /* do not clone array disc */
 #define ARRAY_NOCHILD   (32L<<ARRAY_BITS)      /* skip compound arrays */
+#define ARRAY_SETSUB   (64L<<ARRAY_BITS)       /* set subscript */
+#define NV_ASETSUB     8                       /* set subscript */
 
 /* These flags are used as options to array_get() */
 #define ARRAY_ASSIGN   0
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/include/version.h 
ksh93_2006_12_04/src/cmd/ksh93/include/version.h
--- ksh93_2006_10_31/src/cmd/ksh93/include/version.h    2006-08-21 
16:45:02.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/include/version.h    2006-11-17 
19:46:51.000000000 +0100
@@ -17,4 +17,4 @@
 *                  David Korn <dgk at research.att.com>                   *
 *                                                                      *
 ***********************************************************************/
-#define SH_RELEASE     "1993-12-28 s-"
+#define SH_RELEASE     "1993-12-28 s"
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/Mamfile 
ksh93_2006_12_04/src/cmd/ksh93/Mamfile
--- ksh93_2006_10_31/src/cmd/ksh93/Mamfile      2006-11-03 03:05:02.000000000 
+0100
+++ ksh93_2006_12_04/src/cmd/ksh93/Mamfile      2006-12-05 23:38:29.000000000 
+0100
@@ -46,6 +46,11 @@
 make ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_map.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_map.h dontcare
+make ${PACKAGE_ast_INCLUDE}/endian.h implicit
+make ${PACKAGE_ast_INCLUDE}/bytesex.h implicit
+prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
+done ${PACKAGE_ast_INCLUDE}/bytesex.h dontcare
+done ${PACKAGE_ast_INCLUDE}/endian.h dontcare
 done ${PACKAGE_ast_INCLUDE}/ast_common.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 make ${PACKAGE_ast_INCLUDE}/regex.h implicit
@@ -62,29 +67,18 @@
 done ${PACKAGE_ast_INCLUDE}/ast_limits.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_fcntl.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_fs.h implicit
-make error?--?old?ethernet?address?at?wrong?offset implicit
-done error?--?old?ethernet?address?at?wrong?offset dontcare virtual
 done ${PACKAGE_ast_INCLUDE}/ast_fs.h dontcare
 done ${PACKAGE_ast_INCLUDE}/ast_fcntl.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_getopt.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_sys.h implicit
-make ${PACKAGE_ast_INCLUDE}/re_comp.h implicit
-prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
-done ${PACKAGE_ast_INCLUDE}/re_comp.h dontcare
 make ${PACKAGE_ast_INCLUDE}/getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/getopt.h dontcare
-make ${PACKAGE_ast_INCLUDE}/stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/ast_stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
-done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
-done ${PACKAGE_ast_INCLUDE}/ast_stdio.h dontcare
-done ${PACKAGE_ast_INCLUDE}/stdio.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/getopt.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_sys.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_lib.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_lib.h dontcare
@@ -98,7 +92,8 @@
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 done ${PACKAGE_ast_INCLUDE}/vmalloc.h dontcare
 make ${PACKAGE_ast_INCLUDE}/sfio.h implicit
-prev ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 done ${PACKAGE_ast_INCLUDE}/sfio.h dontcare
@@ -187,6 +182,7 @@
 bind -lcmd
 bind -last
 bind -lm dontcare
+bind -ldl dontcare
 make +ljobs
 done +ljobs dontcare virtual
 make +li
@@ -195,9 +191,7 @@
 done ${mam_libsecdb} dontcare virtual
 make +lintl
 done +lintl dontcare virtual
-make ${mam_libdl}
-done ${mam_libdl} dontcare virtual
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/time
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/time
 make ${PACKAGE_ast_INCLUDE}/times.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_time.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_time.h dontcare
@@ -216,8 +210,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/dynamic
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/dynamic
 make ${PACKAGE_ast_INCLUDE}/fs3d.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_fs.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
@@ -232,8 +225,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/options
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/options
 done FEATURE/options dontcare generated
 prev ${PACKAGE_ast_INCLUDE}/option.h implicit
 done include/builtins.h
@@ -256,8 +248,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/sigfeatures
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/sigfeatures
 done FEATURE/sigfeatures dontcare generated
 make FEATURE/setjmp implicit
 meta FEATURE/setjmp features/%>FEATURE/% features/setjmp setjmp
@@ -268,8 +259,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/setjmp
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/setjmp
 done FEATURE/setjmp dontcare generated
 prev ${PACKAGE_ast_INCLUDE}/sfio.h implicit
 prev ${PACKAGE_ast_INCLUDE}/error.h implicit
@@ -293,6 +283,7 @@
 done alarm.o generated
 make cd_pwd.o
 make bltins/cd_pwd.c
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 make ${PACKAGE_ast_INCLUDE}/ls.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_mode.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_mode.h dontcare
@@ -310,8 +301,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : def acct
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : def acct
 done FEATURE/acct dontcare generated
 prev include/nval.h implicit
 prev FEATURE/options implicit
@@ -384,8 +374,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/ttys
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/ttys
 done FEATURE/ttys dontcare generated
 done include/terminal.h dontcare
 prev FEATURE/setjmp implicit
@@ -399,8 +388,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/locale
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/locale
 done FEATURE/locale dontcare generated
 prev FEATURE/options implicit
 done include/edit.h dontcare
@@ -462,6 +450,8 @@
 done ${PACKAGE_ast_INCLUDE}/tmx.h
 make include/streval.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_float.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_float.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
@@ -508,10 +498,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/poll
-make cell_sys_headers.h implicit
-done cell_sys_headers.h dontcare virtual
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/poll
 done FEATURE/poll generated
 prev FEATURE/time implicit
 prev include/builtins.h implicit
@@ -545,8 +532,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/externs
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/externs
 done FEATURE/externs generated
 prev include/builtins.h implicit
 prev include/test.h implicit
@@ -587,8 +573,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/rlimits
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/rlimits
 done FEATURE/rlimits dontcare generated
 prev FEATURE/time implicit
 done include/ulimit.h
@@ -654,8 +639,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : def execargs
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : def execargs
 done FEATURE/execargs generated
 make FEATURE/pstat implicit
 meta FEATURE/pstat >FEATURE/%  pstat
@@ -664,8 +648,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : def pstat
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : def pstat
 done FEATURE/pstat generated
 prev FEATURE/time implicit
 make include/timeout.h implicit
@@ -746,7 +729,13 @@
 prev include/path.h implicit
 prev include/lexstates.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_wchar.h implicit
-prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
+make ${PACKAGE_ast_INCLUDE}/stdio.h implicit
+make ${PACKAGE_ast_INCLUDE}/ast_stdio.h implicit
+prev ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
+done ${PACKAGE_ast_INCLUDE}/ast_stdio.h dontcare
+done ${PACKAGE_ast_INCLUDE}/stdio.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_wchar.h
@@ -786,8 +775,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/cmds
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/cmds
 done FEATURE/cmds generated
 prev FEATURE/time implicit
 prev FEATURE/options implicit
@@ -903,7 +891,7 @@
 done init.o generated
 make io.o
 make sh/io.c
-prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 prev FEATURE/poll implicit
 prev FEATURE/dynamic implicit
 prev FEATURE/externs implicit
@@ -1197,18 +1185,6 @@
 make FEATURE/math implicit
 meta FEATURE/math features/%.sh>FEATURE/% features/math.sh math
 make features/math.sh
-make FEATURE/isoc implicit
-meta FEATURE/isoc features/%>FEATURE/% features/isoc isoc
-make features/isoc
-done features/isoc
-prev shell.req
-prev +ljobs
-prev +li
-prev ${mam_libsecdb}
-prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/isoc
-done FEATURE/isoc generated
 make data/math.tab implicit
 done data/math.tab
 done features/math.sh dontcare
@@ -1217,12 +1193,13 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libast}  : run features/math.sh FEATURE/isoc data/math.tab
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdll} ${mam_libcmd} ${mam_libast} ${mam_libm} 
${mam_libdl} ${mam_libast}  : run features/math.sh data/math.tab
+make ${PACKAGE_ast_INCLUDE}/ast_standards.h implicit
+done ${PACKAGE_ast_INCLUDE}/ast_standards.h dontcare
 done FEATURE/math generated
 prev include/streval.h implicit
 prev FEATURE/options implicit
-prev FEATURE/isoc implicit
+prev ${PACKAGE_ast_INCLUDE}/ast_standards.h implicit
 done data/strdata.c
 meta strdata.o %.c>%.o data/strdata.c strdata
 prev data/strdata.c
@@ -1370,8 +1347,7 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
-exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o ksh pmain.o ${mam_libshell} 
${mam_libast}
+exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -Wl,-z,origin 
-Wl,-R,\$ORIGIN/../lib -o ksh pmain.o ${mam_libshell} ${mam_libdl} ${mam_libast}
 done ksh generated
 make shcomp
 make shcomp.o
@@ -1392,10 +1368,9 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
 setv CC.DLL -UCC.DLL
 setv SH_DICT -DSH_DICT="\"libshell\""
-exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -o shcomp shcomp.o 
${mam_libshell} ${mam_libast}
+exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -Wl,-z,origin 
-Wl,-R,\$ORIGIN/../lib -o shcomp shcomp.o ${mam_libshell} ${mam_libdl} 
${mam_libast}
 done shcomp generated
 make suid_exec
 make suid_exec.o
@@ -1417,9 +1392,8 @@
 prev +li
 prev ${mam_libsecdb}
 prev +lintl
-prev ${mam_libdl}
 setv CC.DLL -UCC.DLL
-exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L${INSTALLROOT}/lib} -o suid_exec suid_exec.o ${mam_libast} 
${mam_libast}
+exec - ${CC} ${CCLDFLAGS} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -Wl,-z,origin 
-Wl,-R,\$ORIGIN/../lib -o suid_exec suid_exec.o ${mam_libast} ${mam_libdl} 
${mam_libast}
 done suid_exec generated
 make shell
 prev libshell.a archive
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/RELEASE 
ksh93_2006_12_04/src/cmd/ksh93/RELEASE
--- ksh93_2006_10_31/src/cmd/ksh93/RELEASE      2006-10-31 03:11:18.000000000 
+0100
+++ ksh93_2006_12_04/src/cmd/ksh93/RELEASE      2006-11-21 21:44:02.000000000 
+0100
@@ -1,4 +1,11 @@
-06-10-30  --- Release ksh93s-  ---
+06-11-20  --- Release ksh93s  ---
+06-11-20  A bug in which "${f...@]:1}}" expands a null argument (instead of
+         no argument), when foo[0] is not empty has been fixed. 
+06-11-16  The discipline functions have been modified to allow each subscript
+         to act independently.  Currently the discipline function will not
+         be called when called from a discipline function of the same variable.
+06-11-14  A bug which could cause a core dump if a file descriptor for
+         an internal file was closed from with a subshell has been fixed.
 06-10-30  The redirections <# pattern, and <## pattern have been added.
          Both seek forward to the beginning of the next line that contains
          the pattern.  The <## form copies the skipped portion to standard
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/array.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/array.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/array.c   2006-10-12 03:35:40.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/array.c   2006-11-16 21:48:47.000000000 
+0100
@@ -164,8 +164,6 @@
                if(!(ap->header.nelem&ARRAY_SCAN) && ap->cur >= ap->maxi)
                        ap = array_grow(np, ap, (int)ap->cur);
                if(ap->cur>=ap->maxi)
-                       errormsg(SH_DICT,ERROR_exit(1),e_subscript, 
nv_name(np));
-               if(ap->cur >= ap->maxi)
                        errormsg(SH_DICT,ERROR_exit(1),e_subscript,nv_name(np));
                up = &(ap->val[ap->cur]);
                if(up->np && array_isbit(ap->bits,ap->cur))
@@ -373,7 +371,7 @@
                ap->header.fun = 0;
                if((ap->val[0].cp=np->nvalue.cp))
                        i++;
-               else if(np->nvfun)
+               else if(nv_hasdisc(np,&array_disc))
                {
                        Namval_t *mp;
                        int offset = staktell();
@@ -644,6 +642,11 @@
        if(sp)
        {
                union Value *up;
+               if(mode&ARRAY_SETSUB)
+               {
+                       (*ap->header.fun)(np, sp, NV_ASETSUB);
+                       return(np);
+               }
                up = (union Value*)(*ap->header.fun)(np, sp, 
(mode&ARRAY_ADD)?NV_AADD:0);
                if(up && !up->cp && (mode&ARRAY_ADD) && (mode&ARRAY_FILL))
                {
@@ -797,8 +800,11 @@
                        }
                }
                return(NIL(void*));
+           case NV_ASETSUB:
+               ap->cur = (Namval_t*)sp;
+               /* FALL THROUGH*/
            case NV_ACURRENT:
-                       return((void*)ap->cur);
+               return((void*)ap->cur);
            case NV_ANAME:
                if(ap->cur)
                        return((void*)nv_name(ap->cur));
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/io.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/io.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/io.c      2006-11-01 17:23:50.000000000 
+0100
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/io.c      2006-11-17 23:20:44.000000000 
+0100
@@ -252,7 +252,10 @@
                        if(status&IOTTY)
                                dp->readf = slowread;
                        else if(status&IONOSEEK)
+                       {
                                dp->readf = piperead;
+                               sfset(iop, SF_IOINTR,1);
+                       }
                        else
                                dp->readf = 0;
                        dp->seekf = 0;
@@ -572,10 +575,12 @@
 static int io_patseek(regex_t *rp, Sfio_t* sp, int flags)
 {
        char    *cp, *match;
-       int     r, close_exec = sh.fdstatus[sffileno(sp)]&IOCLEX;
-       int     s=(PIPE_BUF>SF_BUFSIZE?SF_BUFSIZE:PIPE_BUF);
+       int     r, fd=sffileno(sp), close_exec = sh.fdstatus[fd]&IOCLEX;
+       int     was_share,s=(PIPE_BUF>SF_BUFSIZE?SF_BUFSIZE:PIPE_BUF);
        size_t  n,m;
        sh.fdstatus[sffileno(sp)] |= IOCLEX;
+       if(fd==0)
+               was_share = sfset(sp,SF_SHARE,1);
        while((cp=sfreserve(sp, -s, SF_LOCKR)) || (cp=sfreserve(sp,SF_UNBOUND, 
SF_LOCKR)))
        {
                m = n = sfvalue(sp);
@@ -599,6 +604,8 @@
        }
        if(!close_exec)
                sh.fdstatus[sffileno(sp)] &= ~IOCLEX;
+       if(fd==0 && !(was_share&SF_SHARE))
+               sfset(sp, SF_SHARE,0);
        return(0);
 }
 
@@ -1394,7 +1401,7 @@
        if(!(sh.fdstatus[sffileno(iop)]&IOCLEX) && (sfset(iop,0,0)&SF_SHARE))
                size = ed_read(sh.ed_context, fd, (char*)buff, size,0);
        else
-               size = read(fd, (char*)buff, size);
+               size = sfrd(iop,buff,size,handle);
        return(size);
 }
 /*
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/macro.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/macro.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/macro.c   2006-10-27 20:47:03.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/macro.c   2006-11-29 15:32:12.000000000 
+0100
@@ -1087,7 +1087,9 @@
                }
                else
 #endif  /* SHOPT_FILESCAN */
-               np = nv_open(id,sh.var_tree,flag);
+               if(sh.argaddr)
+                       flag &= ~NV_NOADD;
+               np = nv_open(id,sh.var_tree,flag|NV_NOFAIL);
                ap = np?nv_arrayptr(np):0;
                if(type)
                {
@@ -1236,9 +1238,6 @@
                        c = ':';
                }
        }
-       /* check for quoted @ */
-       if(mode=='@' && mp->quote && !v && c!='-')
-               mp->quoted-=2;
        if(type)
        {
                if(!isbracechar(c))
@@ -1446,6 +1445,9 @@
                if(v || c=='/' && offset>=0)
                        stakseek(offset);
        }
+       /* check for quoted @ */
+       if(mode=='@' && mp->quote && !v && c!='-')
+               mp->quoted-=2;
 retry2:
        if(v && (!nulflg || *v ) && c!='+')
        {
@@ -1595,10 +1597,20 @@
                        mac_error(np);
                }
        }
-       else if(sh_isoption(SH_NOUNSET) && (!np  || nv_isnull(np)))
+       else if(sh_isoption(SH_NOUNSET) && (!np  || nv_isnull(np) || 
(nv_isarray(np) && !np->nvalue.cp)))
        {
                if(np)
+               {
+                       if(nv_isarray(np))
+                       {
+                               
sfprintf(sh.strbuf,"%s[%s]\0",nv_name(np),nv_getsub(np));
+                               id = nv_getsub(np);
+                               id = sfstruse(sh.strbuf);
+                       }
+                       else
+                               id = nv_name(np);
                        nv_close(np);
+               }
                errormsg(SH_DICT,ERROR_exit(1),e_notset,id);
        }
        if(np)
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/main.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/main.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/main.c    2005-03-31 21:26:23.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/main.c    2006-11-14 23:23:46.000000000 
+0100
@@ -384,7 +384,13 @@
        {
                if(fno > 0)
                {
-                       fno = sh_iomovefd(fno);
+                       int r;
+                       if(fno < 10 && ((r=sh_fcntl(fno,F_DUPFD,10))>=10))
+                       {
+                               shp->fdstatus[r] = shp->fdstatus[fno];
+                               sh_close(fno);
+                               fno = r;
+                       }
                        fcntl(fno,F_SETFD,FD_CLOEXEC);
                        shp->fdstatus[fno] |= IOCLEX;
                        iop = sh_iostream(fno);
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/name.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/name.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/name.c    2006-10-11 22:22:20.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/name.c    2006-11-29 21:59:36.000000000 
+0100
@@ -35,6 +35,8 @@
 #include       "FEATURE/externs"
 #include       "streval.h"
 
+static char    *savesub = 0;
+
 #if !_lib_pathnative && _lib_uwin_path
 
 #define _lib_pathnative                1
@@ -315,7 +317,7 @@
                        char *sub=0;
                        int append = 0;
                        if(nv_isarray(np))
-                               sub = nv_getsub(np);
+                               sub = savesub;
                        if(cp=strchr(sp,'='))
                        {
                                if(cp[-1]=='+')
@@ -531,23 +533,29 @@
                        {
                                if(!np)
                                        return(np);
-                               if(c=='[')
+                               if(c=='[' || (c=='.' && nv_isarray(np)))
                                {
-                                       int n = mode|nv_isarray(np);
-                                       if(!mode && (flags&NV_ARRAY) && 
((c=sp[1])=='*' || c=='@') && sp[2]==']')
+                                       int n = 0;
+                                       if(c=='[')
                                        {
-                                               /* not implemented yet */
-                                               dp->last = cp;
-                                               return(np);
-                                       }
-                                       if(n&&(flags&NV_ARRAY))
-                                               n |= ARRAY_FILL;
-                                       cp = nv_endsubscript(np,sp,n);
+                                               n = mode|nv_isarray(np);
+                                               if(!mode && (flags&NV_ARRAY) && 
((c=sp[1])=='*' || c=='@') && sp[2]==']')
+                                               {
+                                                       /* not implemented yet 
*/
+                                                       dp->last = cp;
+                                                       return(np);
+                                               }
+                                               if(n&&(flags&NV_ARRAY))
+                                                       n |= ARRAY_FILL;
+                                               cp = nv_endsubscript(np,sp,n);
+                                       }
+                                       else
+                                               cp = sp;
                                        if((c = *cp)=='.' || c=='[' || 
(n&ARRAY_FILL))
 
                                        {
                                                int m = cp-sp;
-                                               char *sub = nv_getsub(np);
+                                               char *sub = m?nv_getsub(np):0;
                                                if(!sub)
                                                        sub = "0";
                                                n = strlen(sub)+2;
@@ -575,7 +583,9 @@
                                                        m = sp-name;
                                                        name = 
stack_extend(name, cp-1, r);
                                                        sp = (char*)name + m;
+                                                       *sp = '[';
                                                        memcpy(sp+1,sub,n-2);
+                                                       sp[n-1] = ']';
                                                        cp = sp+n;
                                                        
                                                }
@@ -758,8 +768,12 @@
                }
                else
                {
+                       char *sub=0;
+                       if(sh_isoption(SH_XTRACE) && nv_isarray(np))
+                               sub = nv_getsub(np);
                        c = msg==e_aliname? 0: (append | (flags&NV_EXPORT)); 
                        nv_putval(np, cp, c);
+                       savesub = sub;
                }
                nv_onattr(np, flags&NV_ATTRIBUTES);
        }
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/nvdisc.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/nvdisc.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/nvdisc.c  2006-08-23 23:47:07.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/nvdisc.c  2006-12-04 21:53:11.000000000 
+0100
@@ -176,6 +176,55 @@
        Namval_t        *disc[4];
 };
 
+struct blocked
+{
+       struct blocked  *next;
+       Namval_t        *np;
+       int             flags;
+       void            *sub;
+       int             isub;
+};
+
+static struct blocked  *blist;
+
+#define isblocked(bp,type)     ((bp)->flags & (1<<(type)))
+#define block(bp,type)         ((bp)->flags |= (1<<(type)))
+#define unblock(bp,type)       ((bp)->flags &= ~(1<<(type)))
+
+/*
+ * returns pointer to blocking structure
+ */
+static struct blocked *block_info(Namval_t *np, struct blocked *pp)
+{
+       register struct blocked *bp;
+       void                    *sub=0;
+       int                     isub=0;
+       if(nv_isarray(np) && (isub=nv_aindex(np)) < 0)
+               sub = nv_associative(np,(const char*)0,NV_ACURRENT);
+       for(bp=blist ; bp; bp=bp->next)
+       {
+               if(bp->np==np && bp->sub==sub && bp->isub==isub)
+                       return(bp);
+       }
+       if(pp)
+       {
+               pp->np = np;
+               pp->flags = 0;
+               pp->isub = isub;
+               pp->sub = sub;
+               pp->next = blist;
+               blist = pp;
+       }
+       return(pp);
+}
+
+static void block_done(struct blocked *bp)
+{
+       blist = bp = bp->next;
+       if(bp && (bp->isub>=0 || bp->sub))
+               nv_putsub(bp->np, bp->sub,(bp->isub<0?0:bp->isub)|ARRAY_SETSUB);
+}
+
 /*
  * free discipline if no more discipline functions
  */
@@ -201,34 +250,41 @@
  */
 static void    assign(Namval_t *np,const char* val,int flags,Namfun_t *handle)
 {
-       register struct vardisc *vp = (struct vardisc*)handle;
-       register Namval_t *nq, **disc;
-       disc =  &(vp->disc[(flags&NV_APPEND)?APPEND:ASSIGN]);
-       if(val || *disc==BLOCKED)
+       int             type = (flags&NV_APPEND)?APPEND:ASSIGN;
+       register        struct vardisc *vp = (struct vardisc*)handle;
+       register        Namval_t *nq =  vp->disc[type];
+       struct blocked  block, *bp = block_info(np, &block);
+       Namval_t        node;
+       if(val || isblocked(bp,type))
        {
-               if(!(nq= *disc) || nq==BLOCKED)
+               if(!nq || isblocked(bp,type))
                {
                        nv_putv(np,val,flags,handle);
-                       return;
+                       goto done;
+               }
+               node = *SH_VALNOD;
+               if(!nv_isnull(SH_VALNOD))
+               {
+                       nv_onattr(SH_VALNOD,NV_NOFREE);
+                       nv_unset(SH_VALNOD);
                }
                if(flags&NV_INTEGER)
                        
nv_onattr(SH_VALNOD,(flags&(NV_INTEGER|NV_LONG|NV_DOUBLE|NV_EXPNOTE|NV_SHORT)));
                nv_putval(SH_VALNOD, val, (flags&NV_INTEGER)?flags:NV_NOFREE);
        }
        else
-               disc =  &(vp->disc[UNASSIGN]);
-       if((nq= *disc) && nq!=BLOCKED)
+               nq =  vp->disc[type=UNASSIGN];
+       if(nq && !isblocked(bp,type))
        {
-               Namval_t *nq1, **disc1;
-               *disc=BLOCKED;
-               if ((flags&NV_APPEND) && (disc1= &(vp->disc[LOOKUP])) && (nq1= 
*disc1) && nq1!=BLOCKED)
-                       *disc1=BLOCKED;
+               int bflag;
+               block(bp,type);
+               if (type==APPEND && (bflag= !isblocked(bp,LOOKUP)))
+                       block(bp,LOOKUP);
                sh_fun(nq,np,(char**)0);
-               if((flags&NV_APPEND) && disc1 && nq1 && nq1!=BLOCKED)
-                       *disc1=nq1;
-               if(*disc==BLOCKED)
-                       *disc=nq;
-               else if(!*disc)
+               unblock(bp,type);
+               if(bflag)
+                       unblock(bp,LOOKUP);
+               if(!vp->disc[type])
                        chktfree(np,vp);
        }
        if(val)
@@ -249,20 +305,23 @@
                if(cp)
                        nv_putv(np,cp,flags|NV_RDONLY,handle);
                nv_unset(SH_VALNOD);
+               /* restore everything but the nvlink field */
+               memcpy(&SH_VALNOD->nvname,  &node.nvname, 
sizeof(node)-sizeof(node.nvlink));
        }
        else if(sh_isstate(SH_INIT))
        {
                /* don't free functions during reinitialization */
                nv_putv(np,val,flags,handle);
        }
-       else if(!nq || nq!=BLOCKED)
+       else if(!nq || !isblocked(bp,type))
        {
                Dt_t *root = sh_subfuntree(1);
                int n;
                Namarr_t *ap;
+               block(bp,type);
                nv_putv(np, val, flags, handle);
                if(nv_isarray(np) && (ap=nv_arrayptr(np)) && ap->nelem>0)
-                       return;
+                       goto done;
                for(n=0; n < sizeof(vp->disc)/sizeof(*vp->disc); n++)
                {
                        if((nq=vp->disc[n]) && !nv_isattr(nq,NV_NOFREE))
@@ -271,10 +330,14 @@
                                dtdelete(root,nq);
                        }
                }
+               unblock(bp,type);
                nv_disc(np,handle,NV_POP);
                if(!handle->nofree)
                        free(handle);
        }
+done:
+       if(bp== &block)
+               block_done(bp);
 }
 
 /*
@@ -283,22 +346,37 @@
  */
 static char*   lookup(Namval_t *np, Namfun_t *handle)
 {
-       register struct vardisc *vp = (struct vardisc*)handle;
-       register Namval_t *nq;
-       register char *cp=0;
-       if((nq=vp->disc[LOOKUP]) &&  nq!=BLOCKED)
+       register struct vardisc *vp = (struct vardisc*)handle;
+       struct blocked          block, *bp = block_info(np, &block);
+       register Namval_t       *nq = vp->disc[LOOKUP];
+       register char           *cp=0;
+       Namval_t                node;
+       if(nq && !isblocked(bp,LOOKUP))
        {
-               nv_unset(SH_VALNOD);
-               vp->disc[LOOKUP]=BLOCKED;
+               node = *SH_VALNOD;
+               if(!nv_isnull(SH_VALNOD))
+               {
+                       nv_onattr(SH_VALNOD,NV_NOFREE);
+                       nv_unset(SH_VALNOD);
+               }
+               block(bp,LOOKUP);
                sh_fun(nq,np,(char**)0);
-               if(vp->disc[LOOKUP]==BLOCKED)
-                       vp->disc[LOOKUP]=nq;
-               else if(!vp->disc[LOOKUP])
+               unblock(bp,LOOKUP);
+               if(!vp->disc[LOOKUP])
                        chktfree(np,vp);
                cp = nv_getval(SH_VALNOD);
+               if(!nv_isnull(&node))
+               {
+                       if(cp)
+                               cp = strdup(cp);
+                       /* restore everything but the nvlink field */
+                       memcpy(&SH_VALNOD->nvname,  &node.nvname, 
sizeof(node)-sizeof(node.nvlink));
+               }
        }
        if(!cp)
                cp = nv_getv(np,handle);
+       if(bp== &block)
+               block_done(bp);
        return(cp);
 }
 
@@ -385,9 +463,10 @@
                vp->disc[type] = action;
        else
        {
+               struct blocked *bp;
                action = vp->disc[type];
                vp->disc[type] = 0;
-               if(action!=BLOCKED)
+               if(!(bp=block_info(np,(struct blocked*)0)) || 
!isblocked(bp,UNASSIGN))
                        chktfree(np,vp);
        }
        return(action?(char*)action:empty);
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/parse.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/parse.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/parse.c   2006-10-24 04:19:26.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/parse.c   2006-11-29 15:32:12.000000000 
+0100
@@ -1348,6 +1348,7 @@
        {
                iovname=shlex.arg->argval+1;
                token= sh_lex();
+               iof = 0;
        }
        switch(token&0xff)
        {
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/sh/xec.c 
ksh93_2006_12_04/src/cmd/ksh93/sh/xec.c
--- ksh93_2006_10_31/src/cmd/ksh93/sh/xec.c     2006-10-12 16:19:07.000000000 
+0200
+++ ksh93_2006_12_04/src/cmd/ksh93/sh/xec.c     2006-11-29 21:18:59.000000000 
+0100
@@ -839,7 +839,10 @@
                                                        if(item->strm)
                                                        {
                                                                
sfclrlock(item->strm);
-                                                               
sfclose(item->strm);
+                                                               if(item->strm 
== sh.hist_ptr->histfp)
+                                                                       
hist_close(sh.hist_ptr);
+                                                               else
+                                                                       
sfclose(item->strm);
                                                        }
                                                }
                                                /* failure on special built-ins 
fatal */
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/arrays.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/arrays.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/arrays.sh      2006-06-28 
19:34:09.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/arrays.sh      2006-11-20 
17:48:41.000000000 +0100
@@ -371,4 +371,8 @@
 [[ $(typeset | grep foo$) == *associative* ]] || err_exit 'array lost 
associative attribute'
 [[ ! ${f...@]}  ]] || err_exit 'array not empty'
 [[ ! ${!f...@]}  ]] || err_exit 'array names not empty'
+unset foo
+foo=bar
+set -- "${f...@]:1}"
+(( $# == 0 )) || err_exit '${f...@]:1} should not have any values'
 exit $((Errors))
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/basic.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/basic.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/basic.sh       2006-10-02 
23:25:17.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/basic.sh       2006-12-04 
17:38:27.000000000 +0100
@@ -272,17 +272,18 @@
        return 1
 }
 optbug ||  err_exit 'array size optimzation bug'
+wait # not running --pipefile which would interfere with subsequent tests
+: $(jobs -p) # required to clear jobs for next jobs -p (interactive side 
effect)
 sleep 20 &
-if     [[ $(jobs -p) != *$!* ]]
+if     [[ $(jobs -p) != $! ]]
 then   err_exit 'jobs -p not reporting a background job' 
 fi
 sleep 20 &
 foo()
 {
        set -- $(jobs -p)
-       (( $# == 2 )) || err_exit 'both jobs not reported'
+       (( $# == 2 )) || err_exit "$# jobs not reported -- 2 expected"
 }
-: $(jobs -p)
 foo
 [[ $( (trap 'print alarm' ALRM; sleep 4) & sleep 2; kill -ALRM $!) == alarm ]] 
|| err_exit 'ALRM signal not working'
 [[ $($SHELL -c 'trap "" HUP; $SHELL -c "(sleep 2;kill -HUP $$)& sleep 4;print 
done"') != done ]] && err_exit 'ignored traps not being ignored'
@@ -322,6 +323,10 @@
 exec 3> /dev/null
 print 'print foo "$@"' > /tmp/ksh$$x
 [[ $( print "(/tmp/ksh$$x bar)" | $SHELL 2>/dev/null) == 'foo bar' ]] || 
err_exit 'script pipe to shell fails'
+print "#! $SHELL" > /tmp/ksh$$x
+print 'print  -- $0' >> /tmp/ksh$$x
+chmod +x /tmp/ksh$$x
+[[ $(/tmp/ksh$$x) == /tmp/ksh$$x ]] || err_exit  "\$0 is $0 instead of 
/tmp/ksh$$x"
 rm -f /tmp/ksh$$x
 exec 3<&-
 exit $((Errors))
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/builtins.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/builtins.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/builtins.sh    2006-10-20 
05:49:52.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/builtins.sh    2006-11-23 
07:37:36.000000000 +0100
@@ -324,7 +324,20 @@
 (( $? == 1 )) || err_exit "wait not saving exit value"
 wait $pid2
 (( $? == 127 )) || err_exit "subshell job known to parent"
-if     [[ $(foo=bar;foo=$foo exec -c $SHELL -c 'print $foo') != bar ]]
+set --noglob
+ifs=$IFS
+IFS=,
+set -- $(getconf LIBPATH)
+IFS=$ifs
+env=
+for v
+do     IFS=:
+       set -- $v
+       IFS=$ifs
+       env="$env $2=\"\$$2\""
+done
+set --glob
+if     [[ $(foo=bar; eval foo=\$foo $env exec -c \$SHELL -c \'print \$foo\') 
!= bar ]]
 then   err_exit '"name=value exec -c ..." not working'
 fi
 $SHELL -c 'OPTIND=-1000000; getopts a opt -a' 2> /dev/null
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/comvar.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/comvar.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/comvar.sh      2006-06-28 
19:34:23.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/comvar.sh      2006-11-17 
17:14:55.000000000 +0100
@@ -191,5 +191,7 @@
 localvar
        (( (point.x*point.x + point.y*point.y) == 100 )) || err_exit "global 
compound variable not preserved"
 [[ $($SHELL -c 'foo=();foo.[x]=(y z); print ${foo...@]}') == 'y z' ]] 2> 
/dev/null || err_exit 'foo=( [x]=(y z)  not working'
+unset z
+( [[ ${z.foo.bar:-abc} == abc ]] 2> /dev/null) || err_exit ':- not working 
with compound variables'
 exit $((Errors))
 
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/exit.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/exit.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/exit.sh        2006-08-30 
23:09:07.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/exit.sh        2006-11-23 
07:36:57.000000000 +0100
@@ -45,11 +45,16 @@
 PATH=$PATH \
 SHELL=$ABSSHELL \
 $(
-       IFS=:
+       set --noglob
+       ifs=$IFS
+       IFS=,
        set -- $(getconf LIBPATH)
-       while (($#>1))
-       do      eval [[ \$$2 ]] && eval print -n \" \"\$2=\"\$$2\"
-               shift 2
+       IFS=$ifs
+       for v
+       do      IFS=:
+               set -- $v
+               IFS=$ifs
+               eval [[ \$$2 ]] && eval print -n \" \"\$2=\"\$$2\"
        done
 ) \
 exec -c -a -ksh ${ABSHELL} -c "exit 1" 1>/dev/null 2>&1
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/functions.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/functions.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/functions.sh   2006-06-28 
19:34:32.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/functions.sh   2006-11-29 
15:40:15.000000000 +0100
@@ -738,4 +738,21 @@
 unset foo bar
 [[ $(foo=hello g) == hellobam ]] || err_exit 'function exports not passed on'
 [[ $(bar=hello g) == bam ]] || err_exit 'function exports not overridden'
+unset -f foo
+function foo
+{
+       typeset line=$1
+       set +n
+       while   [[ $line ]]
+       do      if      [[ ! $varname ]]
+               then    varname=${line%% *}
+                       line=${line##"$varname"?( )}
+                       [[ $line ]] && continue
+               else    print ok
+                       return
+               fi
+               varname=
+       done
+}
+[[ $(foo 'NUMBERED RECORDSIZE') == ok ]] || err_exit 'optimization error with 
undefined variable'
 exit $((Errors))
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/io.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/io.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/io.sh  2006-10-31 16:48:17.000000000 
+0100
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/io.sh  2006-11-14 21:34:23.000000000 
+0100
@@ -99,6 +99,14 @@
        print -r -- "$(cat in$$)"
        cmp -s in$$ out$$'  2> /dev/null
 [[ $? == 0 ]] || err_exit 'builtin cat truncates files'
+cat >| script <<-\!
+print hello
+( exec 3<&- 4<&-)
+exec 3<&- 4<&-
+print world
+!
+chmod +x script
+[[ $( $SHELL ./script) == $'hello\nworld' ]] || err_exit 'closing 3 & 4 causes 
script to fail'
 cd ~- || err_exit "cd back failed"
 ( exec  > '' ) 2> /dev/null  && err_exit '> "" does not fail'
 unset x
@@ -217,6 +225,8 @@
        [[  $REPLY == {39}(l) ]] || err_exit "<## pattern failed to position"
        command exec 3<# *abc*
        read -u3 && err_exit "not found pattern not positioning at eof"
+       cat /tmp/seek$$ | read -r <# *WWW*
+       [[ $REPLY == *WWWWW* ]] || err_exit '<# not working for pipes'
 else   err_exit "/tmp/seek$$: cannot open for reading"
 fi
 trap "" EXIT
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/substring.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/substring.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/substring.sh   2006-08-11 
18:35:32.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/substring.sh   2006-12-01 
21:11:30.000000000 +0100
@@ -492,4 +492,9 @@
 if     [[ ax == @(a)* ]] && [[ ${.sh.match[1]:0:${#.sh.match[1]}}  != a ]] 
 then   err_exit '${.sh.match[1]:1:${#.sh.match[1]}} not expanding correctly'
 fi
+
+string='foo(d:\nt\box\something)bar'
+expected='d:\nt\box\something'
+[[ ${string/*\(+([!\)])\)*/\1} == "$expected" ]] || err_exit "substring 
expansion failed '${string/*\(+([!\)])\)*/\1}' returned -- '$expected' expected"
+
 exit $((Errors))
diff -r -N -u ksh93_2006_10_31/src/cmd/ksh93/tests/variables.sh 
ksh93_2006_12_04/src/cmd/ksh93/tests/variables.sh
--- ksh93_2006_10_31/src/cmd/ksh93/tests/variables.sh   2006-10-24 
16:26:07.000000000 +0200
+++ ksh93_2006_12_04/src/cmd/ksh93/tests/variables.sh   2006-11-17 
22:00:33.000000000 +0100
@@ -63,7 +63,7 @@
 if     [[ $OLDPWD != $old ]]
 then   err_exit OLDPWD variable not working
 fi
-cd $d || err_exit cd failed
+cd $old || err_exit cd failed
 # REPLY
 read <<-!
        foobar
@@ -125,6 +125,7 @@
 foo=bar
 (
        unset foo
+       set +u
        if      [[ $foo != '' ]]
        then    err_exit '$foo not null after unset in subsehll'
        fi
@@ -145,6 +146,7 @@
 if     [[ ${*:0:1} != "$0" ]]
 then   err_exit '${@:0} not expanding correctly'
 fi
+ACCESS=0
 function COUNT.set
 {
         (( ACCESS++ ))
@@ -500,7 +502,6 @@
        } 
 } 2> /dev/null || err_exit "Can't add get discipline to .sh.foobar"
 [[ ${.sh.foobar} == world ]]  || err_exit 'get discipline for .sh.foobar not 
working'
-unset x
 x='a|b'
 IFS='|'
 set -- $x
@@ -515,4 +516,41 @@
 : & pid=$!
 ( : & )
 [[ $pid == $! ]] || err_exit '$! value not preserved across subshells'
+unset foo
+typeset -A foo
+function foo.set
+{
+       case ${.sh.subscript} in
+       bar)    if      ((.sh.value > 1 ))
+               then    .sh.value=5
+                       foo[barrier_hit]=yes
+               fi
+               ;;
+       barrier_hit)
+               if      [[ ${.sh.value} = yes ]]
+               then    foo[barrier_not_hit]=no
+               else    foo[barrier_not_hit]=yes
+               fi
+               ;;
+       esac
+}
+foo[barrier_hit]=no 
+foo[bar]=1
+(( foo[bar] == 1 )) || err_exit 'foo[bar] should be 1'
+[[ ${foo[barrier_hit]} == no ]] || err_exit 'foo[barrier_hit] should be no'
+[[ ${foo[barrier_not_hit]} == yes ]] || err_exit 'foo[barrier_not_hit] should 
be yes'
+foo[barrier_hit]=no 
+foo[bar]=2
+(( foo[bar] == 5 )) || err_exit 'foo[bar] should be 5'
+[[ ${foo[barrier_hit]} == yes ]] || err_exit 'foo[barrier_hit] should be yes'
+[[ ${foo[barrier_not_hit]} == no ]] || err_exit 'foo[barrier_not_hit] should 
be no'
+unset x
+typeset -i x
+function x.set
+{
+       typeset sub=${.sh.subscript}
+       (( sub > 0 )) && (( x[sub-1]= x[sub-1] + .sh.value ))
+}
+x[0]=0 x[1]=1 x[2]=2 x[3]=3
+[[ $...@]} == '12 8 5 3' ]] || err_exit 'set discipline for indexed array not 
working correctly'
 exit $((Errors))
diff -r -N -u ksh93_2006_10_31/src/lib/libast/comp/conf.sh 
ksh93_2006_12_04/src/lib/libast/comp/conf.sh
--- ksh93_2006_10_31/src/lib/libast/comp/conf.sh        2006-10-25 
17:17:18.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/comp/conf.sh        2006-11-18 
08:46:03.000000000 +0100
@@ -21,7 +21,7 @@
 ########################################################################
 : generate getconf and limits info
 #
-# @(#)conf.sh (AT&T Research) 2006-10-25
+# @(#)conf.sh (AT&T Research) 2006-11-15
 #
 # this script generates these files from the table file in the first arg
 # the remaining args are the C compiler name and flags
@@ -201,6 +201,10 @@
                        *)      standards="$standards $standard"
                                ;;
                        esac
+                       case $name:$flags in
+                       *:*S*)  ;;
+                       VERSION)flags="${flags}S" ;;
+                       esac
                        case $name in
                        *VERSION*)key=${standard}${section} ;;
                        *)        key= ;;
@@ -338,6 +342,7 @@
 while  read line
 do     flags=F
        section=
+       underscore=
        define=$line
        IFS=_
        set $line
@@ -399,7 +404,7 @@
        case $flags in
        *R*)    case $call in
                SI)     ;;
-               *)      flags=${flags}U ;;
+               *)      underscore=U ;;
                esac
                ;;
        *)      case " $standards " in
@@ -408,7 +413,9 @@
                *" $standard "*)
                        case $call in
                        SI)     ;;
-                       *)      flags=${flags}PU ;;
+                       *)      flags=${flags}P
+                               underscore=U
+                               ;;
                        esac
                        shift
                        ;;
@@ -421,7 +428,7 @@
        '')     standard=$HOST
                case $call in
                SI)     ;;
-               *)      flags=${flags}U ;;
+               *)      underscore=U ;;
                esac
                case $call in
                CS|PC|SC)
@@ -457,11 +464,13 @@
        '')     ;;
        
CONFORMANCE|FS_3D|HOSTTYPE|LIBPATH|LIBPREFIX|LIBSUFFIX|PATH_ATTRIBUTES|PATH_RESOLVE|UNIVERSE)
                ;;
-       *)      
-               values=
+       *)      values=
                script=
                args=
                headers=
+               case $name in
+               V[1-9]_*|V[1-9][0-9]_*) underscore=VW ;;
+               esac
                case $call in
                CS|SI)  key=CS ;;
                *)      key=$call ;;
@@ -477,6 +486,9 @@
                        '')     case $call in
                                SI)     flags=O$flags ;;
                                esac
+                               case $underscore in
+                               ?*)     flags=${flags}${underscore} ;;
+                               esac
                                old=QQ
                                case $name in
                                *VERSION*)old=${old}_${standard}${part} ;;
@@ -497,7 +509,7 @@
                                eval CONF_standard_${key}='$'standard
                                eval CONF_call_${key}='$'call
                                eval CONF_section_${key}='$'section
-                               eval CONF_flags_${key}=D'$'flags
+                               eval CONF_flags_${key}=d'$'flags
                                eval CONF_define_${key}='$'define
                                eval CONF_values_${key}='$'values
                                eval CONF_script_${key}='$'script
@@ -533,7 +545,7 @@
                                        case $call in
                                        SI)     flags=O$flags ;;
                                        esac
-                                       eval 
CONF_flags_${key}=D'$'flags'$'CONF_flags_${key}
+                                       eval 
CONF_flags_${key}=d'$'flags'$'CONF_flags_${key}
                                        ;;
                                esac
                                old=QQ
@@ -634,27 +646,30 @@
        case $call in
        QQ)     call=XX
                for c in SC PC CS
-               do      eval x='$'CONF_call_${c}_${name}
+               do      case $flags in
+                       *S*)    case $section in
+                               1)      eval 
x='$'CONF_call_${c}_${standard}_${name} ;;
+                               *)      eval 
x='$'CONF_call_${c}_${standard}${section}_${name} ;;
+                               esac
+                               ;;
+                       *)      eval x='$'CONF_call_${c}_${name}
+                               ;;
+                       esac
                        case $x in
                        ?*)     call=$x
                                break
                                ;;
                        esac
-                       case $flags in
-                       *S*)    eval x='$'CONF_call_${c}_${standard}_${name}
-                               case $x in
-                               ?*)     call=$x
-                                       break
-                                       ;;
-                               esac
-                               ;;
-                       esac
                done
                case $call in
                XX)     for c in SC PC CS
                        do      echo "_${c}_${name}"
                                case $flags in
-                               *S*)    echo "_${c}_${standard}_${name}" ;;
+                               *S*)    case $section in
+                                       1)      echo 
"_${c}_${standard}_${name}" ;;
+                                       *)      echo 
"_${c}_${standard}${section}_${name}" ;;
+                                       esac
+                                       ;;
                                esac
                        done
                        ;;
@@ -669,7 +684,7 @@
                ;;
        esac
        case $flags in
-       *[ABCEGHIJQTVWYZabcdefghijklmnopqrstuvwxyz_123456789]*)
+       *[ABEGHIJQTYZabcefghijklmnopqrstuvwxyz_123456789]*)
                echo "$command: $name: $flags: invalid flag(s)" >&2
                exit 1
                ;;
@@ -686,7 +701,7 @@
        case $call in
        XX)     ;;
        *)      case $flags in
-               *D*)    conf_op=${define} ;;
+               *d*)    conf_op=${define} ;;
                *O*)    conf_op=${call}_${name} ;;
                *R*)    conf_op=_${standard}_${call}_${name} ;;
                *S*)    conf_op=_${call}_${standard}_${name} ;;
@@ -700,8 +715,15 @@
        *:*L*)  echo "${conf_name}"
                echo "_${standard}_${conf_name}"
                ;;
+       *:*M*)  case $section in
+               1)      echo "_${standard}_${conf_name}" ;;
+               *)      echo "_${standard}${section}_${conf_name}" ;;
+               esac
+               ;;
        esac
-done | sort -u >> $tmp.q
+done > $tmp.q
+sort -u < $tmp.q > $tmp.t
+mv $tmp.t $tmp.q
 sort -u < $tmp.v > $tmp.t
 mv $tmp.t $tmp.v
 case $debug in
@@ -833,39 +855,37 @@
        case $call in
        QQ)     call=XX
                for c in SC PC CS
-               do      eval x='$'CONF_call_${c}_${name}
+               do      case $flags in
+                       *S*)    case $section in
+                               1)      eval 
x='$'CONF_call_${c}_${standard}_${name} ;;
+                               *)      eval 
x='$'CONF_call_${c}_${standard}${section}_${name} ;;
+                               esac
+                               ;;
+                       *)      eval x='$'CONF_call_${c}_${name}
+                               ;;
+                       esac
                        case $x in
                        ?*)     call=$x
                                break
                                ;;
                        esac
-                       case $flags in
-                       *S*)    eval x='$'CONF_call_${c}_${standard}_${name}
-                               case $x in
-                               ?*)     call=$x
-                                       break
-                                       ;;
-                               esac
-                               ;;
-                       esac
                done
                case $call in
                XX)     for c in SC PC CS
-                       do      eval x='$'CONF_const__${c}_${name}
+                       do      case $flags in
+                               *S*)    case $section in
+                                       1)      eval 
x='$'CONF_const__${c}_${standard}_${name} ;;
+                                       *)      eval 
x='$'CONF_const__${c}_${standard}${section}_${name} ;;
+                                       esac
+                                       ;;
+                               *)      eval x='$'CONF_const__${c}_${name}
+                                       ;;
+                               esac
                                case $x in
                                1)      call=$c
                                        break
                                        ;;
                                esac
-                               case $flags in
-                               *S*)    eval 
x='$'CONF_const__${c}_${standard}_${name}
-                                       case $x in
-                                       1)      call=$c
-                                               break
-                                               ;;
-                                       esac
-                                       ;;
-                               esac
                        done
                        ;;
                esac
@@ -898,7 +918,7 @@
                ;;
        esac
        conf_op=-1
-       for s in _${call}_${name} _${call}_${standard}_${name} 
_${call}_${standard}${section}_${name} ${call}_${name}
+       for s in _${call}_${standard}${section}_${name} 
_${call}_${standard}_${name} _${call}_${section}_${name} _${call}_${name} 
${call}_${name}
        do      eval x='$'CONF_const_${s}
                case $x in
                1)      conf_op=${s}
@@ -909,6 +929,12 @@
        conf_section=$section
        conf_flags=0
        case $flags in
+       *C*)    conf_flags="${conf_flags}|CONF_DEFER_CALL" ;;
+       esac
+       case $flags in
+       *D*)    conf_flags="${conf_flags}|CONF_DEFER_MM" ;;
+       esac
+       case $flags in
        *F*)    conf_flags="${conf_flags}|CONF_FEATURE" ;;
        esac
        case $flags in
@@ -929,6 +955,12 @@
        case $flags in
        *U*)    conf_flags="${conf_flags}|CONF_UNDERSCORE" ;;
        esac
+       case $flags in
+       *V*)    conf_flags="${conf_flags}|CONF_NOUNDERSCORE" ;;
+       esac
+       case $flags in
+       *W*)    conf_flags="${conf_flags}|CONF_PREFIX_ONLY" ;;
+       esac
        case $shell in
        ksh)    conf_flags=${conf_flags#0?} ;;
        esac
@@ -1095,7 +1127,9 @@
                        esac
                        case $x in
                        1)      conf_minmax=$s
-                               conf_flags="${conf_flags}|CONF_MINMAX_DEF"
+                               case $flags in
+                               *M*)    
conf_flags="${conf_flags}|CONF_MINMAX_DEF" ;;
+                               esac
                                break
                                ;;
                        esac
@@ -1157,7 +1191,9 @@
                        esac
                        case $x in
                        ?*)     conf_minmax=$x
-                               conf_flags="${conf_flags}|CONF_MINMAX_DEF"
+                               case $flags in
+                               *M*)    
conf_flags="${conf_flags}|CONF_MINMAX_DEF" ;;
+                               esac
                                ;;
                        esac
                        ;;
@@ -1238,17 +1274,21 @@
 esac
 cat <<!
 
-#define CONF_FEATURE   (1<<0)
-#define CONF_LIMIT     (1<<1)
-#define CONF_LIMIT_DEF (1<<2)
-#define CONF_MINMAX    (1<<3)
-#define CONF_MINMAX_DEF        (1<<4)
-#define CONF_NOSECTION (1<<5)
-#define CONF_PREFIXED  (1<<6)
-#define CONF_STANDARD  (1<<7)
-#define CONF_STRING    (1<<8)
-#define CONF_UNDERSCORE        (1<<9)
-#define CONF_USER      (1<<10)
+#define CONF_DEFER_CALL                0x0001
+#define CONF_DEFER_MM          0x0002
+#define CONF_FEATURE           0x0004
+#define CONF_LIMIT             0x0008
+#define CONF_LIMIT_DEF         0x0010
+#define CONF_MINMAX            0x0020
+#define CONF_MINMAX_DEF                0x0040
+#define CONF_NOSECTION         0x0080
+#define CONF_NOUNDERSCORE      0x0100
+#define CONF_PREFIX_ONLY       0x0200
+#define CONF_PREFIXED          0x0400
+#define CONF_STANDARD          0x0800
+#define CONF_STRING            0x1000
+#define CONF_UNDERSCORE                0x2000
+#define CONF_USER              0x4000
 
 struct Conf_s; typedef struct Conf_s Conf_t;
 
diff -r -N -u ksh93_2006_10_31/src/lib/libast/comp/conf.tab 
ksh93_2006_12_04/src/lib/libast/comp/conf.tab
--- ksh93_2006_10_31/src/lib/libast/comp/conf.tab       2006-10-25 
17:17:18.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/comp/conf.tab       2006-12-04 
23:12:14.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # posix { getconf limits } macro table
 #
-# @(#)conf.tab (AT&T Research) 2006-10-25
+# @(#)conf.tab (AT&T Research) 2006-12-04
 #
 # name standard section call flags [ header ... ] [ value ... ]
 #
@@ -10,6 +10,8 @@
 # section:     section number in standard
 # call:                CS=confstr PC=pathconf SC=sysconf SI=sysinfo QQ=query 
XX=none
 # flags:       0       no flags
+#              C       defer call to native getconf(1)
+#              D       defer minmax to native getconf(1)
 #              F       unistd.h feature
 #              L       limits.h constant
 #              M       has _<standard><section>_<name> minmax value
@@ -18,6 +20,8 @@
 #              R       _<standard>_<call>_<section>_<name>
 #              S       _<call>_<standard><section>_<name>
 #              U       <standard><section>_<name> prefixed by underscore
+#              V       _ prefix not allowed
+#              W       standard required
 #              X       define even if native is dynamic (ast special)
 #
 # default names if <section> <= 1
@@ -33,24 +37,34 @@
 # the [NSU] flags modify the default names
 #
 
+ABI_AIO_XFER_MAX               C       QQ 1 L
+ABI_ASYNCHRONOUS_IO            C       QQ 1 L
+ABI_ASYNC_IO                   C       QQ 1 L
+ADVISORY_INFO                  POSIX   SC 1 FUW
 AIO_LISTIO_MAX                 POSIX   SC 1 LMU        2
 AIO_MAX                                POSIX   SC 1 LMU        1
 AIO_PRIO_DELTA_MAX             POSIX   SC 1 LMU
+ALLOC_SIZE_MIN                 POSIX   PC 1 LUVW
+ARCHITECTURE                   SVID    SI 1 0
 ARG_MAX                                POSIX   SC 1 LMUX       NCARGS 4096
-ASYNCHRONOUS_IO                        POSIX   SC 1 FU
-ASYNC_IO                       POSIX   PC 1 FU
+ASYNCHRONOUS_IO                        POSIX   SC 1 CDFUW
+ASYNC_IO                       POSIX   PC 1 FUW
 ATEXIT_MAX                     XOPEN   SC 1 LMU        32
+AUDIT                          C       QQ 1 L
+AVAIL_PROCESSORS               C       QQ 1 L
 AVPHYS_PAGES                   SUN     SC 1 0
+BARRIERS                       POSIX   SC 1 FUW
 BC_BASE_MAX                    POSIX   SC 2 LMN        99
 BC_DIM_MAX                     POSIX   SC 2 LMN        2048
 BC_SCALE_MAX                   POSIX   SC 2 LMN        99
 BC_STRING_MAX                  POSIX   SC 2 LMN        1000
+BUSTYPES                       SVID    SI 1 0
 CHARCLASS_NAME_MAX             XOPEN   XX 1 L          14
 CHAR_BIT                       C       XX 1 L          8
 CHAR_MAX                       C       XX 1 L
 CHAR_MIN                       C       XX 1 L
-CHAR_TERM                      POSIX   SC 2 FU
-CHILD_MAX                      POSIX   SC 1 LMUX       6       cc{
+CHAR_TERM                      POSIX   SC 2 FUW
+CHILD_MAX                      POSIX   SC 1 CDLMUX     6       cc{
        #if _lib_fork
        #define child()         fork()
        #else
@@ -73,27 +87,57 @@
                return 0;
        }
 }
-CHOWN_RESTRICTED               POSIX   PC 1 FU
+CHOWN_RESTRICTED               POSIX   PC 1 FUW
 CKPT                           POSIX   SC 1 FU
 CLK_TCK                                POSIX   SC 1 L          HZ 60
-CLOCKRES_MIN                   POSIX   SC 1 MU         1
-COLL_WEIGHTS_MAX               POSIX   SC 2 LMN        2
-CRYPT                          XOPEN   SC 1 FSU
+CLOCKRES_MIN                   POSIX   SC 1 MUW        1
+CLOCKS_PER_SEC                 C       QQ 1 L
+CLOCK_SELECTION                        POSIX   SC 1 FUVW
+COLL_WEIGHTS_MAX               POSIX   SC 2 DLMN       2
+CPUTIME                                POSIX   SC 1 FUW
+CPU_KEYBITS1                   C       QQ 1 L
+CPU_VERSION                    C       QQ 1 L
+CRYPT                          XOPEN   SC 1 FSUW
 C_BIND                         POSIX   SC 2 FU
 C_DEV                          POSIX   SC 2 FU
-C_VERSION                      POSIX   SC 2 FU
+C_VERSION                      POSIX   SC 2 CDFU
+DATAKEYS_MAX                   C       QQ 1 0
 DELAYTIMER_MAX                 POSIX   SC 1 LMU        32
-ENH_I18N                       XOPEN   SC 1 FSU
+ENH_I18N                       XOPEN   SC 1 FSUW
+EQUIV_CLASS_MAX                        C       QQ 1 L
+EXEC_INTERPRETER_LENGTH                C       QQ 1 L
 EXPR_NEST_MAX                  POSIX   SC 2 LMN        32
 FCHR_MAX                       SVID    SC 1 LMU        LONG_MAX 2147483647
 FILESIZEBITS                   POSIX   PC 1 LMU        (8*sizeof(off_t)) 32
-FORT_DEV                       POSIX   SC 2 FU
-FORT_RUN                       POSIX   SC 2 FU
-FSYNC                          POSIX   SC 1 FU         _lib_fsync
+FILE_LOCKING                   POSIX   SC 1 FU
+FORT_DEV                       POSIX   SC 2 FUW
+FORT_RUN                       POSIX   SC 2 FUW
+FSYNC                          POSIX   SC 1 CDFUW      _lib_fsync
+GETGR_R_SIZE_MAX               C       QQ 1 L
+GETPW_R_SIZE_MAX               C       QQ 1 L
+HOSTID                         C       QQ 1 L
+HOSTNAME                       SVID    SI 1 0
+HOST_NAME_MAX                  POSIX   SC 1 LMU        255
+HW_PROVIDER                    SVID    SI 1 0
+HW_SERIAL                      C       QQ 1 L
+ILP32_OFF32                    XBS5    SC 1 FU
+ILP32_OFF32_CFLAGS             XBS5    CS 1 FU
+ILP32_OFF32_LDFLAGS            XBS5    CS 1 FU
+ILP32_OFF32_LIBS               XBS5    CS 1 FU
+ILP32_OFF32_LINTFLAGS          XBS5    CS 1 FU
+ILP32_OFFBIG                   XBS5    SC 1 FU
+ILP32_OFFBIG_CFLAGS            XBS5    CS 1 FU
+ILP32_OFFBIG_LDFLAGS           XBS5    CS 1 FU
+ILP32_OFFBIG_LIBS              XBS5    CS 1 FU
+ILP32_OFFBIG_LINTFLAGS         XBS5    CS 1 FU
+INITTAB_NAME                   SVID    SI 1 0
 INT_MAX                                C       XX 1 L          32767
 INT_MIN                                C       XX 1 L          -32767
 IOV_MAX                                XOPEN   SC 1 LMU        16
-JOB_CONTROL                    POSIX   SC 1 FU         cc{
+IO_TYPE                                C       QQ 1 L
+IPV6                           POSIX   SC 1 FUW
+IP_SECOPTS                     C       QQ 1 L
+JOB_CONTROL                    POSIX   SC 1 FUW        cc{
        #include "FEATURE/wait"
        #if _ok_wif
        int main()
@@ -125,6 +169,10 @@
 KERNEL_REGION_MAX              SCO     SC 1 0
 KERNEL_S5INODE                 SCO     SC 1 0
 KERNEL_S5INODE_MAX             SCO     SC 1 0
+KERNEL_STAMP                   SVID    SI 1 0
+KERN_POINTERS                  C       QQ 1 L
+KERN_SIM                       C       QQ 1 L
+LEGACY                         XOPEN   SC 1 FU
 LFS_CFLAGS                     POSIX   CS 1 MU         cc{ -D_LARGEFILE_SOURCE 
"-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" -D_LARGEFILE64_SOURCE -64
        #include <sys/types.h>
        int
@@ -138,31 +186,50 @@
                return 1;
        }
 }
-LFS_LDFLAGS                    POSIX   CS 1 MU         : LFS_CFLAGS
-LFS_LINTFLAGS                  POSIX   CS 1 MU         : LFS_CFLAGS
-LFS_LIBS                       POSIX   CS 1 MU
 LFS64_CFLAGS                   POSIX   CS 1 MU         : LFS_CFLAGS
 LFS64_LDFLAGS                  POSIX   CS 1 MU         : LFS_CFLAGS
-LFS64_LINTFLAGS                        POSIX   CS 1 MU         : LFS_CFLAGS
 LFS64_LIBS                     POSIX   CS 1 MU
+LFS64_LINTFLAGS                        POSIX   CS 1 MU         : LFS_CFLAGS
+LFS_LDFLAGS                    POSIX   CS 1 MU         : LFS_CFLAGS
+LFS_LIBS                       POSIX   CS 1 MU
+LFS_LINTFLAGS                  POSIX   CS 1 MU         : LFS_CFLAGS
 LINE_MAX                       POSIX   SC 2 LMN        2048
 LINK_MAX                       POSIX   PC 1 LMU        MAXLINK SHRT_MAX 8
-LOCALEDEF                      POSIX   SC 1 FU
-LOCALEDEF                      POSIX   SC 2 FU
+LOCALEDEF                      POSIX   SC 1 FUW
+LOCALEDEF                      POSIX   SC 2 FUW
+LOGIN_NAME_MAX                 POSIX   SC 1 LMU
 LOGNAME_MAX                    SVID    SC 1 MU         8
+LONGLONG_MAX                   C       XX 1 L
+LONGLONG_MIN                   C       XX 1 L
 LONG_BIT                       XOPEN   XX 1 L          (8*sizeof(long)) 32
 LONG_MAX                       C       XX 1 L          2147483647
 LONG_MIN                       C       XX 1 L          -2147483647
-MAPPED_FILES                   POSIX   SC 1 FU         _lib_mmap
+LP64_OFF64                     XBS5    SC 1 FU
+LP64_OFF64_CFLAGS              XBS5    CS 1 FU
+LP64_OFF64_LDFLAGS             XBS5    CS 1 FU
+LP64_OFF64_LIBS                        XBS5    CS 1 FU
+LP64_OFF64_LINTFLAGS           XBS5    CS 1 FU
+LPBIG_OFFBIG                   XBS5    SC 1 FU
+LPBIG_OFFBIG_CFLAGS            XBS5    CS 1 FU
+LPBIG_OFFBIG_LDFLAGS           XBS5    CS 1 FU
+LPBIG_OFFBIG_LIBS              XBS5    CS 1 FU
+LPBIG_OFFBIG_LINTFLAGS         XBS5    CS 1 FU
+MACHINE                                SVID    SI 1 0
+MAPPED_FILES                   POSIX   SC 1 CDFUW      _lib_mmap
 MAX_CANON                      POSIX   PC 1 LMU        CANBSIZ 255
 MAX_INPUT                      POSIX   PC 1 LMU        MAX_CANON 255   
 MB_LEN_MAX                     C       XX 1 L          1
-MEMLOCK                                POSIX   SC 1 FU
-MEMLOCK_RANGE                  POSIX   SC 1 FU
-MEMORY_PROTECTION              POSIX   SC 1 FU
-MESSAGE_PASSING                        POSIX   SC 1 FU
+MCAS_OFFSET                    C       QQ 1 L
+MEMLOCK                                POSIX   SC 1 CDFUW
+MEMLOCK_RANGE                  POSIX   SC 1 CDFUW
+MEMORY_PROTECTION              POSIX   SC 1 CDFUW
+MESSAGE_PASSING                        POSIX   SC 1 CDFUW
+MMAP_FIXED_ALIGNMENT           C       QQ 1 L          _AST_PAGESIZE
+MONOTONIC_CLOCK                        POSIX   SC 1 FUW
 MQ_OPEN_MAX                    POSIX   SC 1 LMU        8
 MQ_PRIO_MAX                    POSIX   SC 1 LMU        32
+MSEM_LOCKID                    C       QQ 1 L
+MULTI_PROCESS                  POSIX   SC 1 FU
 NACLS_MAX                      SVID    SC 1 0
 NAME_MAX                       POSIX   PC 1 LMU        14      cc{
        int main()
@@ -211,7 +278,7 @@
        }
        #endif
 }
-NGROUPS_MAX                    POSIX   SC 1 LMU        8       cc{
+NGROUPS_MAX                    POSIX   SC 1 CDLMU      8       cc{
        #if _lib_getgroups
        int main()
        {
@@ -230,15 +297,22 @@
 }
 NL_ARGMAX                      XOPEN   XX 1 L          9
 NL_LANGMAX                     XOPEN   XX 1 L          14
+NL_MAX                         C       QQ 1 L
 NL_MSGMAX                      XOPEN   XX 1 L          32767
 NL_NMAX                                XOPEN   XX 1 L          1
 NL_SETMAX                      XOPEN   XX 1 L          255
+NL_SPECMAX                     C       QQ 1 L
 NL_TEXTMAX                     XOPEN   XX 1 L          LINE_MAX
-NO_TRUNC                       POSIX   PC 1 FU
+NO_TRUNC                       POSIX   PC 1 FUW
 NPROCESSORS_CONF               SVID    SC 1 0
 NPROCESSORS_ONLN               SVID    SC 1 0
+NPROC_CONF                     C       QQ 1 L
+NPROC_ONLN                     C       QQ 1 L
+NSS_BUFLEN_GROUP               C       QQ 1 L
+NSS_BUFLEN_PASSWD              C       QQ 1 L
+NUM_PROCESSORS                 C       QQ 1 L
 NZERO                          XOPEN   XX 1 L          20
-OPEN_MAX                       POSIX   SC 1 LMUX       16      cc{
+OPEN_MAX                       POSIX   SC 1 CDLMUX     16      cc{
        #if _lib_getdtablesize
        extern int              getdtablesize(void);
        int main()
@@ -266,6 +340,11 @@
        #endif
 }
 OPEN_MAX_CEIL                  AST     XX 1 L          OPEN_MAX
+OSREL_MAJ                      C       QQ 1 L
+OSREL_MIN                      C       QQ 1 L
+OSREL_PATCH                    C       QQ 1 L
+OS_BASE                                SVID    SI 1 0
+OS_PROVIDER                    SVID    SI 1 0
 OS_VERSION                     AES     SC 1 FSU
 PAGESIZE                       POSIX   SC 1 MU         PAGESIZE PAGE_SIZE 4096 
cc{
        int main()
@@ -287,9 +366,15 @@
        }
 }
 PAGE_SIZE                      POSIX   SC 1 MU         _AST_PAGESIZE
-PASS_MAX                       SVID    SC 1 LMU        8
-PATH                           POSIX   CS 1 MU         "/bin:/usr/bin"
-PATH_MAX                       POSIX   PC 1 LMUX       MAXPATHLEN 1024
+PASS_MAX                       SVID    SC 1 CDLMU      8
+PATH                           POSIX   CS 1 CMU        "/bin:/usr/bin"
+PATH_MAX                       POSIX   PC 1 CDLMUX     MAXPATHLEN 1024
+PBS                            POSIX   SC 2 FUW
+PBS_ACCOUNTING                 POSIX   SC 2 FUW
+PBS_CHECKPOINT                 POSIX   SC 2 FUW
+PBS_LOCATE                     POSIX   SC 2 FUW
+PBS_MESSAGE                    POSIX   SC 2 FUW
+PBS_TRACK                      POSIX   SC 2 FUW
 PHYS_PAGES                     SUN     SC 1 0
 PID_MAX                                SVID    SC 1 LMU        30000   cc{
        int main()
@@ -307,16 +392,43 @@
                return 0;
        }
 }
+PII                            POSIX   SC 1 FU
+PII_INTERNET                   POSIX   SC 1 FU
+PII_INTERNET_DGRAM             POSIX   SC 1 FU
+PII_INTERNET_STREAM            POSIX   SC 1 FU
+PII_OSI                                POSIX   SC 1 FU
+PII_OSI_CLTS                   POSIX   SC 1 FU
+PII_OSI_COTS                   POSIX   SC 1 FU
+PII_OSI_M                      POSIX   SC 1 FU
+PII_SOCKET                     POSIX   SC 1 FU
+PII_XTI                                POSIX   SC 1 FU
 PIPE_BUF                       POSIX   PC 1 LMU        512
-PRIORITIZED_IO                 POSIX   SC 1 FU
-PRIORITY_SCHEDULING            POSIX   SC 1 FU
-PRIO_IO                                POSIX   PC 1 FU
-REALTIME_SIGNALS               POSIX   SC 1 FU
-REGEXP                         POSIX   SC 1 FU
+POLL                           POSIX   SC 1 FU
+PRIORITIZED_IO                 POSIX   SC 1 FUW
+PRIORITY_SCHEDULING            POSIX   SC 1 CDFUW
+PRIO_IO                                POSIX   PC 1 FUW
+PROC_RSRC_MGR                  C       QQ 1 L
+PTHREAD_DESTRUCTOR_ITERATIONS  C       QQ 1 L
+PTHREAD_KEYS_MAX               C       QQ 1 L
+PTHREAD_STACK_MIN              C       QQ 1 L
+PTHREAD_THREADS_MAX            C       QQ 1 L
+RAW_SOCKETS                    POSIX   SC 1 FUW
+READER_WRITER_LOCKS            POSIX   SC 1 FUW
+REALTIME                       XOPEN   SC 1 FU
+REALTIME_SIGNALS               POSIX   SC 1 CDFUW
+REALTIME_THREADS               XOPEN   SC 1 FU
+REC_INCR_XFER_SIZE             POSIX   PC 1 LVW
+REC_MAX_XFER_SIZE              POSIX   PC 1 LVW
+REC_MIN_XFER_SIZE              POSIX   PC 1 LVW
+REC_XFER_ALIGN                 POSIX   PC 1 LVW
+REENTRANT_FUNCTIONS            POSIX   SC 1 FU
+REGEXP                         POSIX   SC 1 FUW
+REGEX_VERSION                  POSIX   SC 1 F          20030916
+RELEASE                                C       QQ 1 L
 RESOURCE_LIMITS                        POSIX   SC 1 FU
 RE_DUP_MAX                     POSIX   SC 2 LMN        255
 RTSIG_MAX                      POSIX   SC 1 LMU        8
-SAVED_IDS                      POSIX   SC 1 FU         cc{
+SAVED_IDS                      POSIX   SC 1 FUW        cc{
        #if _lib_setuid && !_lib_setreuid
        int main()
        {
@@ -327,7 +439,9 @@
 }
 SCHAR_MAX                      C       XX 1 L          127
 SCHAR_MIN                      C       XX 1 L          -127
-SEMAPHORES                     POSIX   SC 1 FU
+SECURITY_CLASS                 C       QQ 1 L
+SELECT                         POSIX   SC 1 FU
+SEMAPHORES                     POSIX   SC 1 CDFUW
 SEM_NSEMS_MAX                  POSIX   SC 1 LMU        256
 SEM_VALUE_MAX                  POSIX   SC 1 LMU        32767
 SH                             AST     CS 1 MU         sh{
@@ -354,18 +468,28 @@
        done
        echo '"/bin/sh"'
 }
-SHARED_MEMORY_OBJECTS          POSIX   SC 1 FU
-SHM                            XOPEN   SC 1 FSU
+SHARED_MEMORY_OBJECTS          POSIX   SC 1 CDFUW
+SHELL                          POSIX   SC 1 FUVW
+SHM                            XOPEN   SC 1 FSUW
 SHRT_MAX                       C       XX 1 L          32767
 SHRT_MIN                       C       XX 1 L          -32767
 SIGQUEUE_MAX                   POSIX   SC 1 LMU        32
 SIGRT_MAX                      SVID    SC 1 0
 SIGRT_MIN                      SVID    SC 1 0
 SIZE_MAX                       C       XX 1 LMX        UINT_MAX 65535
+SLVM_MAXNODES                  C       QQ 1 L
+SOCK_MAXBUF                    C       QQ 1 0
+SOFTPOWER                      C       QQ 1 L
+SPAWN                          POSIX   SC 1 FUW
+SPIN_LOCKS                     POSIX   SC 1 FUW
+SPORADIC_SERVER                        POSIX   SC 1 FUW
+SRPC_DOMAIN                    C       QQ 1 0
+SS_REPL_MAX                    POSIX   SC 1 FUW
 SSIZE_MAX                      POSIX   XX 1 LMUX       INT_MAX 32767
 STD_BLK                                SVID    SC 1 LMU        1024
 STREAM_MAX                     POSIX   SC 1 LMU        OPEN_MAX 8
-SW_DEV                         POSIX   SC 2 FU
+STREAMS                                XOPEN   SC 1 FSUW
+SW_DEV                         POSIX   SC 2 FUW
 SYMLINK_MAX                    POSIX   PC 1 LMU        255     cc{
        int main()
        {
@@ -373,198 +497,81 @@
                return 0;
        }
 }
+SYMLINKS                       POSIX   PC 2 FUW
 SYMLOOP_MAX                    POSIX   SC 1 LMU        8
-SYNCHRONIZED_IO                        POSIX   SC 1 FU
-SYNC_IO                                POSIX   PC 1 FU
+SYNCHRONIZED_IO                        POSIX   SC 1 CDFUW
+SYNC_IO                                POSIX   PC 1 FUW
+SYSNAME                                SVID    SI 1 0
 SYSPID_MAX                     SVID    SC 1 LMU        2
-TIMERS                         POSIX   SC 1 FU
+THREADS                                POSIX   SC 1 CDFUW
+THREADS_PRIO_CEILING           POSIX   SC 1 FUW
+THREADS_PRIO_INHERIT           POSIX   SC 1 FUW
+THREAD_ATTR_STACKADDR          POSIX   SC 1 CDFUW
+THREAD_ATTR_STACKSIZE          POSIX   SC 1 CDFUW
+THREAD_CPUTIME                 POSIX   SC 1 FUW
+THREAD_DESTRUCTOR_ITERATIONS   POSIX   SC 1 LMUW       
PTHREAD_DESTRUCTOR_ITERATIONS 4
+THREAD_KEYS_MAX                        POSIX   SC 1 LMUW       
PTHREAD_KEYS_MAX 128
+THREAD_PRIORITY_SCHEDULING     POSIX   SC 1 CDFUW
+THREAD_PRIO_INHERIT            POSIX   SC 1 CDFUW
+THREAD_PRIO_PROTECT            POSIX   SC 1 CDFUW
+THREAD_PROCESS_SHARED          POSIX   SC 1 CDFUW
+THREAD_SAFE_FUNCTIONS          POSIX   SC 1 CDFUW
+THREAD_SPORADIC_SERVER         POSIX   SC 1 FUW
+THREAD_STACK_MIN               POSIX   SC 1 LUW        PTHREAD_STACK_MIN
+THREAD_THREADS_MAX             POSIX   SC 1 LMUW       PTHREAD_THREADS_MAX 64
+TIMEOUTS                       POSIX   SC 1 FUW
+TIMERS                         POSIX   SC 1 CDFUW
 TIMER_MAX                      POSIX   SC 1 LMU        32
 TMP                            AST     CS 1 MU         "/tmp"
 TMP_MAX                                C       SC 1 LMU        33520641
-TZNAME_MAX                     POSIX   SC 1 LMU        6
+TRACE                          POSIX   SC 1 FUW
+TRACE_EVENT_FILTER             POSIX   SC 1 FUW
+TRACE_EVENT_NAME_MAX           POSIX   SC 1 FUVW
+TRACE_INHERIT                  POSIX   SC 1 FUW
+TRACE_LOG                      POSIX   SC 1 FUW
+TRACE_NAME_MAX                 POSIX   SC 1 FUVW
+TRACE_SYS_MAX                  POSIX   SC 1 FUVW
+TRACE_USER_EVENT_MAX           POSIX   SC 1 FUVW
+TTY_NAME_MAX                   POSIX   SC 1 LMU        9
+TYPED_MEMORY_OBJECTS           POSIX   SC 1 FUW
+TZNAME_MAX                     POSIX   SC 1 CDLMU      6
+T_IOV_MAX                      C       QQ 1 0
 UCHAR_MAX                      C       XX 1 L          255
+UCHAR_MIN                      C       XX 1 L
 UID_MAX                                SVID    SC 1 LMU        60002
 UINT_MAX                       C       XX 1 L          65535
+UIO_MAXIOV                     C       QQ 1 0
+ULONGLONG_MAX                  C       XX 1 L
 ULONG_MAX                      C       XX 1 L          4294967295
-UNIX                           XOPEN   SC 1 FSU
-UPE                            POSIX   SC 2 FU
+UNIX                           XOPEN   SC 1 FSUW
+UPE                            POSIX   SC 2 FUW
+USER_LIMIT                     SVID    SI 1 0
 USHRT_MAX                      C       XX 1 L          65535
-VDISABLE                       POSIX   PC 1 FU
-VERSION                                POSIX   SC 1 FU         200112
-VERSION                                POSIX   SC 2 FU         200112
-VERSION                                XOPEN   SC 1 FSU        600
+V6_ILP32_OFF32                 POSIX   SC 1 W
+V6_ILP32_OFFBIG                        POSIX   SC 1 W
+V6_LP64_OFF64                  POSIX   SC 1 W
+V6_LPBIG_OFFBIG                        POSIX   SC 1 W
+VDISABLE                       POSIX   PC 1 FUW
+VERSION                                POSIX   SC 1 CDFSU      200112
+VERSION                                POSIX   SC 2 CDFSU      200112
+VERSION                                XOPEN   SC 1 CDFSU      600
+VERSION                                AST     XX 1 MS         _AST_VERSION
+VERSION                                SVID    SI 1 S
+VERSION                                XPG     SC 3 DFSU
+VERSION                                XPG     SC 4 DFSU
+VERSION_88                     C       XX 1 L
+VERSION_88                     POSIX   SC 1 FSU
+VERSION_90                     C       XX 1 L
+VERSION_90                     POSIX   SC 1 FSU
+VERSION_93                     C       XX 1 L
+VERSION_93                     POSIX   SC 1 FSU
 WORD_BIT                       XOPEN   XX 1 L          (8*sizeof(int))
-XCU_VERSION                    XOPEN   SC 1 FSU
+XCU_VERSION                    XOPEN   SC 1 CDFSU
 XPG2                           XOPEN   XX 1 FU
 XPG3                           XOPEN   XX 1 FU
 XPG4                           XOPEN   XX 1 FU
 
-# confgen additions
-
-ABI_AIO_XFER_MAX               C       QQ 1 L
-ABI_ASYNCHRONOUS_IO            C       QQ 1 L
-ABI_ASYNC_IO                   C       QQ 1 L
-ADVISORY_INFO                  POSIX   SC 1 FU
-ALLOC_SIZE_MIN                 POSIX   PC 1 L
-AUDIT                          C       QQ 1 L
-AVAIL_PROCESSORS               C       QQ 1 L
-BARRIERS                       POSIX   SC 1 FU
-CLOCKS_PER_SEC                 C       QQ 1 L
-CPUTIME                                POSIX   SC 1 FU
-CPU_KEYBITS1                   C       QQ 1 L
-CPU_VERSION                    C       QQ 1 L
-DATAKEYS_MAX                   C       QQ 1 0
-EQUIV_CLASS_MAX                        C       QQ 1 L
-EXEC_INTERPRETER_LENGTH                C       QQ 1 L
-FILE_LOCKING                   POSIX   SC 1 FU
-GETGR_R_SIZE_MAX               C       QQ 1 L
-GETPW_R_SIZE_MAX               C       QQ 1 L
-HOSTID                         C       QQ 1 L
-HOST_NAME_MAX                  POSIX   SC 1 LMU        255
-HW_SERIAL                      C       QQ 1 L
-ILP32_OFF32                    XBS5    SC 1 FU
-ILP32_OFF32_CFLAGS             XBS5    CS 1 FU
-ILP32_OFF32_LDFLAGS            XBS5    CS 1 FU
-ILP32_OFF32_LIBS               XBS5    CS 1 FU
-ILP32_OFF32_LINTFLAGS          XBS5    CS 1 FU
-ILP32_OFFBIG                   XBS5    SC 1 FU
-ILP32_OFFBIG_CFLAGS            XBS5    CS 1 FU
-ILP32_OFFBIG_LDFLAGS           XBS5    CS 1 FU
-ILP32_OFFBIG_LIBS              XBS5    CS 1 FU
-ILP32_OFFBIG_LINTFLAGS         XBS5    CS 1 FU
-IO_TYPE                                C       QQ 1 L
-IPV6                           POSIX   SC 1 FU
-IP_SECOPTS                     C       QQ 1 L
-KERN_POINTERS                  C       QQ 1 L
-KERN_SIM                       C       QQ 1 L
-LEGACY                         XOPEN   SC 1 FU
-LOGIN_NAME_MAX                 POSIX   SC 1 LMU
-LONGLONG_MAX                   C       XX 1 L
-LONGLONG_MIN                   C       XX 1 L
-LP64_OFF64                     XBS5    SC 1 FU
-LP64_OFF64_CFLAGS              XBS5    CS 1 FU
-LP64_OFF64_LDFLAGS             XBS5    CS 1 FU
-LP64_OFF64_LIBS                        XBS5    CS 1 FU
-LP64_OFF64_LINTFLAGS           XBS5    CS 1 FU
-LPBIG_OFFBIG                   XBS5    SC 1 FU
-LPBIG_OFFBIG_CFLAGS            XBS5    CS 1 FU
-LPBIG_OFFBIG_LDFLAGS           XBS5    CS 1 FU
-LPBIG_OFFBIG_LIBS              XBS5    CS 1 FU
-LPBIG_OFFBIG_LINTFLAGS         XBS5    CS 1 FU
-MCAS_OFFSET                    C       QQ 1 L
-MMAP_FIXED_ALIGNMENT           C       QQ 1 L          _AST_PAGESIZE
-MONOTONIC_CLOCK                        POSIX   SC 1 FU
-MSEM_LOCKID                    C       QQ 1 L
-MULTI_PROCESS                  POSIX   SC 1 FU
-NL_MAX                         C       QQ 1 L
-NL_SPECMAX                     C       QQ 1 L
-NPROC_CONF                     C       QQ 1 L
-NPROC_ONLN                     C       QQ 1 L
-NSS_BUFLEN_GROUP               C       QQ 1 L
-NSS_BUFLEN_PASSWD              C       QQ 1 L
-NUM_PROCESSORS                 C       QQ 1 L
-OSREL_MAJ                      C       QQ 1 L
-OSREL_MIN                      C       QQ 1 L
-OSREL_PATCH                    C       QQ 1 L
-PBS                            POSIX   SC 2 FU
-PBS_ACCOUNTING                 POSIX   SC 2 FU
-PBS_CHECKPOINT                 POSIX   SC 2 FU
-PBS_LOCATE                     POSIX   SC 2 FU
-PBS_MESSAGE                    POSIX   SC 2 FU
-PBS_TRACK                      POSIX   SC 2 FU
-PII                            POSIX   SC 1 FU
-PII_INTERNET                   POSIX   SC 1 FU
-PII_INTERNET_DGRAM             POSIX   SC 1 FU
-PII_INTERNET_STREAM            POSIX   SC 1 FU
-PII_OSI                                POSIX   SC 1 FU
-PII_OSI_CLTS                   POSIX   SC 1 FU
-PII_OSI_COTS                   POSIX   SC 1 FU
-PII_OSI_M                      POSIX   SC 1 FU
-PII_SOCKET                     POSIX   SC 1 FU
-PII_XTI                                POSIX   SC 1 FU
-POLL                           POSIX   SC 1 FU
-PROC_RSRC_MGR                  C       QQ 1 L
-PTHREAD_DESTRUCTOR_ITERATIONS  C       QQ 1 L
-PTHREAD_KEYS_MAX               C       QQ 1 L
-PTHREAD_STACK_MIN              C       QQ 1 L
-PTHREAD_THREADS_MAX            C       QQ 1 L
-RAW_SOCKETS                    POSIX   SC 1 FU
-READER_WRITER_LOCKS            POSIX   SC 1 FU
-REALTIME                       XOPEN   SC 1 FU
-REALTIME_THREADS               XOPEN   SC 1 FU
-REC_INCR_XFER_SIZE             POSIX   PC 1 L
-REC_MIN_XFER_SIZE              POSIX   PC 1 L
-REC_MAX_XFER_SIZE              POSIX   PC 1 L
-REC_XFER_ALIGN                 POSIX   PC 1 L
-REENTRANT_FUNCTIONS            POSIX   SC 1 FU
-REGEX_VERSION                  POSIX   SC 1 F          20030916
-RELEASE                                C       QQ 1 L
-SECURITY_CLASS                 C       QQ 1 L
-SELECT                         POSIX   SC 1 FU
-SLVM_MAXNODES                  C       QQ 1 L
-SOCK_MAXBUF                    C       QQ 1 0
-SOFTPOWER                      C       QQ 1 L
-SPAWN                          POSIX   SC 1 FU
-SPIN_LOCKS                     POSIX   SC 1 FU
-SPORADIC_SERVER                        POSIX   SC 1 FU
-SRPC_DOMAIN                    C       QQ 1 0
-THREADS                                POSIX   SC 1 FU
-THREADS_PRIO_CEILING           POSIX   SC 1 FU
-THREADS_PRIO_INHERIT           POSIX   SC 1 FU
-THREAD_ATTR_STACKADDR          POSIX   SC 1 FU
-THREAD_ATTR_STACKSIZE          POSIX   SC 1 FU
-THREAD_CPUTIME                 POSIX   SC 1 FU
-THREAD_DESTRUCTOR_ITERATIONS   POSIX   SC 1 LMU        
PTHREAD_DESTRUCTOR_ITERATIONS 4
-THREAD_KEYS_MAX                        POSIX   SC 1 LMU        
PTHREAD_KEYS_MAX 128
-THREAD_PRIORITY_SCHEDULING     POSIX   SC 1 FU
-THREAD_PRIO_INHERIT            POSIX   SC 1 FU
-THREAD_PRIO_PROTECT            POSIX   SC 1 FU
-THREAD_PROCESS_SHARED          POSIX   SC 1 FU
-THREAD_SAFE_FUNCTIONS          POSIX   SC 1 FU
-THREAD_SPORADIC_SERVER         POSIX   SC 1 FU
-THREAD_STACK_MIN               POSIX   SC 1 LU         PTHREAD_STACK_MIN
-THREAD_THREADS_MAX             POSIX   SC 1 LMU        PTHREAD_THREADS_MAX 64
-TIMEOUTS                       POSIX   SC 1 FU
-TRACE                          POSIX   SC 1 FU
-TRACE_EVENT_FILTER             POSIX   SC 1 FU
-TRACE_INHERIT                  POSIX   SC 1 FU
-TRACE_LOG                      POSIX   SC 1 FU
-TTY_NAME_MAX                   POSIX   SC 1 LMU        9
-TYPED_MEMORY_OBJECTS           POSIX   SC 1 FU
-T_IOV_MAX                      C       QQ 1 0
-UCHAR_MIN                      C       XX 1 L
-UIO_MAXIOV                     C       QQ 1 0
-ULONGLONG_MAX                  C       XX 1 L
-V6_ILP32_OFF32                 POSIX   SC 1 FU
-V6_ILP32_OFFBIG                        POSIX   SC 1 FU
-V6_LP64_OFF64                  POSIX   SC 1 FU
-V6_LPBIG_OFFBIG                        POSIX   SC 1 FU
-VERSION                                XPG     SC 3 FU
-VERSION                                XPG     SC 4 FU
-VERSION_88                     POSIX   SC 1 FU
-VERSION_88                     C       XX 1 L
-VERSION_90                     POSIX   SC 1 FU
-VERSION_90                     C       XX 1 L
-VERSION_93                     POSIX   SC 1 FU
-VERSION_93                     C       XX 1 L
-VERSION                                AST     XX 1 MU         _AST_VERSION
-
-# sys/systeminfo sysinfo additions
-
-ARCHITECTURE                   SVID    SI 1 0
-BUSTYPES                       SVID    SI 1 0
-HOSTNAME                       SVID    SI 1 0
-HW_PROVIDER                    SVID    SI 1 0
-INITTAB_NAME                   SVID    SI 1 0
-KERNEL_STAMP                   SVID    SI 1 0
-MACHINE                                SVID    SI 1 0
-OS_BASE                                SVID    SI 1 0
-OS_PROVIDER                    SVID    SI 1 0
-SYSNAME                                SVID    SI 1 0
-USER_LIMIT                     SVID    SI 1 0
-VERSION                                SVID    SI 1 0
-
 # vendor prefixes
 
-VERSION                                GNU             XX 1 0
-VERSION                                TRUSTEDBSD      XX 1 0
+VERSION                                GNU             XX 1 S
+VERSION                                TRUSTEDBSD      XX 1 S
diff -r -N -u ksh93_2006_10_31/src/lib/libast/comp/spawnveg.c 
ksh93_2006_12_04/src/lib/libast/comp/spawnveg.c
--- ksh93_2006_10_31/src/lib/libast/comp/spawnveg.c     2006-11-03 
01:04:06.000000000 +0100
+++ ksh93_2006_12_04/src/lib/libast/comp/spawnveg.c     2006-11-22 
08:15:21.000000000 +0100
@@ -163,6 +163,10 @@
 #endif
 #endif
 
+#if 0
+       if (access(path, X_OK))
+               return -1;
+#endif
        if (!envv)
                envv = environ;
 #if _lib_spawnve
@@ -219,41 +223,19 @@
 #if _real_vfork
        if (pid != -1 && (m = *exec_errno_ptr))
        {
-               rid = -1;
-               n = errno;
-               while (waitpid(pid, NiL, 0) == -1)
-                       if (errno == ECHILD)
-                       {
-                               if (m != ENOEXEC)
-                                       rid = pid;
-                               break;
-                       }
-                       else if (errno != EINTR)
-                               break;
-               pid = -1;
-               if (rid < 0)
-                       n = m;
+               while (waitpid(pid, NiL, 0) == -1 && errno == EINTR);
+               rid = pid = -1;
+               n = m;
        }
 #else
-       if (err[0] != -1)
+       if (pid != -1 && err[0] != -1)
        {
                close(err[1]);
-               if (read(err[0], &m, sizeof(m)) == sizeof(m))
+               if (read(err[0], &m, sizeof(m)) == sizeof(m) && m)
                {
-                       rid = -1;
-                       n = errno;
-                       while (waitpid(pid, NiL, 0) == -1)
-                               if (errno == ECHILD)
-                               {
-                                       if (m != ENOEXEC)
-                                               rid = pid;
-                                       break;
-                               }
-                               else if (errno != EINTR)
-                                       break;
-                       pid = -1;
-                       if (rid < 0)
-                               n = m;
+                       while (waitpid(pid, NiL, 0) == -1 && errno == EINTR);
+                       rid = pid = -1;
+                       n = m;
                }
                close(err[0]);
        }
diff -r -N -u ksh93_2006_10_31/src/lib/libast/dir/dirlib.h 
ksh93_2006_12_04/src/lib/libast/dir/dirlib.h
--- ksh93_2006_10_31/src/lib/libast/dir/dirlib.h        2002-05-13 
19:08:16.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/dir/dirlib.h        2006-11-21 
21:26:21.000000000 +0100
@@ -33,7 +33,9 @@
 #if defined(__STDPP__directive) && defined(__STDPP__hide)
 __STDPP__directive pragma pp:hide getdents getdirentries
 #else
+#undef getdents
 #define getdents       ______getdents
+#undef getdirentries
 #define getdirentries  ______getdirentries
 #endif
 
@@ -76,11 +78,17 @@
 #if defined(__STDPP__directive) && defined(__STDPP__hide)
 __STDPP__directive pragma pp:hide DIR closedir opendir readdir seekdir telldir
 #else
+#undef DIR
 #define DIR            ______DIR
+#undef closedir
 #define closedir       ______closedir
+#undef opendir
 #define opendir                ______opendir
+#undef readdir
 #define readdir                ______readdir
+#undef seekdir
 #define seekdir                ______seekdir
+#undef telldir
 #define telldir                ______telldir
 #endif
 
diff -r -N -u ksh93_2006_10_31/src/lib/libast/features/common 
ksh93_2006_12_04/src/lib/libast/features/common
--- ksh93_2006_10_31/src/lib/libast/features/common     2006-09-28 
19:52:10.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/features/common     2006-11-21 
05:51:39.000000000 +0100
@@ -153,13 +153,13 @@
        #define _ast_int8_str   "long"
        #endif
        #if N == 2
-       #define _ast_int8_t     __int64
-       #define _ast_int8_str   "__int64"
-       #endif
-       #if N == 3
        #define _ast_int8_t     long long
        #define _ast_int8_str   "long long"
        #endif
+       #if N == 3
+       #define _ast_int8_t     __int64
+       #define _ast_int8_str   "__int64"
+       #endif
        #if N == 4
        #define _ast_int8_t     __int64_t
        #define _ast_int8_str   "__int64_t"
diff -r -N -u ksh93_2006_10_31/src/lib/libast/features/float 
ksh93_2006_12_04/src/lib/libast/features/float
--- ksh93_2006_10_31/src/lib/libast/features/float      2006-06-27 
18:50:37.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/features/float      2006-12-01 
23:05:15.000000000 +0100
@@ -1,6 +1,6 @@
 set    prototyped
 hdr    float,limits,math,values
-lib    frexp,frexpl,ldexp,ldexpl,finite,finitel,isnan,isnanl <math.h> -lm
+lib    
fpclassify,frexp,frexpl,ldexp,ldexpl,finite,finitel,isinf,isinfl,isnan,isnanl,signbit,copysign,copysignl
 <math.h> -lm
 
 tst    ast_no_um2fm note{ no unsigned intmax => floatmax cast }end nolink{
        #include "FEATURE/common"
diff -r -N -u ksh93_2006_10_31/src/lib/libast/features/standards 
ksh93_2006_12_04/src/lib/libast/features/standards
--- ksh93_2006_10_31/src/lib/libast/features/standards  2006-10-23 
20:18:45.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/features/standards  2006-12-05 
05:44:53.000000000 +0100
@@ -8,6 +8,7 @@
                #include <sys/types.h>
                #include <sys/stat.h>
                #include <stdlib.h>
+               #include <unistd.h>
        }end {
                #ifndef _ISOC99_SOURCE
                #define _ISOC99_SOURCE  1
@@ -34,6 +35,8 @@
                #define __EXTENSIONS__  1
                #include <sys/types.h>
                #include <sys/stat.h>
+               #include <stdlib.h>
+               #include <unistd.h>
        }end {
                #ifndef _POSIX_SOURCE
                #define _POSIX_SOURCE   1
@@ -50,6 +53,8 @@
                #define __EXTENSIONS__  1
                #include <sys/types.h>
                #include <sys/stat.h>
+               #include <stdlib.h>
+               #include <unistd.h>
        }end {
                #ifndef _XOPEN_SOURCE
                #define _XOPEN_SOURCE   1
@@ -62,6 +67,8 @@
                #define _XOPEN_SOURCE   1
                #include <sys/types.h>
                #include <sys/stat.h>
+               #include <stdlib.h>
+               #include <unistd.h>
        }end {
                #ifndef _XOPEN_SOURCE
                #define _XOPEN_SOURCE   1
diff -r -N -u ksh93_2006_10_31/src/lib/libast/features/unistd.c 
ksh93_2006_12_04/src/lib/libast/features/unistd.c
--- ksh93_2006_10_31/src/lib/libast/features/unistd.c   2006-09-28 
20:17:24.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/features/unistd.c   1970-01-01 
01:00:00.000000000 +0100
@@ -1,97 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*           Copyright (c) 1985-2006 AT&T Knowledge Ventures            *
-*                      and is licensed under the                       *
-*                  Common Public License, Version 1.0                  *
-*                      by AT&T Knowledge Ventures                      *
-*                                                                      *
-*                A copy of the License is available at                 *
-*            http://www.opensource.org/licenses/cpl1.0.txt             *
-*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf at research.att.com>                  *
-*                  David Korn <dgk at research.att.com>                   *
-*                   Phong Vo <kpv at research.att.com>                    *
-*                                                                      *
-***********************************************************************/
-#pragma prototyped
-/*
- * Glenn Fowler
- * AT&T Bell Laboratories
- *
- * generate unistd.h definitions for posix conf function
- */
-
-#if defined(__STDPP__directive) && defined(__STDPP__hide)
-__STDPP__directive pragma pp:hide getpagesize getdtablesize
-#else
-#define getpagesize    ______getpagesize
-#define getdtablesize  ______getdtablesize
-#endif
-
-/*
- * we'd like as many symbols as possible defined
- * the standards push the vendors the other way
- * but don't provide guard that lets everything through
- * so each vendor adds their own guard
- * many now include something like <standards.h> to
- * get it straight in one place -- <sys/types.h> should
- * kick that in
- */
-
-#include "FEATURE/standards"
-#include "FEATURE/lib"
-
-#ifdef __sun
-#define _timespec      timespec
-#endif
-
-#include <sys/types.h>
-
-#undef _SGIAPI
-#define _SGIAPI                1
-
-#if _hdr_limits
-#include <limits.h>
-#endif
-
-#undef _SGIAPI
-#define _SGIAPI                0
-
-#include "FEATURE/lib"
-#include "FEATURE/common"
-
-#if _hdr_unistd
-#include <unistd.h>
-#endif
-
-#include "FEATURE/param"
-
-#if defined(__STDPP__directive) && defined(__STDPP__hide)
-__STDPP__directive pragma pp:nohide getpagesize getdtablesize
-#else
-#undef getpagesize
-#undef getdtablesize   
-#endif
-
-#include "conflib.h"
-
-int main()
-{
-#include "confuni.h"
-#if _dll_data_intercept
-       printf("\n#if _dll_data_intercept && ( _DLL_BLD || _BLD_DLL )\n");
-       printf("#undef  environ\n");
-       printf("#define environ (*_ast_dll._dll_environ)\n");
-       printf("struct _astdll { char*** _dll_environ; };\n");
-       printf("extern struct _astdll _ast_dll;\n");
-       printf("extern struct _astdll* _ast_getdll(void);\n");
-       printf("#endif\n");
-#endif
-       return 0;
-}
diff -r -N -u ksh93_2006_10_31/src/lib/libast/include/ast.h 
ksh93_2006_12_04/src/lib/libast/include/ast.h
--- ksh93_2006_10_31/src/lib/libast/include/ast.h       2006-10-11 
18:22:39.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/include/ast.h       2006-11-15 
23:06:04.000000000 +0100
@@ -164,6 +164,7 @@
 #define FMT_ESCAPED    0x02            /* already escaped              */
 #define FMT_SHELL      0x04            /* escape $ ` too               */
 #define FMT_WIDE       0x08            /* don't escape 8 bit chars     */
+#define FMT_PARAM      0x10            /* disable FMT_SHELL ${$( quote */
 
 /*
  * multibyte macros
diff -r -N -u ksh93_2006_10_31/src/lib/libast/include/ast_version.h 
ksh93_2006_12_04/src/lib/libast/include/ast_version.h
--- ksh93_2006_10_31/src/lib/libast/include/ast_version.h       2006-10-06 
07:58:39.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/include/ast_version.h       2006-11-15 
23:06:23.000000000 +0100
@@ -25,4 +25,4 @@
  * AT&T Research
  */
 
-#define _AST_VERSION   20061004L
+#define _AST_VERSION   20061111L
diff -r -N -u ksh93_2006_10_31/src/lib/libast/include/vmalloc.h 
ksh93_2006_12_04/src/lib/libast/include/vmalloc.h
--- ksh93_2006_10_31/src/lib/libast/include/vmalloc.h   2004-04-07 
14:55:17.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/include/vmalloc.h   2006-11-15 
23:03:09.000000000 +0100
@@ -80,6 +80,8 @@
 #endif
 };
 
+#undef VM_FLAGS                        /* solaris sys kernel clash     */
+
 #define VM_TRUST       0000001         /* forgo some security checks   */
 #define VM_TRACE       0000002         /* generate trace               */
 #define VM_DBCHECK     0000004         /* check for boundary overwrite */
diff -r -N -u ksh93_2006_10_31/src/lib/libast/Makefile 
ksh93_2006_12_04/src/lib/libast/Makefile
--- ksh93_2006_10_31/src/lib/libast/Makefile    2006-10-20 23:18:04.000000000 
+0200
+++ ksh93_2006_12_04/src/lib/libast/Makefile    2006-11-27 19:55:43.000000000 
+0100
@@ -252,7 +252,7 @@
 
 lc.h lctab.h :JOINT: lcgen lc.tab
        $(*:O=1:C,^[^/],./&,) $(tmp).1 $(tmp).2 < $(*:O=2) # :P=E: in 2006
-       $(PROTO) -p $(PROTOFLAGS) $(tmp).1 > $(tmp).3
+       $(PROTO) -p $(PROTOFLAGS) $(tmp).1 $(PROTOINSTALL) > $(tmp).3
        $(RM) -f $(tmp).1
        if      $(CMP) -s $(tmp).3 $(<:O=1)
        then    $(RM) $(tmp).3
@@ -269,14 +269,14 @@
 
 $(HEADEROPT:D=$(INCLUDEDIR):B:S) : $$(<:B:S) ast_lib.h
        case $(CC.HOSTTYPE) in
-       win32.*)$(PROTO) -p $(PROTOFLAGS) $(*:O=1) > 1.$(tmp).x
+       win32.*)$(PROTO) -p $(PROTOFLAGS) $(*:O=1) $(PROTOINSTALL) > 1.$(tmp).x
                if      $(CMP) -s $(<) 1.$(tmp).x
                then    $(RM) -f 1.$(tmp).x
                else    $(MV) 1.$(tmp).x $(<)
                fi
                ;;
        *)      $(SILENT) $(GREP) -l 'define[   ][      ]*_[hl][di][rb]_$(<:B)' 
$(*:O>1) > /dev/null || {
-               $(PROTO) -p $(PROTOFLAGS) $(*:O=1) > 1.$(tmp).x
+               $(PROTO) -p $(PROTOFLAGS) $(*:O=1) $(PROTOINSTALL) > 1.$(tmp).x
                if      $(CMP) -s $(<) 1.$(tmp).x
                then    $(RM) -f 1.$(tmp).x
                else    $(MV) 1.$(tmp).x $(<)
diff -r -N -u ksh93_2006_10_31/src/lib/libast/Mamfile 
ksh93_2006_12_04/src/lib/libast/Mamfile
--- ksh93_2006_10_31/src/lib/libast/Mamfile     2006-11-03 03:05:32.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libast/Mamfile     2006-12-05 23:38:31.000000000 
+0100
@@ -138,11 +138,20 @@
 make features/param.sh
 done features/param.sh
 exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} 
'   run features/param.sh
-make error?--?old?ethernet?address?at?wrong?offset implicit
-done error?--?old?ethernet?address?at?wrong?offset dontcare virtual
+make std/endian.h implicit
+make std/bytesex.h implicit
+make ast_common.h implicit
+prev FEATURE/common
+exec - sed '/define _def_map_ast/d' < FEATURE/common > 1.${COTEMP}.x
+exec - if      cmp 2>/dev/null -s ast_common.h 1.${COTEMP}.x
+exec - then    rm -f 1.${COTEMP}.x
+exec - else    mv 1.${COTEMP}.x ast_common.h
+exec - fi
+prev ast_map.h implicit
+done ast_common.h dontcare generated
+done std/bytesex.h dontcare
+done std/endian.h dontcare
 done FEATURE/param generated
-make comp/re_comp.h implicit
-done comp/re_comp.h dontcare
 make comp/getopt.h implicit
 make include/ast_getopt.h implicit
 done include/ast_getopt.h dontcare
@@ -151,7 +160,7 @@
 prev FEATURE/lib implicit
 prev FEATURE/standards implicit
 done features/limits.c
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp 
-Iinclude  ${LDFLAGS} '   run features/limits.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp 
-Iinclude -Istd  ${LDFLAGS} '   run features/limits.c
 done FEATURE/limits generated
 exec - cmp 2>/dev/null -s FEATURE/limits ast_limits.h || { rm -f ast_limits.h; 
silent test -d . || mkdir .; ${STDCP} FEATURE/limits ast_limits.h; }
 done ast_limits.h generated
@@ -165,15 +174,7 @@
 done include/sfio_s.h dontcare
 make include/ast_std.h implicit
 make include/regex.h implicit
-make ast_common.h implicit
-prev FEATURE/common
-exec - sed '/define _def_map_ast/d' < FEATURE/common > 1.${COTEMP}.x
-exec - if      cmp 2>/dev/null -s ast_common.h 1.${COTEMP}.x
-exec - then    rm -f 1.${COTEMP}.x
-exec - else    mv 1.${COTEMP}.x ast_common.h
-exec - fi
-prev ast_map.h implicit
-done ast_common.h dontcare generated
+prev ast_common.h implicit
 done include/regex.h dontcare
 prev ast_map.h implicit
 make ast_botch.h implicit
@@ -186,7 +187,7 @@
 done FEATURE/types generated
 prev FEATURE/lib implicit
 done features/botch.c
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  
${LDFLAGS} '   run features/botch.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  
${LDFLAGS} '   run features/botch.c
 done FEATURE/botch generated
 exec - cmp 2>/dev/null -s FEATURE/botch ast_botch.h || { rm -f ast_botch.h; 
silent test -d . || mkdir .; ${STDCP} FEATURE/botch ast_botch.h; }
 done ast_botch.h dontcare generated
@@ -209,7 +210,7 @@
 done FEATURE/fs generated
 prev FEATURE/lib implicit
 done features/fcntl.c
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp 
-Iinclude  ${LDFLAGS} '   run features/fcntl.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp 
-Iinclude -Istd  ${LDFLAGS} '   run features/fcntl.c
 make ast_fs.h implicit
 prev FEATURE/fs
 exec - cmp 2>/dev/null -s FEATURE/fs ast_fs.h || { rm -f ast_fs.h; silent test 
-d . || mkdir .; ${STDCP} FEATURE/fs ast_fs.h; }
@@ -225,10 +226,8 @@
 make features/sys
 done features/sys
 exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} 
'   run features/sys
-make std/stdio.h implicit
-prev ast_stdio.h implicit
-done std/stdio.h dontcare
-prev comp/getopt.h implicit
+prev std/endian.h implicit
+prev std/endian.h implicit
 done FEATURE/sys generated
 exec - cmp 2>/dev/null -s FEATURE/sys ast_sys.h || { rm -f ast_sys.h; silent 
test -d . || mkdir .; ${STDCP} FEATURE/sys ast_sys.h; }
 done ast_sys.h dontcare generated
@@ -242,7 +241,7 @@
 exec - cmp 2>/dev/null -s FEATURE/stdio ast_stdio.h || { rm -f ast_stdio.h; 
silent test -d . || mkdir .; ${STDCP} FEATURE/stdio ast_stdio.h; }
 prev include/sfio_s.h implicit
 prev include/ast_std.h implicit
-done ast_stdio.h dontcare generated
+done ast_stdio.h generated
 make ast_nl_types.h
 make FEATURE/nl_types
 meta FEATURE/nl_types features/%>FEATURE/% features/nl_types nl_types
@@ -258,7 +257,10 @@
 make features/wchar
 done features/wchar
 exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} 
'   run features/wchar
-prev std/stdio.h implicit
+prev std/endian.h implicit
+make std/stdio.h implicit
+prev ast_stdio.h implicit
+done std/stdio.h dontcare
 prev std/stdio.h implicit
 prev ast_common.h implicit
 done FEATURE/wchar generated
@@ -298,12 +300,14 @@
 exec - rm -f 1.${COTEMP}.*
 make astmath.exe
 make port/astmath.c
+prev std/endian.h implicit
+prev std/endian.h implicit
 done port/astmath.c
 exec - X=1
 exec - for N in 1 2 3 4 5 6
-exec - do      if      ${CC} -DN=$N -DIS ${mam_cc_FLAGS} ${CCFLAGS}   -o 
astmath.exe port/astmath.c 2>/dev/null
+exec - do      if      ${CC} -DN=$N -DIS ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  
-o astmath.exe port/astmath.c 2>/dev/null
 exec -         then    : implicit math function N=$N :
-exec -         elif    ${CC} -DN=$N -DIS ${mam_cc_FLAGS} ${CCFLAGS}   -o 
astmath.exe port/astmath.c -lm 2>/dev/null
+exec -         elif    ${CC} -DN=$N -DIS ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  
-o astmath.exe port/astmath.c -lm 2>/dev/null
 exec -         then    : math function N=$N requires -lm :
 exec -                 X=0
 exec -                 break
@@ -359,8 +363,6 @@
 prev FEATURE/param
 exec - cmp 2>/dev/null -s FEATURE/param ast_param.h || { rm -f ast_param.h; 
silent test -d . || mkdir .; ${STDCP} FEATURE/param ast_param.h; }
 done ast_param.h dontcare generated
-make ndir.h implicit
-done ndir.h dontcare virtual
 make std/dirent.h implicit
 make ast_dirent.h implicit
 make FEATURE/dirent
@@ -375,6 +377,9 @@
 prev include/ast_std.h implicit
 done ast_dirent.h dontcare generated
 done std/dirent.h dontcare
+make ndir.h implicit
+done ndir.h dontcare virtual
+prev std/dirent.h implicit
 make include/ls.h implicit
 make ast_mode.h implicit
 make FEATURE/mode
@@ -385,7 +390,7 @@
 prev FEATURE/param implicit
 done features/mode.c
 prev ast.req
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. 
-Iinclude  ${LDFLAGS} '   run features/mode.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. 
-Iinclude -Istd  ${LDFLAGS} '   run features/mode.c
 done FEATURE/mode generated
 exec - cmp 2>/dev/null -s FEATURE/mode ast_mode.h || { rm -f ast_mode.h; 
silent test -d . || mkdir .; ${STDCP} FEATURE/mode ast_mode.h; }
 done ast_mode.h dontcare generated
@@ -462,6 +467,7 @@
 prev include/regex.h implicit
 prev include/ls.h implicit
 prev include/error.h implicit
+prev std/endian.h implicit
 make include/cdt.h implicit
 prev ast_common.h implicit
 prev include/ast_std.h implicit
@@ -911,7 +917,7 @@
 make port/lc.tab
 done port/lc.tab
 exec - ./lcgen ${COTEMP}.1 ${COTEMP}.2 < port/lc.tab
-exec - proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' ${COTEMP}.1 > ${COTEMP}.3
+exec - proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' ${COTEMP}.1  > ${COTEMP}.3
 exec - rm -f ${COTEMP}.1
 exec - if      cmp 2>/dev/null -s ${COTEMP}.3 lc.h
 exec - then    rm ${COTEMP}.3
@@ -1403,8 +1409,6 @@
 prev port/lclib.h implicit
 make vfork.h implicit
 done vfork.h dontcare virtual
-make cell_sys_headers.h implicit
-done cell_sys_headers.h dontcare virtual
 make std/wchar.h implicit
 prev ast_wchar.h implicit
 done std/wchar.h dontcare
@@ -2759,8 +2763,6 @@
 done process.h dontcare virtual
 prev include/wait.h implicit
 prev include/error.h implicit
-make spawn.h implicit
-done spawn.h dontcare virtual
 prev include/ast.h implicit
 done comp/spawnveg.c
 meta spawnveg.o %.c>%.o comp/spawnveg.c spawnveg
@@ -2879,6 +2881,8 @@
 make gross.o
 make comp/gross.c
 make comp/gross_sgi.h implicit
+make locale_attr.h implicit
+done locale_attr.h dontcare virtual
 done comp/gross_sgi.h dontcare
 make FEATURE/hack implicit
 meta FEATURE/hack features/%>FEATURE/% features/hack hack
@@ -2941,7 +2945,7 @@
 done comp/getpgrp.c
 meta getpgrp.o %.c>%.o comp/getpgrp.c getpgrp
 prev comp/getpgrp.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  -c comp/getpgrp.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c comp/getpgrp.c
 done getpgrp.o generated
 make setpgid.o
 make comp/setpgid.c
@@ -3264,7 +3268,7 @@
 done comp/basename.c
 meta basename.o %.c>%.o comp/basename.c basename
 prev comp/basename.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  -c comp/basename.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c comp/basename.c
 done basename.o generated
 make closelog.o
 make comp/closelog.c
@@ -3285,7 +3289,7 @@
 done comp/dirname.c
 meta dirname.o %.c>%.o comp/dirname.c dirname
 prev comp/dirname.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  -c comp/dirname.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c comp/dirname.c
 done dirname.o generated
 make fmtmsglib.o
 make comp/fmtmsglib.c
@@ -3379,7 +3383,8 @@
 make re_comp.o
 make comp/re_comp.c
 prev include/regex.h implicit
-prev comp/re_comp.h implicit
+make comp/re_comp.h implicit
+done comp/re_comp.h
 prev include/ast.h implicit
 done comp/re_comp.c
 meta re_comp.o %.c>%.o comp/re_comp.c re_comp
@@ -3469,7 +3474,7 @@
 done swab.o generated
 make syslog.o
 make comp/syslog.c
-prev std/stdio.h implicit
+prev std/endian.h implicit
 prev include/ls.h implicit
 prev include/tm.h implicit
 prev include/error.h implicit
@@ -4203,7 +4208,7 @@
 prev FEATURE/common implicit
 done features/sfinit.c
 prev ast.req
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  
${LDFLAGS} '   run features/sfinit.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  
${LDFLAGS} '   run features/sfinit.c
 done FEATURE/sfinit generated
 prev FEATURE/float implicit
 prev sfio/sfhdr.h implicit
@@ -5260,8 +5265,6 @@
 done astcopy.o generated
 make astconf.o
 make port/astconf.c
-make sys.s implicit
-done sys.s dontcare virtual
 make FEATURE/libpath implicit
 meta FEATURE/libpath features/%.sh>FEATURE/% features/libpath.sh libpath
 make features/libpath.sh
@@ -5330,7 +5333,7 @@
 done conftab.c
 meta conftab.o %.c>%.o conftab.c conftab
 prev conftab.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude  -c conftab.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude -Istd  -c 
conftab.c
 done conftab.o generated
 make aststatic.o
 make port/aststatic.c
@@ -5532,7 +5535,6 @@
 make malloc.o
 make vmalloc/malloc.c
 prev include/ast_windows.h implicit
-prev std/stdio.h implicit
 prev vmalloc/vmhdr.h implicit
 done vmalloc/malloc.c
 meta malloc.o %.c>%.o vmalloc/malloc.c malloc
@@ -5553,7 +5555,7 @@
 done uwin/a64l.c
 meta a64l.o %.c>%.o uwin/a64l.c a64l
 prev uwin/a64l.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude -Istd  -c 
uwin/a64l.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c uwin/a64l.c
 done a64l.o generated
 make acosh.o
 make uwin/acosh.c
@@ -5563,7 +5565,7 @@
 done uwin/acosh.c
 meta acosh.o %.c>%.o uwin/acosh.c acosh
 prev uwin/acosh.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/acosh.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/acosh.c
 done acosh.o generated
 make asinh.o
 make uwin/asinh.c
@@ -5572,7 +5574,7 @@
 done uwin/asinh.c
 meta asinh.o %.c>%.o uwin/asinh.c asinh
 prev uwin/asinh.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/asinh.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/asinh.c
 done asinh.o generated
 make atanh.o
 make uwin/atanh.c
@@ -5581,7 +5583,7 @@
 done uwin/atanh.c
 meta atanh.o %.c>%.o uwin/atanh.c atanh
 prev uwin/atanh.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/atanh.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/atanh.c
 done atanh.o generated
 make cbrt.o
 make uwin/cbrt.c
@@ -5590,7 +5592,7 @@
 done uwin/cbrt.c
 meta cbrt.o %.c>%.o uwin/cbrt.c cbrt
 prev uwin/cbrt.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/cbrt.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/cbrt.c
 done cbrt.o generated
 make crypt.o
 make uwin/crypt.c
@@ -5610,7 +5612,7 @@
 done uwin/erf.c
 meta erf.o %.c>%.o uwin/erf.c erf
 prev uwin/erf.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/erf.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/erf.c
 done erf.o generated
 make err.o
 make uwin/err.c
@@ -5630,7 +5632,7 @@
 done uwin/exp.c
 meta exp.o %.c>%.o uwin/exp.c exp
 prev uwin/exp.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/exp.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/exp.c
 done exp.o generated
 make exp__E.o
 make uwin/exp__E.c
@@ -5639,7 +5641,7 @@
 done uwin/exp__E.c
 meta exp__E.o %.c>%.o uwin/exp__E.c exp__E
 prev uwin/exp__E.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/exp__E.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/exp__E.c
 done exp__E.o generated
 make expm1.o
 make uwin/expm1.c
@@ -5648,7 +5650,7 @@
 done uwin/expm1.c
 meta expm1.o %.c>%.o uwin/expm1.c expm1
 prev uwin/expm1.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/expm1.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/expm1.c
 done expm1.o generated
 make gamma.o
 make uwin/gamma.c
@@ -5657,7 +5659,7 @@
 done uwin/gamma.c
 meta gamma.o %.c>%.o uwin/gamma.c gamma
 prev uwin/gamma.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/gamma.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/gamma.c
 done gamma.o generated
 make getpass.o
 make uwin/getpass.c
@@ -5675,7 +5677,7 @@
 done uwin/lgamma.c
 meta lgamma.o %.c>%.o uwin/lgamma.c lgamma
 prev uwin/lgamma.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/lgamma.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/lgamma.c
 done lgamma.o generated
 make log.o
 make uwin/log.c
@@ -5684,7 +5686,7 @@
 done uwin/log.c
 meta log.o %.c>%.o uwin/log.c log
 prev uwin/log.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/log.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/log.c
 done log.o generated
 make log1p.o
 make uwin/log1p.c
@@ -5693,7 +5695,7 @@
 done uwin/log1p.c
 meta log1p.o %.c>%.o uwin/log1p.c log1p
 prev uwin/log1p.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/log1p.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/log1p.c
 done log1p.o generated
 make log__L.o
 make uwin/log__L.c
@@ -5702,7 +5704,7 @@
 done uwin/log__L.c
 meta log__L.o %.c>%.o uwin/log__L.c log__L
 prev uwin/log__L.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/log__L.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/log__L.c
 done log__L.o generated
 make rand48.o
 make uwin/rand48.c
@@ -5710,7 +5712,7 @@
 done uwin/rand48.c
 meta rand48.o %.c>%.o uwin/rand48.c rand48
 prev uwin/rand48.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude -Istd  -c 
uwin/rand48.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c uwin/rand48.c
 done rand48.o generated
 make random.o
 make uwin/random.c
@@ -5718,18 +5720,14 @@
 done uwin/random.c
 meta random.o %.c>%.o uwin/random.c random
 prev uwin/random.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude -Istd  -c 
uwin/random.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c uwin/random.c
 done random.o generated
 make rcmd.o
 make uwin/rcmd.c
 prev std/nl_types.h implicit
 make uwin/rlib.h implicit
+prev std/endian.h implicit
 prev std/stdio.h implicit
-make std/endian.h implicit
-make std/bytesex.h implicit
-prev ast_common.h implicit
-done std/bytesex.h dontcare
-done std/endian.h dontcare
 prev std/stdio.h implicit
 prev include/ast_std.h implicit
 done uwin/rlib.h dontcare
@@ -5745,7 +5743,7 @@
 done uwin/rint.c
 meta rint.o %.c>%.o uwin/rint.c rint
 prev uwin/rint.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I.  -c uwin/rint.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd  -c uwin/rint.c
 done rint.o generated
 make support.o
 make uwin/support.c
@@ -5754,7 +5752,7 @@
 done uwin/support.c
 meta support.o %.c>%.o uwin/support.c support
 prev uwin/support.c
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin  -c uwin/support.c
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iuwin -Istd  -c uwin/support.c
 done support.o generated
 make sfstrtmp.o
 make disc/sfstrtmp.c
@@ -6879,18 +6877,17 @@
 done misc/magic.tab
 exec - test '' = 'misc/magic.tab' || ${STDCMP} 2>/dev/null -s misc/magic.tab 
${INSTALLROOT}/lib/file/magic || { ${STDMV} ${INSTALLROOT}/lib/file/magic 
${INSTALLROOT}/lib/file/magic.old 2>/dev/null || true; ${STDCP} misc/magic.tab 
${INSTALLROOT}/lib/file/magic                                ;}
 done ${INSTALLROOT}/lib/file/magic generated
-make ${INSTALLROOT}/include/ast/fmtmsg.h
 prev comp/fmtmsg.h
 prev ast_lib.h
 exec - case ${mam_cc_HOSTTYPE} in
-exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/fmtmsg.h > 1.${COTEMP}.x
+exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/fmtmsg.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/fmtmsg.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/fmtmsg.h
 exec -         fi
 exec -         ;;
 exec - *)      silent grep -l 'define[         ][      ]*_[hl][di][rb]_fmtmsg' 
ast_lib.h > /dev/null || {
-exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/fmtmsg.h > 1.${COTEMP}.x
+exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/fmtmsg.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/fmtmsg.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/fmtmsg.h
@@ -6898,20 +6895,17 @@
 exec -         }
 exec -         ;;
 exec - esac
-prev ${INSTALLROOT}/include/prototyped.h implicit
-done ${INSTALLROOT}/include/ast/fmtmsg.h generated
-make ${INSTALLROOT}/include/ast/libgen.h
 prev comp/libgen.h
 prev ast_lib.h
 exec - case ${mam_cc_HOSTTYPE} in
-exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/libgen.h > 1.${COTEMP}.x
+exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/libgen.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/libgen.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/libgen.h
 exec -         fi
 exec -         ;;
 exec - *)      silent grep -l 'define[         ][      ]*_[hl][di][rb]_libgen' 
ast_lib.h > /dev/null || {
-exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/libgen.h > 1.${COTEMP}.x
+exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/libgen.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/libgen.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/libgen.h
@@ -6919,20 +6913,17 @@
 exec -         }
 exec -         ;;
 exec - esac
-prev ${INSTALLROOT}/include/prototyped.h implicit
-done ${INSTALLROOT}/include/ast/libgen.h generated
-make ${INSTALLROOT}/include/ast/syslog.h
 prev comp/syslog.h
 prev ast_lib.h
 exec - case ${mam_cc_HOSTTYPE} in
-exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/syslog.h > 1.${COTEMP}.x
+exec - win32.*)proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/syslog.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/syslog.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/syslog.h
 exec -         fi
 exec -         ;;
 exec - *)      silent grep -l 'define[         ][      ]*_[hl][di][rb]_syslog' 
ast_lib.h > /dev/null || {
-exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/syslog.h > 1.${COTEMP}.x
+exec -         proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o 
since=1985,author=gsf+dgk+kpv' comp/syslog.h  > 1.${COTEMP}.x
 exec -         if      cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/syslog.h 
1.${COTEMP}.x
 exec -         then    rm -f 1.${COTEMP}.x
 exec -         else    mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/syslog.h
@@ -6940,9 +6931,6 @@
 exec -         }
 exec -         ;;
 exec - esac
-prev include/namval.h implicit
-prev ${INSTALLROOT}/include/prototyped.h implicit
-done ${INSTALLROOT}/include/ast/syslog.h generated
 make ${INSTALLROOT}/include/ast/prototyped.h
 prev ${INSTALLROOT}/include/ast
 exec - echo "#include <../prototyped.h>" > 1.${COTEMP}.x
diff -r -N -u ksh93_2006_10_31/src/lib/libast/port/astconf.c 
ksh93_2006_12_04/src/lib/libast/port/astconf.c
--- ksh93_2006_10_31/src/lib/libast/port/astconf.c      2006-10-25 
19:29:18.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/port/astconf.c      2006-11-18 
13:08:38.000000000 +0100
@@ -26,7 +26,7 @@
  * extended to allow some features to be set per-process
  */
 
-static const char id[] = "\n@(#)$Id: getconf (AT&T Research) 2006-10-25 $\0\n";
+static const char id[] = "\n@(#)$Id: getconf (AT&T Research) 2006-11-15 $\0\n";
 
 #include "univlib.h"
 
@@ -93,6 +93,7 @@
 #endif
 
 static char    null[1];
+static char    root[2] = "/";
 
 typedef struct Feature_s
 {
@@ -102,7 +103,7 @@
        char*           strict;
        short           length;
        short           standard;
-       short           flags;
+       unsigned short  flags;
        short           op;
 } Feature_t;
 
@@ -110,7 +111,7 @@
 {
        Conf_t*         conf;
        const char*     name;
-       short           flags;
+       unsigned short  flags;
        short           call;
        short           standard;
        short           section;
@@ -777,14 +778,14 @@
 #endif
        look->name = name;
 #if DEBUG || DEBUG_astconf
-       error(-1, "astconf normal name=%s standard=%d section=%d call=%d 
flags=%04x elements=%d", look->name, look->standard, look->section, look->call, 
flags, conf_elements);
+       error(-2, "astconf normal name=%s standard=%d section=%d call=%d 
flags=%04x elements=%d", look->name, look->standard, look->section, look->call, 
flags, conf_elements);
 #endif
        c = *((unsigned char*)name);
        while (lo <= hi)
        {
                mid = lo + (hi - lo) / 2;
 #if DEBUG || DEBUG_astconf
-               error(-2, "astconf lookup name=%s mid=%s", name, mid->name);
+               error(-3, "astconf lookup name=%s mid=%s", name, mid->name);
 #endif
                if (!(v = c - *((unsigned char*)mid->name)) && !(v = 
strcmp(name, mid->name)))
                {
@@ -815,11 +816,11 @@
        }
        return 0;
  found:
-       if (look->call < 0 && look->standard >= 0)
+       if (look->call < 0 && look->standard >= 0 && (look->section <= 1 || 
(mid->flags & CONF_MINMAX)))
                look->flags |= CONF_MINMAX;
        look->conf = mid;
 #if DEBUG || DEBUG_astconf
-       error(-1, "astconf lookup name=%s standard=%d:%d section=%d:%d 
call=%d:%d", look->name, look->standard, mid->standard, look->section, 
mid->section, look->call, mid->call);
+       error(-2, "astconf lookup name=%s standard=%d:%d section=%d:%d 
call=%d:%d", look->name, look->standard, mid->standard, look->section, 
mid->section, look->call, mid->call);
 #endif
        return 1;
 }
@@ -860,6 +861,7 @@
        char*                   call;
        char*                   f;
        const char*             s;
+       int                     i;
        int                     olderrno;
        int                     drop;
        _ast_intmax_t           v;
@@ -871,23 +873,72 @@
        olderrno = errno;
        errno = 0;
 #if DEBUG || DEBUG_astconf
-       error(-1, "astconf print name=%s:%s standard=%d section=%d call=%s 
op=%d flags=|%s%s%s%s%s:|%s%s%s%s%s"
+       error(-1, "astconf name=%s:%s standard=%d section=%d call=%s op=%d 
flags=|%s%s%s%s%s:|%s%s%s%s%s%s%s%s%s%s"
                , name , p->name, p->standard, p->section, prefix[p->call + 
CONF_call].name, p->op
                , (flags & CONF_FEATURE) ? "FEATURE|" : ""
                , (flags & CONF_LIMIT) ? "LIMIT|" : ""
                , (flags & CONF_MINMAX) ? "MINMAX|" : ""
                , (flags & CONF_PREFIXED) ? "PREFIXED|" : ""
                , (flags & CONF_STRING) ? "STRING|" : ""
+               , (p->flags & CONF_DEFER_CALL) ? "DEFER_CALL|" : ""
+               , (p->flags & CONF_DEFER_MM) ? "DEFER_MM|" : ""
                , (p->flags & CONF_FEATURE) ? "FEATURE|" : ""
                , (p->flags & CONF_LIMIT_DEF) ? "LIMIT_DEF|" : (p->flags & 
CONF_LIMIT) ? "LIMIT|" : ""
                , (p->flags & CONF_MINMAX_DEF) ? "MINMAX_DEF|" : (p->flags & 
CONF_MINMAX) ? "MINMAX|" : ""
+               , (p->flags & CONF_NOUNDERSCORE) ? "NOUNDERSCORE|" : ""
                , (p->flags & CONF_PREFIXED) ? "PREFIXED|" : ""
+               , (p->flags & CONF_PREFIX_ONLY) ? "PREFIX_ONLY|" : ""
+               , (p->flags & CONF_STANDARD) ? "STANDARD|" : ""
                , (p->flags & CONF_STRING) ? "STRING|" : ""
+               , (p->flags & CONF_UNDERSCORE) ? "UNDERSCORE|" : ""
                );
 #endif
        flags |= CONF_LIMIT_DEF|CONF_MINMAX_DEF;
+       if (conferror && name)
+       {
+               if ((p->flags & CONF_PREFIX_ONLY) && look->standard < 0)
+                       goto bad;
+               if (!(flags & CONF_MINMAX) || !(p->flags & CONF_MINMAX))
+               {
+                       switch (p->call)
+                       {
+                       case CONF_pathconf:
+                               if (path == root)
+                               {
+                                       (*conferror)(&state, &state, 2, "%s: 
path expected", name);
+                                       goto bad;
+                               }
+                               break;
+                       default:
+                               if (path != root)
+                               {
+                                       (*conferror)(&state, &state, 2, "%s: 
path not expected", name);
+                                       goto bad;
+                               }
+                               break;
+                       }
+#ifdef _pth_getconf
+                       if (p->flags & CONF_DEFER_CALL)
+                               goto bad;
+#endif
+               }
+               else
+               {
+                       if (path != root)
+                       {
+                               (*conferror)(&state, &state, 2, "%s: path not 
expected", name);
+                               goto bad;
+                       }
+#ifdef _pth_getconf
+                       if ((p->flags & CONF_DEFER_MM) || !(p->flags & 
CONF_MINMAX_DEF))
+                               goto bad;
+#endif
+               }
+               if (look->standard >= 0 && (name[0] != '_' && ((p->flags & 
CONF_UNDERSCORE) || look->section <= 1) || name[0] == '_' && (p->flags & 
CONF_NOUNDERSCORE)) || look->standard < 0 && name[0] == '_')
+                       goto bad;
+       }
        s = 0;
-       switch ((p->op < 0 || (flags & CONF_MINMAX) && (p->flags & 
CONF_MINMAX_DEF)) ? 0 : p->call)
+       switch (i = (p->op < 0 || (flags & CONF_MINMAX) && (p->flags & 
CONF_MINMAX_DEF)) ? 0 : p->call)
        {
        case CONF_confstr:
                call = "confstr";
@@ -948,6 +999,14 @@
                        listflags &= ~ASTCONF_system;
                }
        predef:
+               if (look->standard == CONF_AST)
+               {
+                       if (streq(look->name, "VERSION"))
+                       {
+                               v = _AST_VERSION;
+                               break;
+                       }
+               }
                if (!(listflags & ASTCONF_system))
                {
                        if (flags & CONF_MINMAX)
@@ -978,7 +1037,9 @@
                        if ((p->flags & CONF_FEATURE) || !(p->flags & 
(CONF_LIMIT|CONF_MINMAX)))
                                flags &= ~(CONF_LIMIT_DEF|CONF_MINMAX_DEF);
                }
-               else if (!(flags & CONF_PREFIXED))
+               else if (flags & CONF_PREFIXED)
+                       flags &= ~(CONF_LIMIT_DEF|CONF_MINMAX_DEF);
+               else if (errno != EINVAL || !i)
                {
                        if (!sp)
                        {
@@ -989,22 +1050,27 @@
                                        else if (!(listflags & ASTCONF_system))
                                                (*conferror)(&state, &state, 2, 
"%s: unknown name", p->name);
                                }
-                               return (listflags & ASTCONF_error) ? (char*)0 : 
null;
+                               goto bad;
+                       }
+                       else
+                       {
+                               flags &= ~(CONF_LIMIT_DEF|CONF_MINMAX_DEF);
+                               flags |= CONF_ERROR;
                        }
-                       flags &= ~(CONF_LIMIT_DEF|CONF_MINMAX_DEF);
-                       flags |= CONF_ERROR;
                }
-               else
-                       flags &= ~(CONF_LIMIT_DEF|CONF_MINMAX_DEF);
        }
        errno = olderrno;
        if ((listflags & ASTCONF_defined) && !(flags & 
(CONF_LIMIT_DEF|CONF_MINMAX_DEF)))
-               return null;
+               goto bad;
        if ((drop = !sp) && !(sp = sfstropen()))
-               return null;
+               goto bad;
        if (listflags & ASTCONF_table)
        {
                f = flg;
+               if (p->flags & CONF_DEFER_CALL)
+                       *f++ = 'C';
+               if (p->flags & CONF_DEFER_MM)
+                       *f++ = 'D';
                if (p->flags & CONF_FEATURE)
                        *f++ = 'F';
                if (p->flags & CONF_LIMIT)
@@ -1019,10 +1085,14 @@
                        *f++ = 'S';
                if (p->flags & CONF_UNDERSCORE)
                        *f++ = 'U';
+               if (p->flags & CONF_NOUNDERSCORE)
+                       *f++ = 'V';
+               if (p->flags & CONF_PREFIX_ONLY)
+                       *f++ = 'W';
                if (f == flg)
                        *f++ = 'X';
                *f = 0;
-               sfprintf(sp, "%*s %*s %d %2s %4d %5s ", sizeof(p->name), 
p->name, sizeof(prefix[p->standard].name), prefix[p->standard].name, 
p->section, prefix[p->call + CONF_call].name, p->op, flg);
+               sfprintf(sp, "%*s %*s %d %2s %4d %6s ", sizeof(p->name), 
p->name, sizeof(prefix[p->standard].name), prefix[p->standard].name, 
p->section, prefix[p->call + CONF_call].name, p->op, flg);
                if (p->flags & CONF_LIMIT_DEF)
                {
                        if (p->limit.string)
@@ -1112,7 +1182,8 @@
                sfclose(sp);
                return call;
        }
-       return null;
+ bad:
+       return (listflags & ASTCONF_error) ? (char*)0 : null;
 }
 
 /*
@@ -1128,7 +1199,7 @@
        long            ops[2];
 
 #if DEBUG || DEBUG_astconf
-       error(-1, "astconf defer %s %s", _pth_getconf, operand);
+       error(-2, "astconf defer %s %s", _pth_getconf, operand);
 #endif
        cmd[0] = (char*)state.id;
        cmd[1] = (char*)operand;
@@ -1210,7 +1281,7 @@
        }
        INITIALIZE();
        if (!path)
-               path = "/";
+               path = root;
        if (state.recent && streq(name, state.recent->name) && (s = 
format(state.recent, path, value, flags, conferror)))
                return s;
        if (lookup(&look, name, flags))
@@ -1344,7 +1415,7 @@
 
        INITIALIZE();
        if (!path)
-               path = "/";
+               path = root;
        else if (access(path, F_OK))
        {
                errorf(&state, &state, 2, "%s: not found", path);
diff -r -N -u ksh93_2006_10_31/src/lib/libast/port/lcgen.c 
ksh93_2006_12_04/src/lib/libast/port/lcgen.c
--- ksh93_2006_10_31/src/lib/libast/port/lcgen.c        2004-05-04 
22:04:13.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/port/lcgen.c        2004-05-04 
22:04:13.000000000 +0200
@@ -253,8 +253,10 @@
 }
 
 #if defined(__STDC__) || defined(__cplusplus)
+int
 main(int argc, char** argv)
 #else
+int
 main(argc, argv)
 int            argc;
 char**         argv;
diff -r -N -u ksh93_2006_10_31/src/lib/libast/regex/reginit.c 
ksh93_2006_12_04/src/lib/libast/regex/reginit.c
--- ksh93_2006_10_31/src/lib/libast/regex/reginit.c     2005-05-20 
15:44:27.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/regex/reginit.c     2006-12-01 
20:45:08.000000000 +0100
@@ -76,8 +76,8 @@
                T_STAR,         '*',            T_BAD,
                T_STAR,         '*',            T_BAD,
                T_STAR,         '*',            T_BAD,
-               T_STAR,         '*',            T_BAD,
-               T_STAR,         '*',            T_BAD,
+               T_STAR,         '*',            '*',
+               T_STAR,         '*',            '*',
        '[',
                T_BRA,          '[',            '[',
                T_BRA,          '[',            '[',
@@ -100,32 +100,32 @@
                '?',            T_BAD,          T_BAD,
                T_QUES,         '?',            T_BAD,
                T_QUES,         '?',            T_BAD,
-               T_QUES,         '?',            T_BAD,
-               T_QUES,         '?',            T_BAD,
+               T_QUES,         '?',            '?',
+               T_QUES,         '?',            '?',
        '(',
                '(',            T_OPEN,         T_BAD,
                T_OPEN,         '(',            T_BAD,
                T_OPEN,         '(',            T_BAD,
-               '(',            '(',            T_BAD,
-               T_OPEN,         '(',            T_BAD,
+               '(',            '(',            '(',
+               T_OPEN,         '(',            '(',
        ')',
                ')',            T_CLOSE,        T_BAD,
                T_CLOSE,        ')',            T_BAD,
                T_CLOSE,        ')',            T_BAD,
-               ')',            ')',            T_BAD,
-               T_CLOSE,        ')',            T_BAD,
+               ')',            ')',            ')',
+               T_CLOSE,        ')',            ')',
        '{',
                '{',            T_LEFT,         T_BAD,
                T_LEFT,         '{',            T_BAD,
                T_LEFT,         '{',            T_BAD,
-               '{',            '{',            T_BAD,
-               T_LEFT,         '{',            T_BAD,
+               '{',            '{',            '{',
+               T_LEFT,         '{',            '{',
        '}',
                '}',            T_RIGHT,        T_BAD,
                '}',            T_BAD,          T_BAD,
                '}',            T_BAD,          T_BAD,
-               '}',            '}',            T_BAD,
-               '}',            '}',            T_BAD,
+               '}',            '}',            '}',
+               '}',            '}',            '}',
        '&',
                '&',            T_BAD,          T_BAD,
                '&',            T_AND,          T_BAD,
diff -r -N -u ksh93_2006_10_31/src/lib/libast/RELEASE 
ksh93_2006_12_04/src/lib/libast/RELEASE
--- ksh93_2006_10_31/src/lib/libast/RELEASE     2006-11-02 20:50:51.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libast/RELEASE     2006-12-04 15:23:59.000000000 
+0100
@@ -1,3 +1,16 @@
+06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
+06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
+06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside [...]
+06-12-01 sfio/sfcvt.c: add signbit/copysign tests
+06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d
+06-11-20 features/common: bias _ast_int8_t "long long" before "__int64"
+06-11-20 string/strperm.c: fix X to work with all ops (not just +)
+06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants
+06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls
+06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native
+06-11-11 comp/conf.tab: add D to defer to native
+06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash
+06-11-01 include/ast.h: add FMT_PARAM for fmtquote()
 06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control
 06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127
 06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts
diff -r -N -u ksh93_2006_10_31/src/lib/libast/sfio/sfcvt.c 
ksh93_2006_12_04/src/lib/libast/sfio/sfcvt.c
--- ksh93_2006_10_31/src/lib/libast/sfio/sfcvt.c        2006-06-27 
18:58:16.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/sfio/sfcvt.c        2006-12-04 
21:42:20.000000000 +0100
@@ -33,8 +33,13 @@
 #define SF_NAN         ((_Sfi = 3), Nan)
 
 #if ! _lib_isnan
+#if _lib_fpclassify
+#define isnan(n)       (fpclassify(n)==FP_NAN)
+#define isnanl(n)      (fpclassify(n)==FP_NAN)
+#else
 #define isnan(n)       (memcmp((void*)&n,(void*)&_Sfdnan,sizeof(n))==0)
 #define isnanl(n)      (memcmp((void*)&n,(void*)&_Sflnan,sizeof(n))==0)
+#endif
 #else
 #if ! _lib_isnanl
 #define isnanl(n)      isnan(n)
@@ -72,13 +77,50 @@
 
                if(isnanl(f))
                        return SF_NAN;
-               else if(f == 0.)
+#if _lib_isinf
+               if (n = isinf(f))
+               {       if (n < 0)
+                               *sign = 1;
+                       return SF_INFINITE;
+               }
+#endif
+#if _c99_in_the_wild
+#if _lib_signbit
+               if (signbit(f))
+#else
+#if _lib_copysignl
+               if (copysignl(1.0, f) < 0.0)
+#else
+#if _lib_copysign
+               if (copysign(1.0, (double)f) < 0.0)
+#else
+               if (f < 0.0)
+#endif
+#endif
+#endif
+               {       f = -f;
+                       *sign = 1;
+               }
+#if _lib_fpclassify
+               switch (fpclassify(f))
+               {
+               case FP_INFINITE:
+                       return SF_INFINITE;
+               case FP_NAN:
+                       return SF_NAN;
+               case FP_ZERO:
                        return SF_ZERO;
-               else if((*sign = (f < 0.)) )    /* assignment = */
-                       f = -f;
+               }
+#endif
+#else
+               if (f < 0.0)
+               {       f = -f;
+                       *sign = 1;
+               }
+#endif
                if(f < LDBL_MIN)
                        return SF_ZERO;
-               else if(f > LDBL_MAX)
+               if(f > LDBL_MAX)
                        return SF_INFINITE;
 
                if(format & SFFMT_AFORMAT)
@@ -127,7 +169,7 @@
                *decpt = (int)n;
 
                b = sp = buf + SF_INTPART;
-               if((v = (int)f) != 0)
+               if((v = (long)f) != 0)
                {       /* translate the integer part */
                        f -= (Sfdouble_t)v;
 
@@ -157,7 +199,7 @@
                {
                        if((format&SFFMT_EFORMAT) && *decpt == 0 && f > 0.)
                        {       Sfdouble_t      d;
-                               while((int)(d = f*10.) == 0)
+                               while((long)(d = f*10.) == 0)
                                {       f = d;
                                        *decpt -= 1;
                                }
@@ -183,15 +225,46 @@
 #endif
        {       double  f = (double)dv;
 
-               if(isnan(f))
+#if _lib_isinf
+               if (n = isinf(f))
+               {       if (n < 0)
+                               *sign = 1;
+                       return SF_INFINITE;
+               }
+#endif
+#if _c99_in_the_wild
+#if _lib_signbit
+               if (signbit(f))
+#else
+#if _lib_copysign
+               if (copysign(1.0, f) < 0.0)
+#else
+               if (f < 0.0)
+#endif
+#endif
+               {       f = -f;
+                       *sign = 1;
+               }
+#if _lib_fpclassify
+               switch (fpclassify(f))
+               {
+               case FP_INFINITE:
+                       return SF_INFINITE;
+               case FP_NAN:
                        return SF_NAN;
-               else if(f == 0.)
+               case FP_ZERO:
                        return SF_ZERO;
-               else if((*sign = (f < 0.)) )    /* assignment = */
-                       f = -f;
+               }
+#endif
+#else
+               if (f < 0.0)
+               {       f = -f;
+                       *sign = 1;
+               }
+#endif
                if(f < DBL_MIN)
                        return SF_ZERO;
-               else if(f > DBL_MAX)
+               if(f > DBL_MAX)
                        return SF_INFINITE;
 
                if(format & SFFMT_AFORMAT)
@@ -238,7 +311,7 @@
                *decpt = (int)n;
 
                b = sp = buf + SF_INTPART;
-               if((v = (int)f) != 0)
+               if((v = (long)f) != 0)
                {       /* translate the integer part */
                        f -= (double)v;
 
@@ -268,7 +341,7 @@
                {
                        if((format&SFFMT_EFORMAT) && *decpt == 0 && f > 0.)
                        {       reg double      d;
-                               while((int)(d = f*10.) == 0)
+                               while((long)(d = f*10.) == 0)
                                {       f = d;
                                        *decpt -= 1;
                                }
@@ -281,7 +354,7 @@
                                        do { *sp++ = '0'; } while(sp < ep);
                                        goto done;
                                }
-                               else if((n = (int)(f *= 10.)) < 10)
+                               else if((n = (long)(f *= 10.)) < 10)
                                {       *sp++ = (char)('0' + n);
                                        f -= n;
                                }
diff -r -N -u ksh93_2006_10_31/src/lib/libast/sfio/sfvprintf.c 
ksh93_2006_12_04/src/lib/libast/sfio/sfvprintf.c
--- ksh93_2006_10_31/src/lib/libast/sfio/sfvprintf.c    2006-10-27 
21:41:09.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/sfio/sfvprintf.c    2006-12-04 
15:22:55.000000000 +0100
@@ -489,10 +489,10 @@
                                        size = sizeof(int);
                        }
                        else if(_Sftype[fmt]&SFFMT_FLOAT)
-                       {       if(flags&(SFFMT_LONG|SFFMT_LLONG))
-                                       size = sizeof(double);
-                               else if(flags&SFFMT_LDOUBLE)
+                       {       if(flags&SFFMT_LDOUBLE)
                                        size = sizeof(Sfdouble_t);
+                               else if(flags&(SFFMT_LONG|SFFMT_LLONG))
+                                       size = sizeof(double);
                                else if(flags&SFFMT_IFLAG)
                                {       if(size <= 0)
                                                size = sizeof(Sfdouble_t);
diff -r -N -u ksh93_2006_10_31/src/lib/libast/string/fmtesc.c 
ksh93_2006_12_04/src/lib/libast/string/fmtesc.c
--- ksh93_2006_10_31/src/lib/libast/string/fmtesc.c     2005-09-13 
21:13:17.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/string/fmtesc.c     2006-11-15 
23:05:26.000000000 +0100
@@ -31,10 +31,6 @@
 #include <ccode.h>
 #include <ctype.h>
 
-#ifndef FMT_PARAM
-#define FMT_PARAM      0x10    /* disable FMT_SHELL ${ $( quote */
-#endif
-
 /*
  * quote string as of length n with qb...qe
  * (flags&FMT_ALWAYS) always quotes, otherwise quote output only if necessary
diff -r -N -u ksh93_2006_10_31/src/lib/libast/string/strperm.c 
ksh93_2006_12_04/src/lib/libast/string/strperm.c
--- ksh93_2006_10_31/src/lib/libast/string/strperm.c    2006-07-23 
09:21:01.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/string/strperm.c    2006-11-20 
17:25:41.000000000 +0100
@@ -106,7 +106,7 @@
                                                typ |= S_IWUSR|S_IWGRP|S_IWOTH;
                                                continue;
                                        case 'X':
-                                               if (op != '+' || !S_ISDIR(perm) 
&& !(perm & (S_IXUSR|S_IXGRP|S_IXOTH)))
+                                               if (!S_ISDIR(perm) && !(perm & 
(S_IXUSR|S_IXGRP|S_IXOTH)))
                                                        continue;
                                                /*FALLTHROUGH*/
                                        case 'x':
diff -r -N -u ksh93_2006_10_31/src/lib/libast/tm/tmxdate.c 
ksh93_2006_12_04/src/lib/libast/tm/tmxdate.c
--- ksh93_2006_10_31/src/lib/libast/tm/tmxdate.c        2005-04-13 
16:02:44.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/tm/tmxdate.c        2006-11-20 
07:08:43.000000000 +0100
@@ -67,6 +67,7 @@
 {
        int     n;
        int     m;
+       int     i;
        char*   t;
 
        while (isspace(*s) || *s == '_')
@@ -87,12 +88,21 @@
                        m = strtol(++s, &t, 10);
                        if (s == t || m < n || m > hi)
                                return -1;
-                       s = t;
+                       if (*(s = t) == '/')
+                       {
+                               i = strtol(++s, &t, 10);
+                               if (s == t || i < 1)
+                                       return -1;
+                               s = t;
+                       }
                }
                else
+               {
                        m = n;
-               while (n <= m)
-                       set[n++] = 1;
+                       i = 1;
+               }
+               for (; n <= m; n += i)
+                       set[n] = 1;
                if (*s != ',')
                        break;
                s++;
@@ -257,7 +267,7 @@
                                else if (!isdigit(n))
                                        break;
                                else
-                                       while ((n = *++s) == ',' || n == '-' || 
isdigit(n));
+                                       while ((n = *++s) == ',' || n == '-' || 
n == '/' || isdigit(n));
                                if (n != ' ' && n != '_' && n != ';')
                                {
                                        if (!n)
diff -r -N -u ksh93_2006_10_31/src/lib/libast/vmalloc/malloc.c 
ksh93_2006_12_04/src/lib/libast/vmalloc/malloc.c
--- ksh93_2006_10_31/src/lib/libast/vmalloc/malloc.c    2005-06-28 
00:08:59.000000000 +0200
+++ ksh93_2006_12_04/src/lib/libast/vmalloc/malloc.c    2006-11-27 
23:12:09.000000000 +0100
@@ -87,7 +87,7 @@
 #define _AST_std_malloc        1
 #endif
 
-#if !_std_malloc && !_AST_std_malloc
+#if ( !_std_malloc || !_BLD_ast ) && !_AST_std_malloc
 
 /*     malloc compatibility functions.
 **     These are aware of debugging/profiling and driven by the environment 
variables:
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/cmd.h 
ksh93_2006_12_04/src/lib/libcmd/cmd.h
--- ksh93_2006_10_31/src/lib/libcmd/cmd.h       2006-11-01 21:36:25.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/cmd.h       2006-11-27 16:45:45.000000000 
+0100
@@ -32,7 +32,7 @@
 #include <error.h>
 #include <stak.h>
 
-#define cmdinit(a,b,c,d,e)     _cmd_init(a,b,c,d,e)
+#define cmdinit                        _cmd_init
 #define cmdquit()              0
 
 #if _BLD_cmd && defined(__EXPORT__)
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/cmdinit.c 
ksh93_2006_12_04/src/lib/libcmd/cmdinit.c
--- ksh93_2006_10_31/src/lib/libcmd/cmdinit.c   2006-11-01 22:54:52.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/cmdinit.c   2006-11-24 22:28:38.000000000 
+0100
@@ -53,9 +53,13 @@
 
 #if __OBSOLETE__ < 20080101
 
+#if defined(__EXPORT__)
+#define extern __EXPORT__
+#endif
+
 #undef cmdinit
 
-void
+extern void
 cmdinit(char** argv, void* context, const char* catalog, int flags)
 {
        _cmd_init(0, argv, context, catalog, flags);
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/cmdrecurse.c 
ksh93_2006_12_04/src/lib/libcmd/cmdrecurse.c
--- ksh93_2006_10_31/src/lib/libcmd/cmdrecurse.c        2006-11-01 
21:16:09.000000000 +0100
+++ ksh93_2006_12_04/src/lib/libcmd/cmdrecurse.c        1970-01-01 
01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-/***********************************************************************
-*                                                                      *
-*               This software is part of the ast package               *
-*           Copyright (c) 1992-2006 AT&T Knowledge Ventures            *
-*                      and is licensed under the                       *
-*                  Common Public License, Version 1.0                  *
-*                      by AT&T Knowledge Ventures                      *
-*                                                                      *
-*                A copy of the License is available at                 *
-*            http://www.opensource.org/licenses/cpl1.0.txt             *
-*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
-*                                                                      *
-*              Information and Software Systems Research               *
-*                            AT&T Research                             *
-*                           Florham Park NJ                            *
-*                                                                      *
-*                 Glenn Fowler <gsf at research.att.com>                  *
-*                  David Korn <dgk at research.att.com>                   *
-*                                                                      *
-***********************************************************************/
-#pragma prototyped
-/*
- * use tw to recurse on argc,argv with pfxc,pfxv prefix args
- */
-
-#include <cmd.h>
-#include <proc.h>
-#include <ftwalk.h>
-
-int
-cmdrecurse(int argc, char** argv, int pfxc, char** pfxv)
-{
-       register char** v;
-       register char** a;
-       int             resolve = 'L';
-       char            arg[16];
-
-       if (!(a = (char**)stakalloc((argc + pfxc + 4) * sizeof(char**))))
-               error(ERROR_exit(1), "out of space");
-       v = a;
-       *v++ = "tw";
-       *v++ = arg;
-       *v++ = *(argv - opt_info.index);
-       while (*v = *pfxv++)
-       {
-               if (streq(*v, "-H"))
-                       resolve = 'H';
-               else if (streq(*v, "-P"))
-                       resolve = 'P';
-               v++;
-       }
-       while (*v++ = *argv++);
-       sfsprintf(arg, sizeof(arg), "-%cc%d", resolve, pfxc + 2);
-       procopen(*a, a, NiL, NiL, PROC_OVERLAY);
-       return(-1);
-}
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/cp.c 
ksh93_2006_12_04/src/lib/libcmd/cp.c
--- ksh93_2006_10_31/src/lib/libcmd/cp.c        2006-11-01 21:16:16.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/cp.c        2006-12-05 10:17:33.000000000 
+0100
@@ -27,7 +27,7 @@
  */
 
 static const char usage_head[] =
-"[-?@(#)$Id: cp (AT&T Research) 2006-10-31 $\n]"
+"[-?@(#)$Id: cp (AT&T Research) 2006-11-21 $\n]"
 USAGE_LICENSE
 ;
 
@@ -868,7 +868,7 @@
        if (argc <= 0 || error_info.errors)
                error(ERROR_USAGE|4, "%s", optusage(NiL));
        if (!path_resolve)
-               state.flags |= ftwflags();
+               state.flags |= fts_flags();
        file = argv[argc];
        argv[argc] = 0;
        if (s = strrchr(file, '/'))
@@ -878,7 +878,8 @@
                if (!(!*s || *s == '.' && (!*++s || *s == '.' && !*++s)))
                        s = 0;
        }
-       pathcanon(file, 0);
+       if (file != (char*)dot)
+               pathcanon(file, 0);
        if (!(state.directory = !stat(file, &st) && S_ISDIR(st.st_mode)) && 
argc > 1)
                error(ERROR_USAGE|4, "%s", optusage(NiL));
        if (s && !state.directory)
@@ -906,8 +907,21 @@
                while ((ent = fts_read(fts)) && !visit(&state, ent));
                fts_close(fts);
        }
-       else
-               error(ERROR_SYSTEM|2, "%s: error", argv[0]);
+       else if (state.link != pathsetlink)
+               switch (state.op)
+               {
+               case CP:
+                       error(ERROR_SYSTEM|2, "%s: cannot copy", argv[0]);
+                       break;
+               case LN:
+                       error(ERROR_SYSTEM|2, "%s: cannot link", argv[0]);
+                       break;
+               case MV:
+                       error(ERROR_SYSTEM|2, "%s: cannot move", argv[0]);
+                       break;
+               }
+       else if ((*state.link)(*argv, state.path))
+               error(ERROR_SYSTEM|2, "%s: cannot link to %s", *argv, 
state.path);
        free(state.path);
        return error_info.errors != 0;
 }
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/fmt.c 
ksh93_2006_12_04/src/lib/libcmd/fmt.c
--- ksh93_2006_10_31/src/lib/libcmd/fmt.c       2006-11-01 21:16:30.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/fmt.c       2006-11-13 22:54:48.000000000 
+0100
@@ -24,7 +24,7 @@
  */
 
 static const char usage[] =
-"[-?\n@(#)$Id: fmt (AT&T Research) 2005-08-11 $\n]"
+"[-?\n@(#)$Id: fmt (AT&T Research) 2006-11-11 $\n]"
 USAGE_LICENSE
 "[+NAME?fmt - simple text formatter]"
 "[+DESCRIPTION?\bfmt\b reads the input files and left justifies space "
@@ -433,7 +433,24 @@
                                        }
                                        else if (c == '{')
                                        {
-                                               if (cp >= lp || *cp == '[' || 
*cp != '\\' || (lp - cp) > 1 && *(cp + 1) == 'n')
+                                               x = 1;
+                                               for (tp = cp; tp < lp; tp++)
+                                               {
+                                                       if (*tp == '[' || *tp 
== '\n')
+                                                               break;
+                                                       if (*tp == ' ' || *tp 
== '\t' || *tp == '"')
+                                                               continue;
+                                                       if (*tp == '\\' && (lp 
- tp) > 1)
+                                                       {
+                                                               if (*++tp == 
'n')
+                                                                       break;
+                                                               if (*tp == 't' 
|| *tp == '\n')
+                                                                       
continue;
+                                                       }
+                                                       x = 0;
+                                                       break;
+                                               }
+                                               if (x)
                                                {
                                                        if (fp->endbuf > 
(fp->outbuf + fp->indent + 2*INDENT))
                                                                fp->nextdent = 
2*INDENT;
@@ -610,7 +627,7 @@
                        sfclose(fmt.in);
        } while (cp = *argv++);
        outline(&fmt);
-       if (sferror(sfstdout))
+       if (sfsync(sfstdout))
                error(ERROR_system(0), "write error");
        return error_info.errors != 0;
 }
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/getconf.c 
ksh93_2006_12_04/src/lib/libcmd/getconf.c
--- ksh93_2006_10_31/src/lib/libcmd/getconf.c   2006-11-01 21:16:35.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/getconf.c   2006-11-14 22:36:15.000000000 
+0100
@@ -27,7 +27,7 @@
  */
 
 static const char usage[] =
-"[-?\n@(#)$Id: getconf (AT&T Research) 2006-10-11 $\n]"
+"[-?\n@(#)$Id: getconf (AT&T Research) 2006-11-11 $\n]"
 USAGE_LICENSE
 "[+NAME?getconf - get configuration values]"
 "[+DESCRIPTION?\bgetconf\b displays the system configuration value for"
@@ -118,6 +118,12 @@
 #include <cmd.h>
 #include <proc.h>
 
+typedef struct Path_s
+{
+       char*           path;
+       int             len;
+} Path_t;
+
 int
 b_getconf(int argc, char** argv, void* context)
 {
@@ -125,11 +131,16 @@
        register char*          path;
        register char*          value;
        register char*          s;
+       register char*          t;
        char*                   pattern;
        char*                   native;
+       Path_t*                 e;
+       Path_t*                 p;
        int                     flags;
+       int                     n;
        char**                  oargv;
        char                    cmd[PATH_MAX];
+       Path_t                  std[64];
 
        static const char       empty[] = "-";
 
@@ -248,22 +259,87 @@
                                        sfputr(sfstdout, name, ' ');
                                        sfputr(sfstdout, path ? path : empty, ' 
');
                                }
-                               sfputr(sfstdout, *s ? s : "undefined", '\n');
+                               sfputr(sfstdout, s, '\n');
                        }
                } while (*argv && (name = *++argv));
        }
        return error_info.errors != 0;
+
  defer:
-       if (!pathaccess(cmd, astconf("PATH", NiL, NiL), error_info.id, NiL, 
PATH_EXECUTE|PATH_REGULAR) &&
-           !pathaccess(cmd, "/usr/sbin:/sbin", error_info.id, NiL, 
PATH_EXECUTE|PATH_REGULAR))
+
+       /*
+        * defer to the first getconf on $PATH that is also on the standard PATH
+        */
+
+       e = std;
+       s = astconf("PATH", NiL, NiL); 
+       do
+       {
+               for (t = s; *s && *s != ':'; s++);
+               if ((n = s - t) && *t == '/')
+               {
+                       e->path = t;
+                       e->len = n;
+                       e++;
+               }
+               while (*s == ':')
+                       s++;
+       } while (*s && e < &std[elementsof(std)]);
+       if (e < &std[elementsof(std)])
+       {
+               e->len = strlen(e->path = "/usr/sbin");
+               if (++e < &std[elementsof(std)])
+               {
+                       e->len = strlen(e->path = "/sbin");
+                       e++;
+               }
+       }
+       if (s = getenv("PATH"))
+               do
+               {
+                       for (t = s; *s && *s != ':'; s++);
+                       if ((n = s - t) && *t == '/')
+                       {
+                               for (p = std; p < e; p++)
+                                       if (p->len == n && !strncmp(t, p->path, 
n))
+                                       {
+                                               sfsprintf(cmd, sizeof(cmd), 
"%-*.*s/%s", n, n, t, error_info.id);
+                                               if (!access(cmd, X_OK))
+                                                       goto found;
+                                       }
+                       }
+                       while (*s == ':')
+                               s++;
+               } while (*s);
+
+       /*
+        * defer to the first getconf on the standard PATH
+        */
+
+       for (p = std; p < e; p++)
        {
-               if (name)
-                       error(3, "%s: unknown name -- no native getconf(1) to 
defer to", name);
-               else
-                       error(3, "no native getconf(1) to defer to");
-               flags = 2;
+               sfsprintf(cmd, sizeof(cmd), "%-*.*s/%s", p->len, p->len, 
p->path, error_info.id);
+               if (!access(cmd, X_OK))
+                       goto found;
        }
-       else if ((flags = procrun(cmd, oargv)) >= EXIT_NOEXEC)
-               error(ERROR_SYSTEM|2, "%s: exec error [%d]", cmd, flags);
-       return flags;
+
+       /*
+        * out of deferrals
+        */
+
+       if (name)
+               error(4, "%s: unknown name -- no native getconf(1) to defer 
to", name);
+       else
+               error(4, "no native getconf(1) to defer to");
+       return 2;
+
+ found:
+
+       /*
+        * don't blame us for crappy diagnostics
+        */
+
+       if ((n = procrun(cmd, oargv)) >= EXIT_NOEXEC)
+               error(ERROR_SYSTEM|2, "%s: exec error [%d]", cmd, n);
+       return n;
 }
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/Mamfile 
ksh93_2006_12_04/src/lib/libcmd/Mamfile
--- ksh93_2006_10_31/src/lib/libcmd/Mamfile     2006-11-03 03:05:45.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/Mamfile     2006-12-05 23:38:32.000000000 
+0100
@@ -78,6 +78,14 @@
 prev cmd.h implicit
 done basename.c
 make cat.c
+make ${PACKAGE_ast_INCLUDE}/endian.h implicit
+make ${PACKAGE_ast_INCLUDE}/bytesex.h implicit
+make ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
+make ${PACKAGE_ast_INCLUDE}/ast_map.h implicit
+done ${PACKAGE_ast_INCLUDE}/ast_map.h dontcare
+done ${PACKAGE_ast_INCLUDE}/ast_common.h dontcare
+done ${PACKAGE_ast_INCLUDE}/bytesex.h dontcare
+done ${PACKAGE_ast_INCLUDE}/endian.h dontcare
 prev cmd.h implicit
 done cat.c
 make chgrp.c
@@ -94,15 +102,10 @@
 make ${PACKAGE_ast_INCLUDE}/ast_mode.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_mode.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_fs.h implicit
-make error?--?old?ethernet?address?at?wrong?offset implicit
-done error?--?old?ethernet?address?at?wrong?offset dontcare virtual
 done ${PACKAGE_ast_INCLUDE}/ast_fs.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 make ${PACKAGE_ast_INCLUDE}/regex.h implicit
-make ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
-make ${PACKAGE_ast_INCLUDE}/ast_map.h implicit
-done ${PACKAGE_ast_INCLUDE}/ast_map.h dontcare
-done ${PACKAGE_ast_INCLUDE}/ast_common.h dontcare
+prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 make ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 make ${INSTALLROOT}/include/prototyped.h implicit
 done ${INSTALLROOT}/include/prototyped.h dontcare
@@ -120,21 +123,12 @@
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_getopt.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_sys.h implicit
-make ${PACKAGE_ast_INCLUDE}/re_comp.h implicit
-prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
-done ${PACKAGE_ast_INCLUDE}/re_comp.h dontcare
 make ${PACKAGE_ast_INCLUDE}/getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/getopt.h dontcare
-make ${PACKAGE_ast_INCLUDE}/stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/ast_stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
-done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
-done ${PACKAGE_ast_INCLUDE}/ast_stdio.h dontcare
-done ${PACKAGE_ast_INCLUDE}/stdio.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/getopt.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_sys.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_lib.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_lib.h dontcare
@@ -145,6 +139,7 @@
 done ${PACKAGE_ast_INCLUDE}/ls.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/fts.h
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ls.h implicit
 make ${PACKAGE_ast_INCLUDE}/cdt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
@@ -177,7 +172,8 @@
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 done ${PACKAGE_ast_INCLUDE}/vmalloc.h dontcare
 make ${PACKAGE_ast_INCLUDE}/sfio.h implicit
-prev ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 done ${PACKAGE_ast_INCLUDE}/sfio.h dontcare
@@ -236,6 +232,7 @@
 prev cmd.h implicit
 done expr.c
 make fds.c
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 make FEATURE/sockets implicit
 meta FEATURE/sockets features/%>FEATURE/% features/sockets sockets
 make features/sockets
@@ -262,7 +259,12 @@
 make id.c
 make fsg.h implicit
 done fsg.h dontcare virtual
-prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
+make ${PACKAGE_ast_INCLUDE}/stdio.h implicit
+make ${PACKAGE_ast_INCLUDE}/ast_stdio.h implicit
+prev ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
+done ${PACKAGE_ast_INCLUDE}/ast_stdio.h dontcare
+done ${PACKAGE_ast_INCLUDE}/stdio.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
 make FEATURE/ids implicit
 meta FEATURE/ids features/%>FEATURE/% features/ids ids
@@ -376,6 +378,7 @@
 make wclib.c
 make ${PACKAGE_ast_INCLUDE}/wchar.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_wchar.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
 prev ${PACKAGE_ast_INCLUDE}/stdio.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/RELEASE 
ksh93_2006_12_04/src/lib/libcmd/RELEASE
--- ksh93_2006_10_31/src/lib/libcmd/RELEASE     2006-11-02 16:41:03.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/RELEASE     2006-11-27 16:46:55.000000000 
+0100
@@ -1,3 +1,9 @@
+06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro
+06-11-21 cp.c: fix 06-10-31 const dot[] readonly assignment
+06-11-15 cp.c: fix 06-10-31 ln -s enoent bug
+06-11-11 getconf.c: let astconf() handle "undefined" vs. ""
+06-11-11 getconf.c: fix deferred getconf path search
+06-11-11 fmt.c: handle two char { \t \n } in --usage ouput
 06-10-31 global edit to eliminate most non-const static data0
 06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h> 
 06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } 
diff -r -N -u ksh93_2006_10_31/src/lib/libcmd/rm.c 
ksh93_2006_12_04/src/lib/libcmd/rm.c
--- ksh93_2006_10_31/src/lib/libcmd/rm.c        2006-11-01 22:55:17.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libcmd/rm.c        2006-11-21 10:36:33.000000000 
+0100
@@ -27,7 +27,7 @@
  */
 
 static const char usage[] =
-"[-?\n@(#)$Id: rm (AT&T Research) 2006-10-31 $\n]"
+"[-?\n@(#)$Id: rm (AT&T Research) 2006-11-21 $\n]"
 USAGE_LICENSE
 "[+NAME?rm - remove files]"
 "[+DESCRIPTION?\brm\b removes the named \afile\a arguments. By default it"
@@ -407,7 +407,7 @@
                fts_close(fts);
        }
        else if (!state.force)
-               error(ERROR_SYSTEM|2, "%s: error", argv[0]);
+               error(ERROR_SYSTEM|2, "%s: cannot remove", argv[0]);
        if (set3d)
                fs3d(set3d);
        return error_info.errors != 0;
diff -r -N -u ksh93_2006_10_31/src/lib/libdll/Mamfile 
ksh93_2006_12_04/src/lib/libdll/Mamfile
--- ksh93_2006_10_31/src/lib/libdll/Mamfile     2006-11-03 03:05:49.000000000 
+0100
+++ ksh93_2006_12_04/src/lib/libdll/Mamfile     2006-12-05 23:38:33.000000000 
+0100
@@ -82,6 +82,11 @@
 make ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_map.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_map.h dontcare
+make ${PACKAGE_ast_INCLUDE}/endian.h implicit
+make ${PACKAGE_ast_INCLUDE}/bytesex.h implicit
+prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
+done ${PACKAGE_ast_INCLUDE}/bytesex.h dontcare
+done ${PACKAGE_ast_INCLUDE}/endian.h dontcare
 done ${PACKAGE_ast_INCLUDE}/ast_common.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 make ${PACKAGE_ast_INCLUDE}/regex.h implicit
@@ -98,29 +103,18 @@
 done ${PACKAGE_ast_INCLUDE}/ast_limits.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_fcntl.h implicit
 make ${PACKAGE_ast_INCLUDE}/ast_fs.h implicit
-make error?--?old?ethernet?address?at?wrong?offset implicit
-done error?--?old?ethernet?address?at?wrong?offset dontcare virtual
 done ${PACKAGE_ast_INCLUDE}/ast_fs.h dontcare
 done ${PACKAGE_ast_INCLUDE}/ast_fcntl.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_getopt.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_sys.h implicit
-make ${PACKAGE_ast_INCLUDE}/re_comp.h implicit
-prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
-done ${PACKAGE_ast_INCLUDE}/re_comp.h dontcare
 make ${PACKAGE_ast_INCLUDE}/getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_getopt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/getopt.h dontcare
-make ${PACKAGE_ast_INCLUDE}/stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/ast_stdio.h implicit
-make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
-done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
-done ${PACKAGE_ast_INCLUDE}/ast_stdio.h dontcare
-done ${PACKAGE_ast_INCLUDE}/stdio.h dontcare
-prev ${PACKAGE_ast_INCLUDE}/getopt.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_sys.h dontcare
 make ${PACKAGE_ast_INCLUDE}/ast_lib.h implicit
 done ${PACKAGE_ast_INCLUDE}/ast_lib.h dontcare
@@ -129,7 +123,8 @@
 done ${PACKAGE_ast_INCLUDE}/ast_std.h dontcare
 done ${PACKAGE_ast_INCLUDE}/vmalloc.h dontcare
 make ${PACKAGE_ast_INCLUDE}/sfio.h implicit
-prev ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+make ${PACKAGE_ast_INCLUDE}/sfio_s.h implicit
+done ${PACKAGE_ast_INCLUDE}/sfio_s.h dontcare
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit
 done ${PACKAGE_ast_INCLUDE}/sfio.h dontcare
@@ -150,8 +145,9 @@
 make features/dll
 done features/dll
 prev dll.req
+bind -ldl dontcare
 bind -last
-exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libast} ${mam_libast}  : run features/dll
+exec - iffe -v -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS}   ${LDFLAGS} '  ref 
${mam_cc_L+-L.} ${mam_cc_L+-L${INSTALLROOT}/lib} -I${PACKAGE_ast_INCLUDE} 
-I${INSTALLROOT}/include ${mam_libdl} ${mam_libast} ${mam_libast}  : run 
features/dll
 done FEATURE/dll generated
 exec - cmp 2>/dev/null -s FEATURE/dll dlldefs.h || { rm -f dlldefs.h; silent 
test -d . || mkdir .; cp FEATURE/dll dlldefs.h; }
 done dlldefs.h generated
@@ -183,8 +179,8 @@
 done dllplug.o generated
 make dllnext.o
 make dllnext.c
-make link.h implicit
-done link.h dontcare virtual
+make rld_interface.h implicit
+done rld_interface.h dontcare virtual
 prev dlldefs.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast.h implicit
 done dllnext.c
@@ -216,6 +212,7 @@
 prev ${PACKAGE_ast_INCLUDE}/prototyped.h implicit
 done ${PACKAGE_ast_INCLUDE}/fts.h
 prev ${PACKAGE_ast_INCLUDE}/error.h implicit
+prev ${PACKAGE_ast_INCLUDE}/endian.h implicit
 make ${PACKAGE_ast_INCLUDE}/cdt.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_common.h implicit
 prev ${PACKAGE_ast_INCLUDE}/ast_std.h implicit

Reply via email to