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