Hello community,
here is the log from the commit of package ksh
checked in at Mon Nov 3 12:19:50 CET 2008.
--------
--- ksh/ksh.changes 2008-10-14 12:19:45.000000000 +0200
+++ /mounts/work_src_done/STABLE/ksh/ksh.changes 2008-10-31 11:07:16.595260000 +0100
@@ -1,0 +2,6 @@
+Fri Oct 31 11:07:06 CET 2008 - werner@suse.de
+
+- Switch to 2008-10-31 beta test of ksh93t to fix core dump
+ in scoping/initialization of variables and arrays.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
ast-ksh.2008-10-10.tar.bz2
INIT.2008-10-10.tar.bz2
New:
----
ast-ksh.2008-10-31.tar.bz2
INIT.2008-10-31.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ksh.spec ++++++
--- /var/tmp/diff_new_pack.G30553/_old 2008-11-03 12:18:22.000000000 +0100
+++ /var/tmp/diff_new_pack.G30553/_new 2008-11-03 12:18:22.000000000 +0100
@@ -29,11 +29,11 @@
PreReq: /bin/ln /bin/rm /etc/bash.bashrc /bin/true
AutoReqProv: on
Version: 93t
-Release: 4
+Release: 5
Summary: Korn Shell
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source: INIT.2008-10-10.tar.bz2
-Source1: ast-ksh.2008-10-10.tar.bz2
+Source: INIT.2008-10-31.tar.bz2
+Source1: ast-ksh.2008-10-31.tar.bz2
Source2: ast-open-locale.2008-07-25.tar.bz2
Source20: Agreement
Source21: Warning
@@ -371,6 +371,9 @@
%{_includedir}/ast/
%changelog
+* Fri Oct 31 2008 werner@suse.de
+- Switch to 2008-10-31 beta test of ksh93t to fix core dump
+ in scoping/initialization of variables and arrays.
* Tue Oct 14 2008 werner@suse.de
- Switch to 2008-10-10 beta test of ksh93t to fix multibyte handle
in the read builtin and fix a bug in array type handle.
++++++ ast-ksh.2008-10-10.tar.bz2 -> ast-ksh.2008-10-31.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/ast-ksh.html new/lib/package/ast-ksh.html
--- old/lib/package/ast-ksh.html 2008-10-14 06:52:06.000000000 +0200
+++ new/lib/package/ast-ksh.html 2008-10-30 23:20:12.000000000 +0100
@@ -193,7 +193,12 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="ksh93 changes">ksh93 changes</A></H3></FONT></FONT></CENTER>
<PRE>
-08-10-10 --- Release ksh93t ---
+08-10-31 --- Release ksh93t ---
+08-10-31 Variable scoping/initialization bugs that could dump core were fixed.
+08-10-24 The lexer now accepts all RE characters for patterns prefixed
+ with a ksh ~(...) option expression.
+08-10-24 For ${var/pat/sub} in sub expands to the text matched by pat.
+08-10-18 A bug in array scoping that could dump core has been fixed.
08-10-10 read -n and -N fixed to count characters in multibyte locales.
08-10-10 A bug that mishandled _.array[] type references has been fixed.
08-10-09 ${.sh.version} now contains a catenation of the following (after
@@ -2084,6 +2089,7 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libast changes">libast changes</A></H3></FONT></FONT></CENTER>
<PRE>
+08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization
08-09-10 misc/magic.c: handle old vcodex() indices
08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead
08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd
@@ -3606,6 +3612,7 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="libcmd changes">libcmd changes</A></H3></FONT></FONT></CENTER>
<PRE>
+08-10-15 rm.c: handle 'rm -f x x' => exit 0
08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead
08-06-17 shcmd.h: move to libast
08-04-24 uniq.c: add optget() 'n' option for -1 => -f1
@@ -3930,7 +3937,7 @@
<TR>
<TD align=left></TD>
<TD align=center></TD>
-<TD align=right>October 14, 2008</TD>
+<TD align=right>October 30, 2008</TD>
</TR>
</TABLE>
<P>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/ast-ksh.README new/lib/package/ast-ksh.README
--- old/lib/package/ast-ksh.README 2008-10-14 06:52:05.000000000 +0200
+++ new/lib/package/ast-ksh.README 2008-10-30 23:20:12.000000000 +0100
@@ -92,7 +92,12 @@
:::::::: ksh93 ::::::::
-08-10-10 --- Release ksh93t ---
+08-10-31 --- Release ksh93t ---
+08-10-31 Variable scoping/initialization bugs that could dump core were fixed.
+08-10-24 The lexer now accepts all RE characters for patterns prefixed
+ with a ksh ~(...) option expression.
+08-10-24 For ${var/pat/sub} \0 in sub expands to the text matched by pat.
+08-10-18 A bug in array scoping that could dump core has been fixed.
08-10-10 read -n and -N fixed to count characters in multibyte locales.
08-10-10 A bug that mishandled _.array[] type references has been fixed.
08-10-09 ${.sh.version} now contains a catenation of the following (after
@@ -1980,6 +1985,7 @@
:::::::: libast ::::::::
+08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization
08-09-10 misc/magic.c: handle old vcodex() indices
08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead
08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd
@@ -3499,6 +3505,7 @@
:::::::: libcmd ::::::::
+08-10-15 rm.c: handle 'rm -f x x' => exit 0
08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead
08-06-17 shcmd.h: move to libast
08-04-24 uniq.c: add optget() 'n' option for -1 => -f1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/ast-ksh.ver new/lib/package/ast-ksh.ver
--- old/lib/package/ast-ksh.ver 2008-10-14 06:52:04.000000000 +0200
+++ new/lib/package/ast-ksh.ver 2008-10-30 23:20:11.000000000 +0100
@@ -1 +1 @@
-ast-ksh 2008-10-10 2008-10-10 1
+ast-ksh 2008-10-31 2008-10-31 1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/bltins/enum.c new/src/cmd/ksh93/bltins/enum.c
--- old/src/cmd/ksh93/bltins/enum.c 2008-09-15 17:00:16.000000000 +0200
+++ new/src/cmd/ksh93/bltins/enum.c 2008-10-24 17:01:14.000000000 +0200
@@ -63,6 +63,13 @@
"[A?Associative array. Each \aname\a will converted to an associate "
"array of type \b\f?\f\b. If a variable already exists, the current "
"value will become subscript \b0\b.]"
+"[h]:[string?Used within a type definition to provide a help string "
+ "for variable \aname\a. Otherwise, it is ignored.]"
+"[S?Used with a type definition to indicate that the variable is shared by "
+ "each instance of the type. When used inside a function defined "
+ "with the \bfunction\b reserved word, the specified variables "
+ "will have function static scope. Otherwise, the variable is "
+ "unset prior to processing the assignment list.]"
#if 0
"[p?Causes the output to be in a form of \b\f?\f\b commands that can be "
"used as input to the shell to recreate the current type of "
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/bltins/print.c new/src/cmd/ksh93/bltins/print.c
--- old/src/cmd/ksh93/bltins/print.c 2008-10-08 21:37:34.000000000 +0200
+++ new/src/cmd/ksh93/bltins/print.c 2008-10-14 21:32:20.000000000 +0200
@@ -82,24 +82,6 @@
static char* nullarg[] = { 0, 0 };
-/*
- * Need to handle write failures to avoid locking output pool
- */
-static int outexceptf(Sfio_t* iop, int mode, void* data, Sfdisc_t* dp)
-{
- if(mode==SF_DPOP || mode==SF_FINAL)
- free((void*)dp);
- else if(mode==SF_WRITE && (errno!= EINTR || sh.trapnote))
- {
- int save = errno;
- sfpurge(iop);
- sfpool(iop,NIL(Sfio_t*),SF_WRITE);
- errno = save;
- errormsg(SH_DICT,ERROR_system(1),e_badwrite,sffileno(iop));
- }
- return(0);
-}
-
#if !SHOPT_ECHOPRINT
int B_echo(int argc, char *argv[],void *extra)
{
@@ -282,20 +264,11 @@
}
if(!(outfile=shp->sftable[fd]))
{
- Sfdisc_t *dp;
sh_onstate(SH_NOTRACK);
n = SF_WRITE|((n&IOREAD)?SF_READ:0);
shp->sftable[fd] = outfile = sfnew(NIL(Sfio_t*),shp->outbuff,IOBSIZE,fd,n);
sh_offstate(SH_NOTRACK);
sfpool(outfile,shp->outpool,SF_WRITE);
- if(dp = new_of(Sfdisc_t,0))
- {
- dp->exceptf = outexceptf;
- dp->seekf = 0;
- dp->writef = 0;
- dp->readf = 0;
- sfdisc(outfile,dp);
- }
}
/* turn off share to guarantee atomic writes for printf */
n = sfset(outfile,SF_SHARE|SF_PUBLIC,0);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/data/lexstates.c new/src/cmd/ksh93/data/lexstates.c
--- old/src/cmd/ksh93/data/lexstates.c 2008-06-09 21:44:48.000000000 +0200
+++ new/src/cmd/ksh93/data/lexstates.c 2008-10-24 16:40:33.000000000 +0200
@@ -361,7 +361,7 @@
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, S_QUOTE,0, S_DOL, 0, S_PAT, S_LIT,
S_PAT, S_PAT, S_PAT, 0, S_COM, 0, S_DOT, S_SLASH,
- 0, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
+ S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG, S_DIG,
S_DIG, S_DIG, S_COLON,0, 0, S_EQ, 0, S_PAT,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/include/version.h new/src/cmd/ksh93/include/version.h
--- old/src/cmd/ksh93/include/version.h 2008-10-12 05:54:29.000000000 +0200
+++ new/src/cmd/ksh93/include/version.h 2008-10-30 22:39:38.000000000 +0100
@@ -17,4 +17,4 @@
* David Korn *
* *
***********************************************************************/
-#define SH_RELEASE "93t 2008-10-10"
+#define SH_RELEASE "93t 2008-10-31"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/Mamfile new/src/cmd/ksh93/Mamfile
--- old/src/cmd/ksh93/Mamfile 2008-10-14 06:52:07.000000000 +0200
+++ new/src/cmd/ksh93/Mamfile 2008-10-30 23:20:12.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/RELEASE new/src/cmd/ksh93/RELEASE
--- old/src/cmd/ksh93/RELEASE 2008-10-13 08:01:21.000000000 +0200
+++ new/src/cmd/ksh93/RELEASE 2008-10-30 22:39:30.000000000 +0100
@@ -1,4 +1,9 @@
-08-10-10 --- Release ksh93t ---
+08-10-31 --- Release ksh93t ---
+08-10-31 Variable scoping/initialization bugs that could dump core were fixed.
+08-10-24 The lexer now accepts all RE characters for patterns prefixed
+ with a ksh ~(...) option expression.
+08-10-24 For ${var/pat/sub} \0 in sub expands to the text matched by pat.
+08-10-18 A bug in array scoping that could dump core has been fixed.
08-10-10 read -n and -N fixed to count characters in multibyte locales.
08-10-10 A bug that mishandled _.array[] type references has been fixed.
08-10-09 ${.sh.version} now contains a catenation of the following (after
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/array.c new/src/cmd/ksh93/sh/array.c
--- old/src/cmd/ksh93/sh/array.c 2008-10-13 17:56:27.000000000 +0200
+++ new/src/cmd/ksh93/sh/array.c 2008-10-17 21:37:18.000000000 +0200
@@ -548,8 +548,13 @@
if(nv_isarray(np))
np->nvalue.up = up;
nv_putv(np,string,flags,&ap->hdr);
- if(string && !is_associative(ap))
- array_clrbit(aq->bits,aq->cur,ARRAY_NOFREE);
+ if(!is_associative(ap))
+ {
+ if(string)
+ array_clrbit(aq->bits,aq->cur,ARRAY_NOFREE);
+ else if(mp==np)
+ aq->val[aq->cur].cp = 0;
+ }
#if SHOPT_TYPEDEF
if(string && ap->hdr.type && nv_isvtree(np))
nv_arraysettype(np,ap->hdr.type,nv_getsub(np),0);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/init.c new/src/cmd/ksh93/sh/init.c
--- old/src/cmd/ksh93/sh/init.c 2008-10-09 05:26:51.000000000 +0200
+++ new/src/cmd/ksh93/sh/init.c 2008-10-24 21:56:48.000000000 +0200
@@ -78,6 +78,13 @@
#endif
#define RANDMASK 0x7fff
+
+#ifndef ARG_MAX
+# define ARG_MAX (1*1024*1024)
+#endif
+#ifndef CHILD_MAX
+# define CHILD_MAX (1*1024)
+#endif
#ifndef CLK_TCK
# define CLK_TCK 60
#endif /* CLK_TCK */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/io.c new/src/cmd/ksh93/sh/io.c
--- old/src/cmd/ksh93/sh/io.c 2008-10-13 21:32:46.000000000 +0200
+++ new/src/cmd/ksh93/sh/io.c 2008-10-16 20:21:44.000000000 +0200
@@ -427,20 +427,35 @@
NOT_USED(handle);
if(type==SF_DPOP || type==SF_FINAL)
free((void*)handle);
- else if(type==SF_WRITE && ((ssize_t)data)<0 && errno!=EINTR && sffileno(iop)!=2)
- {
- if(!active)
+ else if(type==SF_WRITE && (*(ssize_t*)data)<0 && sffileno(iop)!=2)
+ switch (errno)
{
- int mode = ((struct checkpt*)sh.jmplist)->mode;
- ((struct checkpt*)sh.jmplist)->mode = 0;
- active = 1;
- errormsg(SH_DICT,ERROR_system(1),e_badwrite,sffileno(iop));
- active = 0;
- ((struct checkpt*)sh.jmplist)->mode = mode;
- sh_exit(1);
+ case EINTR:
+ case EPIPE:
+#ifdef ECONNRESET
+ case ECONNRESET:
+#endif
+#ifdef ESHUTDOWN
+ case ESHUTDOWN:
+#endif
+ break;
+ default:
+ if(!active)
+ {
+ int mode = ((struct checkpt*)sh.jmplist)->mode;
+ int save = errno;
+ active = 1;
+ ((struct checkpt*)sh.jmplist)->mode = 0;
+ sfpurge(iop);
+ sfpool(iop,NIL(Sfio_t*),SF_WRITE);
+ errno = save;
+ errormsg(SH_DICT,ERROR_system(1),e_badwrite,sffileno(iop));
+ active = 0;
+ ((struct checkpt*)sh.jmplist)->mode = mode;
+ sh_exit(1);
+ }
+ return(-1);
}
- return(-1);
- }
return(0);
}
@@ -1182,9 +1197,11 @@
if((off = file_offset(shp,fn,fname))<0)
goto fail;
if(sp)
- r=sfseek(sp, off, SEEK_SET);
+ off=sfseek(sp, off, SEEK_SET);
else
- r=lseek(fn, off, SEEK_SET);
+ off=lseek(fn, off, SEEK_SET);
+ if(off<0)
+ r = -1;
}
else
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/jobs.c new/src/cmd/ksh93/sh/jobs.c
--- old/src/cmd/ksh93/sh/jobs.c 2008-09-23 06:49:19.000000000 +0200
+++ new/src/cmd/ksh93/sh/jobs.c 2008-10-27 21:55:28.000000000 +0100
@@ -99,7 +99,6 @@
{
int count;
struct jobsave *list;
- struct back_save*free;
};
#define BYTE(n) (((n)+CHAR_BIT-1)/CHAR_BIT)
@@ -213,36 +212,15 @@
static int wcontinued = WCONTINUED;
if (vmbusy())
{
- write(2, "ksh: vmbusy -- should not happen\n", 12);
+ errormsg(SH_DICT,ERROR_warn(0),"vmbusy() inside job_reap() -- should not happen");
if (getenv("_AST_KSH_VMBUSY_ABORT"))
- abort();
+ abort();
}
#ifdef DEBUG
if(sfprintf(sfstderr,"ksh: job line %4d: reap pid=%d critical=%d signal=%d\n",__LINE__,getpid(),job.in_critical,sig) <=0)
write(2,"waitsafe\n",9);
sfsync(sfstderr);
#endif /* DEBUG */
- if(bp=bck.free)
- {
- struct jobsave *jpnext;
- struct back_save *bpfree;
-
- /*
- * dispose old job_subrestore() lists
- */
-
- bck.free = 0;
- do
- {
- for(jp=bp->list; jp; jp=jpnext)
- {
- jpnext = jp->next;
- free(jp);
- }
- bpfree = bp->free;
- free(bp);
- } while(bp=bpfree);
- }
job.savesig = 0;
if(sig)
flags = WNOHANG|WUNTRACED|wcontinued;
@@ -1543,7 +1521,7 @@
for(pw=pwtop; pw; pw=pw->p_nxtproc)
{
/* save the exit status for background jobs */
- if(pw->p_flag&P_EXITSAVE)
+ if((pw->p_flag&P_EXITSAVE) || pw->p_pid==sh.spid)
{
struct jobsave *jp;
/* save status for future wait */
@@ -1723,7 +1701,19 @@
register struct jobsave *jp;
register struct back_save *bp = (struct back_save*)ptr;
register struct process *pw, *px, *pwnext;
+ struct jobsave *jpnext;
job_lock();
+ for(jp=bck.list; jp; jp=jpnext)
+ {
+ jpnext = jp->next;
+ if(jp->pid==sh.spid)
+ {
+ jp->next = bp->list;
+ bp->list = jp;
+ }
+ else
+ job_chksave(jp->pid);
+ }
for(pw=job.pwlist; pw; pw=pwnext)
{
pwnext = pw->p_nxtjob;
@@ -1738,16 +1728,8 @@
* queue up old lists for disposal by job_reap()
*/
- jp = bck.list;
- bp->free = bck.free;
bck = *bp;
- if(job.pwlist)
- {
- bck.free = bp;
- bp->list = jp;
- }
- else
- free((void*)bp);
+ free((void*)bp);
job_unlock();
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/lex.c new/src/cmd/ksh93/sh/lex.c
--- old/src/cmd/ksh93/sh/lex.c 2008-09-20 00:17:13.000000000 +0200
+++ new/src/cmd/ksh93/sh/lex.c 2008-10-28 21:16:44.000000000 +0100
@@ -480,7 +480,8 @@
/* implicit RPAREN for =~ test operator */
if(inlevel+1==lp->lexd.level)
{
- fcseek(-1);
+ if(lp->lex.intest)
+ fcseek(-1);
c = RPAREN;
goto do_pop;
}
@@ -654,7 +655,11 @@
continue;
fcgetc(n);
if(n>0)
+ {
+ if(c=='~' && n==LPAREN && lp->lex.incase)
+ lp->lex.incase = TEST_RE;
fcseek(-1);
+ }
if(n==LPAREN)
goto epat;
wordflags = ARG_MAC;
@@ -997,6 +1002,11 @@
do_pop:
if(lp->lexd.level <= inlevel)
break;
+ if(lp->lexd.level==inlevel+1 && lp->lex.incase>=TEST_RE && !lp->lex.intest)
+ {
+ fcseek(-1);
+ goto breakloop;
+ }
n = endchar(lp);
if(c==RBRACT && !(n==RBRACT || n==RPAREN))
continue;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/name.c new/src/cmd/ksh93/sh/name.c
--- old/src/cmd/ksh93/sh/name.c 2008-10-06 22:29:19.000000000 +0200
+++ new/src/cmd/ksh93/sh/name.c 2008-10-30 17:09:30.000000000 +0100
@@ -388,7 +388,9 @@
if(tp->tre.tretyp!=TLST && tp->com.comarg && !tp->com.comset && !((mp=tp->com.comnamp) && nv_isattr(mp,BLT_DCL)))
{
int argc;
+ Dt_t *last_root = shp->last_root;
char **argv = sh_argbuild(shp,&argc,&tp->com,0);
+ shp->last_root = last_root;
#if SHOPT_TYPEDEF
if(shp->mktype && shp->dot_depth==0 && np==((struct sh_type*)shp->mktype)->nodes[0])
{
@@ -2905,20 +2907,14 @@
errormsg(SH_DICT,ERROR_exit(1),e_badref,nv_name(np));
if(!hp)
hp = shp->var_tree;
- if(!(nr = nq = nv_open(cp, hp, flags|NV_NOREF|NV_NOSCOPE|NV_NOADD|NV_NOFAIL)))
+ if(!(nr = nq = nv_open(cp, hp, flags|NV_NOSCOPE|NV_NOADD|NV_NOFAIL)))
hp = shp->var_base;
else if(shp->last_root)
hp = shp->last_root;
if(nq && ep && nv_isarray(nq) && !nv_getsub(nq))
nv_endsubscript(nq,ep-1,NV_ADD);
if(!nr)
- nr= nq = nv_open(cp, hp, flags|NV_NOREF);
- while(nv_isref(nr))
- {
- shp->last_table = nv_reftable(nr);
- hp = nv_reftree(nr);
- nr = nv_refnode(nr);
- }
+ nr= nq = nv_open(cp, hp, flags);
if(nr==np)
{
if(shp->namespace && nv_dict(shp->namespace)==hp)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/nvtype.c new/src/cmd/ksh93/sh/nvtype.c
--- old/src/cmd/ksh93/sh/nvtype.c 2008-10-08 19:45:36.000000000 +0200
+++ new/src/cmd/ksh93/sh/nvtype.c 2008-10-29 22:19:07.000000000 +0100
@@ -238,7 +238,7 @@
np->nvalue.cp = pp->ptype->data + (mp->nvalue.cp-pp->ptype->data);
memcpy((char*)np->nvalue.cp,mp->nvalue.cp,dsize);
}
- else if(mp->nvalue.cp)
+ else if(!nv_isarray(mp) && mp->nvalue.cp)
{
np->nvalue.cp = mp->nvalue.cp;
nv_onattr(np,NV_NOFREE);
@@ -1161,12 +1161,7 @@
nv_onattr(mp,NV_NOFREE|NV_BINARY|NV_RAW);
}
else if(!mp->nvalue.cp)
- {
- fp = mp->nvfun;
- mp->nvfun = 0;
- nv_putval(mp, "",0);
- mp->nvfun = fp;
- }
+ mp->nvalue.cp = Empty;
nv_disc(mp, &pp->fun, NV_LAST);
if(nd>0)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/path.c new/src/cmd/ksh93/sh/path.c
--- old/src/cmd/ksh93/sh/path.c 2008-10-09 05:26:19.000000000 +0200
+++ new/src/cmd/ksh93/sh/path.c 2008-10-24 19:15:59.000000000 +0200
@@ -1076,6 +1076,7 @@
return(pid);
}
while(_sh_fork(pid,0,(int*)0) < 0);
+ ((struct checkpt*)shp->jmplist)->mode = SH_JMPEXIT;
#else
return(-1);
#endif
@@ -1193,14 +1194,15 @@
* The following code is just for compatibility
*/
if((n=open(path,O_RDONLY,0)) < 0)
- errormsg(SH_DICT,ERROR_system(1),e_open,path);
+ errormsg(SH_DICT,ERROR_system(ERROR_NOEXEC),e_exec,path);
if(savet)
*argv++ = savet;
openok:
shp->infd = n;
}
#else
- shp->infd = sh_chkopen(path);
+ if((shp->infd = sh_open(path,O_RDONLY,0)) < 0)
+ errormsg(SH_DICT,ERROR_system(ERROR_NOEXEC),e_exec,path);
#endif
shp->infd = sh_iomovefd(shp->infd);
#if SHOPT_ACCT
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh/xec.c new/src/cmd/ksh93/sh/xec.c
--- old/src/cmd/ksh93/sh/xec.c 2008-10-01 22:13:01.000000000 +0200
+++ new/src/cmd/ksh93/sh/xec.c 2008-10-29 15:02:53.000000000 +0100
@@ -610,6 +610,7 @@
L_ARGNOD->nvalue.nrp = nr;
L_ARGNOD->nvflag = NV_REF|NV_NOFREE;
L_ARGNOD->nvfun = 0;
+ L_ARGNOD->nvenv = 0;
if((ap=nv_arrayptr(nq)) && (cp = nv_getsub(nq)) && (cp = strdup(cp)))
{
nv_putval(SH_SUBSCRNOD,nr->sub=cp,NV_NOFREE);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/sh.1 new/src/cmd/ksh93/sh.1
--- old/src/cmd/ksh93/sh.1 2008-09-17 16:15:30.000000000 +0200
+++ new/src/cmd/ksh93/sh.1 2008-10-17 16:53:26.000000000 +0200
@@ -2698,26 +2698,6 @@
.I Definitions\^
above)
has a special meaning to the shell
-.TP
-.B i
-Treat the match as case insensitive.
-.TP
-.B g
-File the longest match (greedy). This is the default.
-.PD
-.RE
-If both \f2options\^\fP and \f3:\fP\f2pattern-list\^\fP
-are specified, then the options apply only to \f2pattern-list\^\fP.
-Otherwise, these options remain in effect until they are disabled
-by a subsequent \f3\(ap(\fP\f2...\^\fP\f3)\fP or at the end of
-the sub-pattern containing \f3\(ap(\fP\f2...\^\fP\f3)\fP.
-.SS Quoting.
-Each of the
-.I metacharacters\^
-listed earlier (see
-.I Definitions\^
-above)
-has a special meaning to the shell
and causes termination of a word unless quoted.
A character may be
.I quoted\^
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/bracket.sh new/src/cmd/ksh93/tests/bracket.sh
--- old/src/cmd/ksh93/tests/bracket.sh 2008-09-18 16:29:36.000000000 +0200
+++ new/src/cmd/ksh93/tests/bracket.sh 2008-10-28 21:19:16.000000000 +0100
@@ -240,4 +240,6 @@
i=hell
[[ hell0 == $i[0] ]] || err_exit 'pattern $i[0] interpreded as array ref'
test '(' = ')' && err_exit '"test ( = )" should not be true'
+[[ $($SHELL -c 'case F in ~(Eilr)[a-z0-9#]) print ok;;esac' 2> /dev/null) == ok ]] || err_exit '~(Eilr) not working in case command'
+[[ $($SHELL -c "case Q in ~(Fi)q | \$'\E') print ok;;esac" 2> /dev/null) == ok ]] || err_exit '~(Fi)q | \E not working in case command'
exit $((Errors))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/cubetype.sh new/src/cmd/ksh93/tests/cubetype.sh
--- old/src/cmd/ksh93/tests/cubetype.sh 2008-09-09 22:21:30.000000000 +0200
+++ new/src/cmd/ksh93/tests/cubetype.sh 2008-10-17 07:38:57.000000000 +0200
@@ -54,36 +54,51 @@
for ((i=0; i < n; i++))
do
Box_t b=(name=box1)
-[[ ${b.x} == 3 ]] || err_exit '${b.x} is not 3'
-(( b.len == 5 )) || err_exit 'b.len is not 5'
-[[ ${b.name} == box1 ]] || err_exit '${b.name} is not box1'
-(( b.count == 1 )) || err_exit 'b.count is not 1'
+exp=3 got=${b.x}
+[[ "$got" == "$exp" ]] || err_exit "\${b.x} incorrect for iteration $i -- expected $exp, got '$got'"
+exp=5 got=$(( b.len ))
+(( got == exp )) || err_exit "b.len incorrect for iteration $i -- expected $exp, got '$got = sqrt(${b.x}*${b.x}+${b.y}*${b.y})'"
+exp=5 got=${b.len}
+[[ "$got" == "$exp" ]] || err_exit "\${b.len} incorrect for iteration $i -- expected $exp, got '$got = sqrt(${b.x}*${b.x}+${b.y}*${b.y})'"
+exp=box1 got=${b.name}
+[[ "$got" == "${exp}" ]] || err_exit "\${b.name} incorrect for iteration $i -- expected $exp, got '$got'"
+exp=2 got=$(( b.count ))
+(( got == exp )) || err_exit "b.count incorrect for iteration $i -- expected $exp, got '$got'"
+exp=2 got=${b.count}
+[[ "$got" == "$exp" ]] || err_exit "\${b.ccount} incorrect for iteration $i -- expected $exp, got '$got'"
b.colors[wall]=green
b.colors[door]=white
-[[ ${#b.colors[@]} == 3 ]] || err_exit 'b.color should have 3 colors'
+exp=3 got=${#b.colors[@]}
+[[ "$got" == "$exp" ]] || err_exit "\${#b.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
b.comvar.bottom=11
b.items[1]=bam
b.items[2]=extra
-[[ ${#b.items[@]} == 3 ]] || err_exit 'b.items should have 3 items'
+exp=3 got=${#b.items[@]}
+[[ ${#b.items[@]} == 3 ]] || err_exit "\${#b.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
Box_t bb=b
bb.colors[desk]=orange
-[[ ${#bb.colors[@]} == 4 ]] || err_exit 'bb.colors should have 4 colors'
+exp=4 got=${#b.colors[@]}
+[[ ${#bb.colors[@]} == 4 ]] || err_exit "\${#bb.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
unset b.colors
-[[ ${#b.colors[@]} == 2 ]] || err_exit 'b.colors should have 2 colors'
+exp=2 got=${#b.colors[@]}
+[[ ${#b.colors[@]} == 2 ]] || err_exit "\${#b.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
unset b.items
-[[ ${#b.items[@]} == 2 ]] || err_exit 'b.items should have 2 items'
+exp=2 got=${#b.items[@]}
+[[ ${#b.items[@]} == 2 ]] || err_exit "\${#b.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
unset bb.colors
-[[ ${#bb.colors[@]} == 2 ]] || err_exit 'bb.colors should have 2 colors'
+exp=2 got=${#bb.colors[@]}
+[[ ${#bb.colors[@]} == 2 ]] || err_exit "\${#bb.colors[@]} incorrect for iteration $i -- expected $exp, got '$got'"
unset bb.items
-[[ ${#bb.items[@]} == 2 ]] || err_exit 'bb.items should have 2 items'
-[[ $b == "$bb" ]] || err_exit '$b != $bb'
+exp=2 got=${#bb.items[@]}
+[[ ${#bb.items[@]} == 2 ]] || err_exit "\${#bb.items[@]} incorrect for iteration $i -- expected $exp, got '$got'"
+[[ $b == "$bb" ]] || err_exit "\$b='$b' != \$bb='$bb'"
b.count=0
false
unset b bb
done
typeset -T Cube_t=(
- Box_t _=(y=5)
+ Box_t _=(y=5)
float z=1
depth()
{
@@ -105,16 +120,16 @@
for ((i=0; i < n; i++))
do
Box_t b=(name=box2)
-[[ ${b.name} == box2 ]] || err_exit '${b.name} is not box2'
-(( b.len == 5 )) || err_exit 'b.len is not 5 for box2'
-(( b.count == 1 )) || err_exit 'b.count is not 1'
+[[ ${b.name} == box2 ]] || err_exit "\${b.name} incorrect -- expected box2, got '${b.name}'"
+(( b.len == 5 )) || err_exit "b.len incorrect for box2 -- expected 5, got '$(( b.len ))'"
+(( b.count == 1 )) || err_exit "b.count incorrect -- expected 1, got '$(( b.count ))'"
Cube_t c=(name=cube1)
[[ $c == $'(\n\ttypeset -l -E x=8\n\ttypeset -l -E y=5\n\tcomvar=(\n\t\ttop=8\n\t\tbottom=9\n\t)\n\ttypeset -S -l -i count=1\n\ttypeset -a items=(\n\t\tfoo\n\t\tbar\n\t)\n\ttypeset -A colors=(\n\t\t[floor]=red\n\t\t[wall]=blue\n\t)\n\tname=cube1\n\ttypeset -L 6 status=INIT\n\ttypeset -l -E z=1\n)' ]] || err_exit '$c not correct'
[[ ${c.x} == 8 ]] || err_exit '${c.x} != 8'
[[ ${c.depth} == 1 ]] || err_exit '${c.depth} != 1'
-[[ ${c.name} == cube1 ]] || err_exit '${c.name} != cube1 '
-[[ $(c.fun) == 'hello world' ]] || err_exit '$(c.fun) != "hello world"'
-[[ ${c.fun} == 'hello world' ]] || err_exit '${c.fun} != "hello world"'
+[[ ${c.name} == cube1 ]] || err_exit '${c.name} != cube1 '
+[[ $(c.fun) == 'hello world' ]] || err_exit '$(c.fun) != "hello world"'
+[[ ${c.fun} == 'hello world' ]] || err_exit '${c.fun} != "hello world"'
(( abs(c.len - sqrt(90)) < 1e-10 )) || err_exit 'c.len != sqrt(90)'
(( c.count == 2 )) || err_exit 'c.count != 2'
(( c.count == b.count )) || err_exit 'c.count != b.count'
@@ -139,8 +154,8 @@
[[ ${cc[2].colors[table]} == white ]] || err_exit '${cc[2].colors[table]} != white'
[[ ${cc[2].items[2]} == pencil ]] || err_exit '${cc[2].items[2]} != pencil'
(( cc[2].len == 7 )) || err_exit '(( cc[2].len != 7 ))'
-[[ $(cc[2].len) == 7 ]] || err_exit '$(cc[2].len) != 7 ))'
-[[ ${cc[2].len} == 7 ]] || err_exit '${cc[2].len} != 7 ))'
+[[ $(cc[2].len) == 7 ]] || err_exit '$(cc[2].len) != 7 ))'
+[[ ${cc[2].len} == 7 ]] || err_exit '${cc[2].len} != 7 ))'
(( cc[2].count == 2 )) || err_exit 'cc[2].count != 2'
unset cc[2].x cc[2].y cc[2].z
(( cc[2].len == cc[0].len )) || err_exit 'cc[2].len != cc[0].len'
@@ -159,8 +174,8 @@
[[ ${cc[two].colors[table]} == white ]] || err_exit '${cc[two].colors[table]} != white'
[[ ${cc[two].items[2]} == pencil ]] || err_exit '${cc[two].items[2]} != pencil'
(( cc[two].len == 7 )) || err_exit '(( cc[two].len != 7 ))'
-[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
-[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
+[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
+[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
(( cc[two].count == 2 )) || err_exit 'cc[two].count != 2'
unset cc[two].x cc[two].y cc[two].z
(( cc[two].len == cc[one].len )) || err_exit 'cc[two].len != cc[one].len'
@@ -178,15 +193,15 @@
(( cc[two].y == 3 )) || err_exit '(( cc[two].y != 3))'
[[ ${cc[two].colors[table]} == white ]] || err_exit '${cc[two].colors[table]} != white'
(( cc[two].len == 7 )) || err_exit '(( cc[two].len != 7 ))'
-[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
-[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
+[[ $(cc[two].len) == 7 ]] || err_exit '$(cc[two].len) != 7 ))'
+[[ ${cc[two].len} == 7 ]] || err_exit '${cc[two].len} != 7 ))'
(( cc[two].count == 2 )) || err_exit 'cc[two].count != 2'
unset cc[two].x cc[two].y cc[two].z
(( cc[two].len == cc[one].len )) || err_exit 'cc[two].len != cc[one].len'
(( cc[two].count == 4 )) || err_exit 'cc[two].count != 4'
cc[three]=cc[two]
-[[ ${cc[two]} == "${cc[three]}" ]] || err_exit ' ${cc[two]} != ${cc[three]}'
-[[ $cc[two] == "${cc[three]}" ]] || err_exit ' $cc[two] != $cc[three]'
+[[ ${cc[two]} == "${cc[three]}" ]] || err_exit ' ${cc[two]} != ${cc[three]}'
+[[ $cc[two] == "${cc[three]}" ]] || err_exit ' $cc[two] != $cc[three]'
[[ ${#cc[@]} == 3 ]] || err_exit '${#cc[@]} != 3'
unset cc[two].name unset cc[two].colors
cc[two].count=0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/functions.sh new/src/cmd/ksh93/tests/functions.sh
--- old/src/cmd/ksh93/tests/functions.sh 2008-09-25 15:46:33.000000000 +0200
+++ new/src/cmd/ksh93/tests/functions.sh 2008-10-30 21:50:43.000000000 +0100
@@ -977,4 +977,5 @@
bar() { caller;}
set -- $(bar)
[[ $1 == $2 ]] && err_exit ".sh.inline optimization bug"
+( $SHELL -c ' function foo { typeset x=$1;print $1;};z=();z=($(foo bar)) ') 2> /dev/null || err_exit 'using a function to set an array in a command sub fails'
exit $((Errors))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/io.sh new/src/cmd/ksh93/tests/io.sh
--- old/src/cmd/ksh93/tests/io.sh 2008-10-13 23:33:26.000000000 +0200
+++ new/src/cmd/ksh93/tests/io.sh 2008-10-14 21:20:15.000000000 +0200
@@ -229,6 +229,7 @@
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'
+ { < /tmp/seek$$ <# ((2358336120)) ;} 2> /dev/null || err_exit 'long seek not working'
else err_exit "/tmp/seek$$: cannot open for reading"
fi
command exec 3<&- || 'cannot close 3'
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/path.sh new/src/cmd/ksh93/tests/path.sh
--- old/src/cmd/ksh93/tests/path.sh 2008-09-19 16:24:11.000000000 +0200
+++ new/src/cmd/ksh93/tests/path.sh 2008-10-24 21:11:32.000000000 +0200
@@ -24,9 +24,9 @@
let Errors+=1
}
alias err_exit='err_exit $LINENO'
-
Command=${0##*/}
integer Errors=0
+
mkdir /tmp/ksh$$
cd /tmp/ksh$$
trap "PATH=$PATH; cd /; rm -rf /tmp/ksh$$" EXIT
@@ -229,4 +229,36 @@
[[ $(PATH=/usr/ucb/bin:/usr/bin echo -n ucb) == 'ucb' ]] || err_exit "ucb universe echo ignores -n option"
[[ $(PATH=/usr/xpg/bin:/usr/bin echo -n att) == '-n att' ]] || err_exit "att universe echo does not ignore -n option"
+PATH=$path
+
+scr=/tmp/ksh$$/foo
+exp=126
+
+: > $scr
+chmod a=x $scr
+{ got=$($scr; print $?); } 2>/dev/null
+[[ "$got" == "$exp" ]] || err_exit "unreadable empty script should fail -- expected $exp, got $got"
+{ got=$(command $scr; print $?); } 2>/dev/null
+[[ "$got" == "$exp" ]] || err_exit "command of unreadable empty script should fail -- expected $exp, got $got"
+[[ "$(:; $scr; print $?)" == "$exp" ]] 2>/dev/null || err_exit "unreadable empty script in [[ ... ]] should fail -- expected $exp"
+[[ "$(:; command $scr; print $?)" == "$exp" ]] 2>/dev/null || err_exit "command unreadable empty script in [[ ... ]] should fail -- expected $exp"
+got=$($SHELL -c "$scr; print \$?" 2>/dev/null)
+[[ "$got" == "$exp" ]] || err_exit "\$SHELL -c of unreadable empty script should fail -- expected $exp, got" $got
+got=$($SHELL -c "command $scr; print \$?" 2>/dev/null)
+[[ "$got" == "$exp" ]] || err_exit "\$SHELL -c of command of unreadable empty script should fail -- expected $exp, got" $got
+
+rm -f $scr
+print : > $scr
+chmod a=x $scr
+{ got=$($scr; print $?); } 2>/dev/null
+[[ "$got" == "$exp" ]] || err_exit "unreadable non-empty script should fail -- expected $exp, got $got"
+{ got=$(command $scr; print $?); } 2>/dev/null
+[[ "$got" == "$exp" ]] || err_exit "command of unreadable non-empty script should fail -- expected $exp, got $got"
+[[ "$(:; $scr; print $?)" == "$exp" ]] 2>/dev/null || err_exit "unreadable non-empty script in [[ ... ]] should fail -- expected $exp"
+[[ "$(:; command $scr; print $?)" == "$exp" ]] 2>/dev/null || err_exit "command unreadable non-empty script in [[ ... ]] should fail -- expected $exp"
+got=$($SHELL -c "$scr; print \$?" 2>/dev/null)
+[[ "$got" == "$exp" ]] || err_exit "\$SHELL -c of unreadable non-empty script should fail -- expected $exp, got" $got
+got=$($SHELL -c "command $scr; print \$?" 2>/dev/null)
+[[ "$got" == "$exp" ]] || err_exit "\$SHELL -c of command of unreadable non-empty script should fail -- expected $exp, got" $got
+
exit $((Errors))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/substring.sh new/src/cmd/ksh93/tests/substring.sh
--- old/src/cmd/ksh93/tests/substring.sh 2008-09-05 03:33:10.000000000 +0200
+++ new/src/cmd/ksh93/tests/substring.sh 2008-10-24 16:55:38.000000000 +0200
@@ -514,51 +514,55 @@
{ $SHELL -c 'unset x;[[ ${SHELL:$x} == $SHELL ]]';} 2> /dev/null || err_exit '${var:$x} fails when x is not set'
{ $SHELL -c 'x=;[[ ${SHELL:$x} == $SHELL ]]';} 2> /dev/null || err_exit '${var:$x} fails when x is null'
-# subject pattern result #
+# subject mode pattern result #
set -- \
- 'a$z' '~(E)([$]|#)' 'a($)z' \
- 'a#z' '~(E)([$]|#)' 'a(#)z' \
- 'a$z' '~(Elr)([$]|#)' 'a$z' \
- 'a#z' '~(Elr)([$]|#)' 'a#z' \
- 'a$' '~(E)([$]|#)' 'a($)' \
- 'a#' '~(E)([$]|#)' 'a(#)' \
- 'a$' '~(Elr)([$]|#)' 'a$' \
- 'a#' '~(Elr)([$]|#)' 'a#' \
- '$z' '~(E)([$]|#)' '($)z' \
- '#z' '~(E)([$]|#)' '(#)z' \
- '$z' '~(Elr)([$]|#)' '$z' \
- '#z' '~(Elr)([$]|#)' '#z' \
- '$' '~(E)([$]|#)' '($)' \
- '#' '~(E)([$]|#)' '(#)' \
- '$' '~(Elr)([$]|#)' '($)' \
- '#' '~(Elr)([$]|#)' '(#)' \
- 'a$z' '~(E)(\$|#)' 'a$z()' \
- 'a$z' '~(E)(\\$|#)' 'a$z' \
- 'a$z' '~(E)(\\\$|#)' 'a($)z' \
- 'a#z' '~(E)(\\\$|#)' 'a(#)z' \
- 'a$z' '~(Elr)(\\\$|#)' 'a$z' \
- 'a#z' '~(Elr)(\\\$|#)' 'a#z' \
- 'a$' '~(E)(\\\$|#)' 'a($)' \
- 'a#' '~(E)(\\\$|#)' 'a(#)' \
- 'a$' '~(Elr)(\\\$|#)' 'a$' \
- 'a#' '~(Elr)(\\\$|#)' 'a#' \
- '$z' '~(E)(\\\$|#)' '($)z' \
- '#z' '~(E)(\\\$|#)' '(#)z' \
- '$z' '~(Elr)(\\\$|#)' '$z' \
- '#z' '~(Elr)(\\\$|#)' '#z' \
- '$' '~(E)(\\\$|#)' '($)' \
- '#' '~(E)(\\\$|#)' '(#)' \
- '$' '~(Elr)(\\\$|#)' '($)' \
- '#' '~(Elr)(\\\$|#)' '(#)' \
+ 'a$z' 'E' '[$]|#' 'a($)z' \
+ 'a#z' 'E' '[$]|#' 'a(#)z' \
+ 'a$z' 'Elr' '[$]|#' 'a$z' \
+ 'a#z' 'Elr' '[$]|#' 'a#z' \
+ 'a$' 'E' '[$]|#' 'a($)' \
+ 'a#' 'E' '[$]|#' 'a(#)' \
+ 'a$' 'Elr' '[$]|#' 'a$' \
+ 'a#' 'Elr' '[$]|#' 'a#' \
+ '$z' 'E' '[$]|#' '($)z' \
+ '#z' 'E' '[$]|#' '(#)z' \
+ '$z' 'Elr' '[$]|#' '$z' \
+ '#z' 'Elr' '[$]|#' '#z' \
+ '$' 'E' '[$]|#' '($)' \
+ '#' 'E' '[$]|#' '(#)' \
+ '$' 'Elr' '[$]|#' '($)' \
+ '#' 'Elr' '[$]|#' '(#)' \
+ 'a$z' 'E' '\$|#' 'a$z()' \
+ 'a$z' 'E' '\\$|#' 'a$z' \
+ 'a$z' 'E' '\\\$|#' 'a($)z' \
+ 'a#z' 'E' '\\\$|#' 'a(#)z' \
+ 'a$z' 'Elr' '\\\$|#' 'a$z' \
+ 'a#z' 'Elr' '\\\$|#' 'a#z' \
+ 'a$' 'E' '\\\$|#' 'a($)' \
+ 'a#' 'E' '\\\$|#' 'a(#)' \
+ 'a$' 'Elr' '\\\$|#' 'a$' \
+ 'a#' 'Elr' '\\\$|#' 'a#' \
+ '$z' 'E' '\\\$|#' '($)z' \
+ '#z' 'E' '\\\$|#' '(#)z' \
+ '$z' 'Elr' '\\\$|#' '$z' \
+ '#z' 'Elr' '\\\$|#' '#z' \
+ '$' 'E' '\\\$|#' '($)' \
+ '#' 'E' '\\\$|#' '(#)' \
+ '$' 'Elr' '\\\$|#' '($)' \
+ '#' 'Elr' '\\\$|#' '(#)' \
# do not delete this line #
unset i o
-while (( $# >= 3 ))
+while (( $# >= 4 ))
do i=$1
- eval o=\${i/$2/\\\(\\\1\\\)}
- if [[ "$o" != "$3" ]]
- then err_exit "i='$1'; \${i/$2/\\(\\1\\)} failed -- expected '$3', got '$o'"
+ eval o="\${i/~($2)$3/\\(\\0\\)}"
+ if [[ "$o" != "$4" ]]
+ then err_exit "i='$1'; \${i/~($2)$3/\\(\\0\\)} failed -- expected '$4', got '$o'"
fi
- shift 3
+ eval o="\${i/~($2)($3)/\\(\\1\\)}"
+ if [[ "$o" != "$4" ]]
+ then err_exit "i='$1'; \${i/~($2)($3)/\\(\\1\\)} failed -- expected '$4', got '$o'"
+ fi
+ shift 4
done
exit $((Errors))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/ksh93/tests/types.sh new/src/cmd/ksh93/tests/types.sh
--- old/src/cmd/ksh93/tests/types.sh 2008-10-13 21:52:15.000000000 +0200
+++ new/src/cmd/ksh93/tests/types.sh 2008-10-15 17:03:03.000000000 +0200
@@ -252,4 +252,17 @@
err_exit "copy to associative array of types in function failed -- expected '$expected', got '$got'"
}
+$SHELL > /dev/null <<- '+++++' || err_exit 'passing _ as nameref arg not working'
+ function f1
+ {
+ typeset -n v=$1
+ print -r -- "$v"
+ }
+ typeset -T A_t=(
+ typeset blah=xxx
+ function f { f1 _ ;}
+ )
+ A_t a
+ [[ ${ a.f ./t1;} == "$a" ]]
++++++
exit $Errors
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/features/botch.c new/src/lib/libast/features/botch.c
--- old/src/lib/libast/features/botch.c 2007-01-22 20:40:04.000000000 +0100
+++ new/src/lib/libast/features/botch.c 2008-10-14 08:58:46.000000000 +0200
@@ -30,7 +30,7 @@
#include
#include "FEATURE/lib"
-#include "FEATURE/types"
+#include "FEATURE/sys"
#if _lib_getgroups
extern int getgroups(int, gid_t*);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/include/ast_version.h new/src/lib/libast/include/ast_version.h
--- old/src/lib/libast/include/ast_version.h 2008-06-17 21:17:08.000000000 +0200
+++ new/src/lib/libast/include/ast_version.h 2008-10-18 07:29:17.000000000 +0200
@@ -25,4 +25,4 @@
* AT&T Research
*/
-#define _AST_VERSION 20080617L
+#define _AST_VERSION 20080910L
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/Makefile new/src/lib/libast/Makefile
--- old/src/lib/libast/Makefile 2008-09-16 16:41:02.000000000 +0200
+++ new/src/lib/libast/Makefile 2008-10-18 07:43:26.000000000 +0200
@@ -43,7 +43,7 @@
$(ID)_botch.h $(ID)_ccode.h $(ID)_fcntl.h $(ID)_float.h $(ID)_fs.h \
$(ID)_lib.h $(ID)_map.h $(ID)_mmap.h $(ID)_mode.h $(ID)_ndbm.h \
$(ID)_param.h $(ID)_sys.h $(ID)_time.h $(ID)_time.h $(ID)_tty.h \
- $(ID)_types.h $(ID)_vfork.h $(ID)_wait.h $(ID)_limits.h $(ID)_standards.h \
+ $(ID)_vfork.h $(ID)_wait.h $(ID)_limits.h $(ID)_standards.h \
$(HEADERSTD:/^/$(ID)_/)
HEADEREXP = $(ID)_common.h
@@ -216,8 +216,10 @@
.MAKEINIT : .AST.INIT
.AST.INIT : .MAKE
CCFLAGS += -D_BLD_ast
+ ast_version.h : -IGNORE
+ (_AST_VERSION) : -PARAMETER
-parameter (_BLD_ast) (_AST_VERSION)
+parameter (_BLD_ast)
virtual ast/stdio.h
:NOPROTECT: sfprintf.c sfvprintf.c sfscanf.c sfvscanf.c
@@ -228,7 +230,7 @@
"win32*" :NOOPTIMIZE: fastfind.c mc.c
/*
- * NOTE: sun4 runtime link botches ro data so advertized sig_info is rw
+ * NOTE: sun4 runtime link botches ro data so advertised sig_info is rw
*/
:READONLY: conftab.c lctab.c modedata.c /*sftable.c*/ \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/Mamfile new/src/lib/libast/Mamfile
--- old/src/lib/libast/Mamfile 2008-10-14 06:52:13.000000000 +0200
+++ new/src/lib/libast/Mamfile 2008-10-30 23:20:14.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGEROOT ../../../../..
setv AR ar
@@ -181,13 +181,17 @@
make FEATURE/botch
meta FEATURE/botch features/%.c>FEATURE/% features/botch.c botch
make features/botch.c
-make FEATURE/types implicit
-meta FEATURE/types >FEATURE/% types
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ' def types
-done FEATURE/types generated
+make FEATURE/sys implicit
+meta FEATURE/sys features/%>FEATURE/% features/sys sys
+make features/sys
+done features/sys
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ' run features/sys
+prev std/endian.h implicit
+prev std/endian.h implicit
+done FEATURE/sys generated
prev FEATURE/lib implicit
done features/botch.c
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Istd ${LDFLAGS} ' run features/botch.c
+exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iinclude -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
@@ -221,14 +225,7 @@
done ast_fcntl.h dontcare generated
prev include/ast_getopt.h implicit
make ast_sys.h implicit
-make FEATURE/sys
-meta FEATURE/sys features/%>FEATURE/% features/sys sys
-make features/sys
-done features/sys
-exec - iffe -v -X ast -X std -c '${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${LDFLAGS} ' run features/sys
-prev std/endian.h implicit
-prev std/endian.h implicit
-done FEATURE/sys generated
+prev FEATURE/sys
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
make ast_lib.h implicit
@@ -4342,7 +4339,7 @@
done sfio/sfvprintf.c
meta sfvprintf.o %.c>%.o sfio/sfvprintf.c sfvprintf
prev sfio/sfvprintf.c
-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
+exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
done sfvprintf.o generated
make sfvscanf.o
make sfio/sfvscanf.c
@@ -6917,17 +6914,6 @@
exec - else mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/ast_tty.h
exec - fi
done ${INSTALLROOT}/include/ast/ast_tty.h generated
-make ${INSTALLROOT}/include/ast/ast_types.h
-make ast_types.h
-prev FEATURE/types
-exec - cmp 2>/dev/null -s FEATURE/types ast_types.h || { rm -f ast_types.h; silent test -d . || mkdir .; ${STDCP} FEATURE/types ast_types.h; }
-done ast_types.h generated
-exec - proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o since=1985,author=gsf+dgk+kpv' ast_types.h > 1.${COTEMP}.x
-exec - if cmp 2>/dev/null -s ${INSTALLROOT}/include/ast/ast_types.h 1.${COTEMP}.x
-exec - then rm -f 1.${COTEMP}.x
-exec - else mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/ast_types.h
-exec - fi
-done ${INSTALLROOT}/include/ast/ast_types.h generated
make ${INSTALLROOT}/include/ast/ast_vfork.h
prev ast_vfork.h
exec - proto -p -s -l ${PACKAGEROOT}/lib/package/ast.lic '-o since=1985,author=gsf+dgk+kpv' ast_vfork.h > 1.${COTEMP}.x
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/port/astconf.c new/src/lib/libast/port/astconf.c
--- old/src/lib/libast/port/astconf.c 2008-04-29 22:18:03.000000000 +0200
+++ new/src/lib/libast/port/astconf.c 2008-10-24 21:22:53.000000000 +0200
@@ -529,8 +529,14 @@
r = 0;
if (fp->op == OP_universe)
{
- if (strneq(p, "bin:", 4) || streq(p, "bin") || strneq(p, "usr/bin:", 8) || streq(p, "usr/bin"))
- break;
+ if (p[0] == 'u' && p[1] == 's' && p[2] == 'r' && p[3] == '/')
+ for (p += 4; *p == '/'; p++);
+ if (p[0] == 'b' && p[1] == 'i' && p[2] == 'n')
+ {
+ for (p += 3; *p == '/'; p++);
+ if (!*p || *p == ':')
+ break;
+ }
}
}
if (fp->op == OP_universe)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libast/RELEASE new/src/lib/libast/RELEASE
--- old/src/lib/libast/RELEASE 2008-09-12 16:29:21.000000000 +0200
+++ new/src/lib/libast/RELEASE 2008-10-24 21:23:47.000000000 +0200
@@ -1,3 +1,4 @@
+08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization
08-09-10 misc/magic.c: handle old vcodex() indices
08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead
08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libcmd/Mamfile new/src/lib/libcmd/Mamfile
--- old/src/lib/libcmd/Mamfile 2008-09-12 18:27:32.000000000 +0200
+++ new/src/lib/libcmd/Mamfile 2008-10-30 23:20:15.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libcmd/RELEASE new/src/lib/libcmd/RELEASE
--- old/src/lib/libcmd/RELEASE 2008-09-09 05:39:42.000000000 +0200
+++ new/src/lib/libcmd/RELEASE 2008-10-15 16:22:25.000000000 +0200
@@ -1,3 +1,4 @@
+08-10-15 rm.c: handle 'rm -f x x' => exit 0
08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead
08-06-17 shcmd.h: move to libast
08-04-24 uniq.c: add optget() 'n' option for -1 => -f1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libcmd/rm.c new/src/lib/libcmd/rm.c
--- old/src/lib/libcmd/rm.c 2007-05-09 05:54:53.000000000 +0200
+++ new/src/lib/libcmd/rm.c 2008-10-15 16:15:52.000000000 +0200
@@ -27,7 +27,7 @@
*/
static const char usage[] =
-"[-?\n@(#)$Id: rm (AT&T Research) 2006-11-21 $\n]"
+"[-?\n@(#)$Id: rm (AT&T Research) 2008-10-15 $\n]"
USAGE_LICENSE
"[+NAME?rm - remove files]"
"[+DESCRIPTION?\brm\b removes the named \afile\a arguments. By default it"
@@ -211,6 +211,8 @@
if ((ent->fts_info == FTS_DC || state->directory) ? remove(path) : rmdir(path))
switch (errno)
{
+ case ENOENT:
+ break;
case EEXIST:
#if defined(ENOTEMPTY) && (ENOTEMPTY) != (EEXIST)
case ENOTEMPTY:
@@ -314,10 +316,17 @@
if (remove(path))
{
nonempty(ent);
- if (!state->force || state->interactive)
- error(ERROR_SYSTEM|2, "%s: not removed", ent->fts_path);
- else
- error_info.errors++;
+ switch (errno)
+ {
+ case ENOENT:
+ break;
+ default:
+ if (!state->force || state->interactive)
+ error(ERROR_SYSTEM|2, "%s: not removed", ent->fts_path);
+ else
+ error_info.errors++;
+ break;
+ }
}
break;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libdll/Mamfile new/src/lib/libdll/Mamfile
--- old/src/lib/libdll/Mamfile 2008-09-12 18:27:32.000000000 +0200
+++ new/src/lib/libdll/Mamfile 2008-10-30 23:20:15.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/lib/libsum/Mamfile new/src/lib/libsum/Mamfile
--- old/src/lib/libsum/Mamfile 2008-10-14 06:52:15.000000000 +0200
+++ new/src/lib/libsum/Mamfile 2008-10-30 23:20:15.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGE_ast_INCLUDE ${INSTALLROOT}/include/ast
setv PACKAGE_ast_LIB ${INSTALLROOT}/lib
++++++ INIT.2008-10-10.tar.bz2 -> INIT.2008-10-31.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/INIT.html new/lib/package/INIT.html
--- old/lib/package/INIT.html 2008-10-14 06:52:02.000000000 +0200
+++ new/lib/package/INIT.html 2008-10-30 23:20:11.000000000 +0100
@@ -48,6 +48,7 @@
<P><HR><CENTER><FONT color=red><FONT face=courier><H3><A name="INIT changes">INIT changes</A></H3></FONT></FONT></CENTER>
<PRE>
+08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!!
08-09-30 rt.sh: fix ksh93 regression test signal count
08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input
08-09-24 package.sh: package only test foo => make --recurse=only recurse tests foo
@@ -862,7 +863,7 @@
<TR>
<TD align=left></TD>
<TD align=center></TD>
-<TD align=right>October 14, 2008</TD>
+<TD align=right>October 30, 2008</TD>
</TR>
</TABLE>
<P>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/INIT.README new/lib/package/INIT.README
--- old/lib/package/INIT.README 2008-10-03 18:09:26.000000000 +0200
+++ new/lib/package/INIT.README 2008-10-16 19:51:25.000000000 +0200
@@ -92,6 +92,7 @@
:::::::: INIT ::::::::
+08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!!
08-09-30 rt.sh: fix ksh93 regression test signal count
08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input
08-09-24 package.sh: package only test foo => make --recurse=only recurse tests foo
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/lib/package/INIT.ver new/lib/package/INIT.ver
--- old/lib/package/INIT.ver 2008-10-14 06:52:02.000000000 +0200
+++ new/lib/package/INIT.ver 2008-10-30 23:20:10.000000000 +0100
@@ -1 +1 @@
-INIT 2008-10-10 2008-10-10 1
+INIT 2008-10-31 2008-10-31 1
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/INIT/make.probe new/src/cmd/INIT/make.probe
--- old/src/cmd/INIT/make.probe 2008-09-23 17:21:05.000000000 +0200
+++ new/src/cmd/INIT/make.probe 2008-10-16 17:26:15.000000000 +0200
@@ -2,7 +2,7 @@
# Glenn Fowler
# AT&T Research
#
-# @(#)make.probe (AT&T Research) 2008-09-22
+# @(#)make.probe (AT&T Research) 2008-10-16
#
# C probe for make
#
@@ -38,7 +38,7 @@
probe_shared_registry='"-update_registry $probe_shared_registry_file"'
probe_shared_registry_file='registry.ld'
probe_shared_registry_path="\$(LIBDIR)/$probe_shared_registry_file"
-probe_no_protect="-fno-stack-protector -GS-"
+probe_no_protect="'-fno-stack-protector -fno-stack-protector-all' -GS-"
probe_strict="'-ansi -pedantic' '-ansi -strict' -strict -ansi"
probe_stripflags="'-f -s' -f -s"
probe_unresolved="'-expect_unresolved \"*\"'"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/INIT/Mamfile new/src/cmd/INIT/Mamfile
--- old/src/cmd/INIT/Mamfile 2008-10-14 06:52:03.000000000 +0200
+++ new/src/cmd/INIT/Mamfile 2008-10-30 23:20:11.000000000 +0100
@@ -1,4 +1,4 @@
-info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-08-08
+info mam static 00000 1994-07-17 make (AT&T Research) 5.3 2008-10-28
setv INSTALLROOT ../../..
setv PACKAGEROOT ../../../../..
setv AR ar
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/INIT/proto.c new/src/cmd/INIT/proto.c
--- old/src/cmd/INIT/proto.c 2008-09-29 16:42:30.000000000 +0200
+++ new/src/cmd/INIT/proto.c 2008-10-18 07:45:58.000000000 +0200
@@ -80,7 +80,7 @@
#line 1 "/home/gsf/src/cmd/proto/proto.c"
-#line 147
+#line 148
# ifndef __STDC__
# ifndef creat
# define creat _huh_creat
@@ -4647,7 +4647,7 @@
-#line 265 "/home/gsf/src/cmd/proto/proto.c"
+#line 266 "/home/gsf/src/cmd/proto/proto.c"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/src/cmd/INIT/RELEASE new/src/cmd/INIT/RELEASE
--- old/src/cmd/INIT/RELEASE 2008-10-01 14:08:09.000000000 +0200
+++ new/src/cmd/INIT/RELEASE 2008-10-16 17:31:11.000000000 +0200
@@ -1,3 +1,4 @@
+08-10-16 make.probe '-fno-stack-protector -fno-stack-protector-all' to cop out!!
08-09-30 rt.sh: fix ksh93 regression test signal count
08-09-26 regress.sh: ignore SIGPIPE for SET pipe-input
08-09-24 package.sh: package only test foo => make --recurse=only recurse tests foo
++++++ workaround-stupid-build-system.diff ++++++
--- /var/tmp/diff_new_pack.G30553/_old 2008-11-03 12:18:25.000000000 +0100
+++ /var/tmp/diff_new_pack.G30553/_new 2008-11-03 12:18:25.000000000 +0100
@@ -218,8 +218,8 @@
done sfio/sfvprintf.c
meta sfvprintf.o %.c>%.o sfio/sfvprintf.c sfvprintf
prev sfio/sfvprintf.c
--exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
-+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
+-exec - ${CC} ${mam_cc_FLAGS} ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${CCFLAGS.FORCE}?} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} ${mam_cc_NOPROTECT} -I. -Icomp -Iport -Isfio -Iinclude -Istd -I${INSTALLROOT}/include -D_PACKAGE_ast -c sfio/sfvprintf.c
done sfvprintf.o generated
make sfvscanf.o
make sfio/sfvscanf.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org