[ksh93-integration-discuss] Re: "getconf" and standard selection via |__xpg6|/|__xpg4| ...
Felix Schulte
felix.schulte at gmail.com
Sun Dec 10 01:05:06 PST 2006
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[@]: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
@@ -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 [...]
+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 (?%[D.][E.][L.][Q.][oc]...)
05-05-21 regex: state.fold[] is now locale specific -- doh
-05-05-19 regex: add REX_NEST (?%lt;>[]""...) %(...) nested match
+05-05-19 regex: add REX_NEST (?%\\()<>[]""...) %(...) nested match
05-05-15 recfmt.h: add recstr() reclen() fmtrec()
05-05-13 optget.c: allow boolean options to take numeric values
05-05-12 recfmt.c: add to recfmt.h, adjust Recfmt_t encodings
@@ -2973,7 +2993,7 @@
95-01-01 add this RELEASE file
fix strperm() to properly handle "644 file"
fix tokline() to return last ' ' terminated line in string
- fix tokscan() to properly handle 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[] readonly assignment
+06-11-15 cp.c: fix 06-10-31 ln -s enoent bug
+06-11-11 getconf.c: let astconf() handle "undefined" vs. ""
+06-11-11 getconf.c: fix deferred getconf path search
+06-11-11 fmt.c: handle two char { \t } in --usage ouput
06-10-31 global edit to eliminate most non-const static data0
06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h>
06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE }
@@ -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 "${foo[@]:1}}" expands a null argument (instead of
+ no argument), when foo[0] is not empty has been fixed.
+06-11-16 The discipline functions have been modified to allow each subscript
+ to act independently. Currently the discipline function will not
+ be called when called from a discipline function of the same variable.
+06-11-14 A bug which could cause a core dump if a file descriptor for
+ an internal file was closed from with a subshell has been fixed.
06-10-30 The redirections <# pattern, and <## pattern have been added.
Both seek forward to the beginning of the next line that contains
the pattern. The <## form copies the skipped portion to standard
@@ -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 "${foo[@]:1}}" expands a null argument (instead of
+ no argument), when foo[0] is not empty has been fixed.
+06-11-16 The discipline functions have been modified to allow each subscript
+ to act independently. Currently the discipline function will not
+ be called when called from a discipline function of the same variable.
+06-11-14 A bug which could cause a core dump if a file descriptor for
+ an internal file was closed from with a subshell has been fixed.
06-10-30 The redirections <# pattern, and <## pattern have been added.
Both seek forward to the beginning of the next line that contains
the pattern. The <## form copies the skipped portion to standard
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'
[[ ! ${foo[@]} ]] || err_exit 'array not empty'
[[ ! ${!foo[@]} ]] || err_exit 'array names not empty'
+unset foo
+foo=bar
+set -- "${foo[@]:1}"
+(( $# == 0 )) || err_exit '${foo[@]: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.x[@]}') == '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
+[[ ${x[@]} == '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_