diff --git a/Agreement b/Agreement index 5994771..cee616c 100644 --- a/Agreement +++ b/Agreement @@ -7,9 +7,3 @@ wget --user='I accept www.opensource.org/licenses/cpl' --password='.' \ http://www2.research.att.com/sw/download/beta/ast-ksh.${version}.tgz \ http://www2.research.att.com/sw/download/beta/INIT.${version}.tgz \ http://www2.research.att.com/sw/download/beta/ast-base.${version}.tgz - -tar xfz ast-base.${version}.tgz src/cmd/msgcc/ src/lib/libpp/ -tar cfj ast-msgcc.${version}.tar.bz2 src/cmd/msgcc/ src/lib/libpp/ -tar xfz ast-base.${version}.tgz src/lib/libuu/ src/cmd/builtin/ -tar cfj ast-builtin.${version}.tar.bz2 src/lib/libuu/ src/cmd/builtin/ -rm -f ast-base.${version}.tgz diff --git a/INIT.2012-02-02.tar.bz2 b/INIT.2012-02-02.tar.bz2 deleted file mode 100644 index d0cc9ea..0000000 --- a/INIT.2012-02-02.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ea89823ade1949c828e6012cf85f58aebcfe8cb9f31052370936e215a9b126a6 -size 296877 diff --git a/INIT.2012-02-14.tar.bz2 b/INIT.2012-02-14.tar.bz2 new file mode 100644 index 0000000..30d4095 --- /dev/null +++ b/INIT.2012-02-14.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fedd8f2100f784dbcf60b1b6392d61c10902aaf2ff61a34134cd1ba83f4d2e11 +size 297404 diff --git a/ast-base.2012-02-14.tar.bz2 b/ast-base.2012-02-14.tar.bz2 new file mode 100644 index 0000000..190df1a --- /dev/null +++ b/ast-base.2012-02-14.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2711f072573a7e69746fe8a1e88a72978e37b3b3097ff921aa6f23b624e76925 +size 6377383 diff --git a/ast-builtin.2012-02-02.tar.bz2 b/ast-builtin.2012-02-02.tar.bz2 deleted file mode 100644 index 5ac5636..0000000 --- a/ast-builtin.2012-02-02.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:08d8ddd04a0cb983ac32ba15b28045d6a9c15f5171430d66f26ff5b9924a25f8 -size 141200 diff --git a/ast-ksh.2012-02-02.tar.bz2 b/ast-ksh.2012-02-02.tar.bz2 deleted file mode 100644 index 2fc431c..0000000 --- a/ast-ksh.2012-02-02.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ddaab5c6ae873e61e0706024abd57f0363891a8ad5bf026082c0706b7557665 -size 1573400 diff --git a/ast-ksh.2012-02-14.tar.bz2 b/ast-ksh.2012-02-14.tar.bz2 new file mode 100644 index 0000000..a5badc4 --- /dev/null +++ b/ast-ksh.2012-02-14.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:334fc6d4e407cc8c9ffbcc6b4efdb3bb94da045126d608b7329f23b022f389de +size 1575644 diff --git a/ast-msgcc.2012-02-02.tar.bz2 b/ast-msgcc.2012-02-02.tar.bz2 deleted file mode 100644 index 0e573c1..0000000 --- a/ast-msgcc.2012-02-02.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:318716d403b0b0f5be08848235122ab27d4c13f6daceca55cd61a41cd3c8cfb4 -size 129260 diff --git a/ifs-crash.sh b/ifs-crash.sh index 686e020..117540c 100644 --- a/ifs-crash.sh +++ b/ifs-crash.sh @@ -1,21 +1,23 @@ #!/bin/ksh -#function g -#{ -# IFS= -#} -# -#function f -#{ -# typeset IFS -# (g) -# : $V -#} -# -#f -#f +typeset -lui count=${1:-4} -trap 'echo "[${0##*/}: crash]"' SIGSEGV SIGABRT SIGBUS SIGFPE +function g +{ + IFS= +} + +function f +{ + typeset IFS + (g) + : $V +} + +while ((count-- > 0)) +do + f +done function crash { diff --git a/ksh.changes b/ksh.changes index db6fde3..eb3b197 100644 --- a/ksh.changes +++ b/ksh.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Mon Feb 20 14:09:55 UTC 2012 - werner@suse.de + +- Update to 2012-02-14 of ksh93u+ which includes the real fix + for the IFS crash as well as other fixes like: + 12-02-14 A bug in which ^Z did not stop a pipeline when the last component + was a shell built-in has been fixed. + 12-02-14 getconf("PATH") used to initialize ed(1) path. + 12-02-13 +In earlier version read from standard input would fail when called + from the KEYBD trap. Now read options -N, -n, and -t should work + when called from a KEYBD trap. + 12-02-13 If FCEDIT is not set and fc is invoked without the -e option, + ed will be invoked if found instead of /bin/ed. + 12-02-10 Another bug in the saving and restoring of IFS in a subshell + that caused a core dump has been fixed. + 12-02-08 A bug in which .sh.fun disciplines could be cleared after a + function completes has been fixed. + 12-02-08 A bug in job control in which the foregroup process group was not + set correctly after restarting a stopped pipeline has been fixed. + 12-02-07 A bug in which numbers with leading zeros could be treated as + octal constants outside of ((...)) has been fixed. + 12-02-06 A bug in arithmetic with compound variables containing multiple + array elements has been fixed. + libast: + 12-02-10 sfvprintf.c: fix 1 byte too long buffer access + 12-02-07 malloc.c/features/vmalloc: add gnu __malloc_hook tests + 12-02-06 vmmopen.c: fix ALIGN vs sys/param.h macro conflict + libcmd: + 12-02-14 rm.c: --force ignores no file operands specified + libpp: + 12-02-14 ppproto.c: fix "already noticed" logic + cmd/builtin: + 12-02-11 what.c: fix boyer moore cut n paste bug -- thanks werner + ------------------------------------------------------------------- Tue Feb 14 15:36:22 UTC 2012 - werner@suse.de diff --git a/ksh.spec b/ksh.spec index d33e45b..6ca8187 100644 --- a/ksh.spec +++ b/ksh.spec @@ -19,7 +19,7 @@ Name: ksh -%global date 2012-02-02 +%global date 2012-02-14 %global use_suid_exe 0 %if %suse_version > 1210 %global use_opt_bins 1 @@ -63,8 +63,7 @@ Summary: Korn Shell BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: INIT.%{date}.tar.bz2 Source1: ast-ksh.%{date}.tar.bz2 -Source2: ast-msgcc.%{date}.tar.bz2 -Source3: ast-builtin.%{date}.tar.bz2 +Source2: ast-base.%{date}.tar.bz2 Source4: CPL Source10: leak1.sh Source11: leak2.sh @@ -139,7 +138,8 @@ Authors: %prep chmod +x %{S:31} -%setup -q -n ksh93 -T -c -a 0 -a 1 -a 2 -a 3 +%setup -q -n ksh93 -T -c -a 0 -a 1 +tar --use-compress-program=bzcat -xf %{S:2} src/cmd/builtin/ src/cmd/msgcc/ src/lib/libpp/ src/lib/libuu/ if test -d share ; then find share/ \( -name chef -o -name fudd -o -name piglatin -o -name valley \) -a -type d |\ xargs -r rm -vrf @@ -456,8 +456,9 @@ fi pushd ${test} typeset -i failed=0 ln -sf ${root}/lib ${test}/../ - sed -ri '/^L[[:blank:]]/a \t 5000' pty.sh - sed -ri 's/(SECONDS[[:blank:]]*>[[:blank:]]*)([[:digit:]]+)/\15/p' signal.sh + sed -ri '/^L[[:blank:]]POSIX/a \t 5000' pty.sh + sed -ri 's/(SECONDS[[:blank:]]*>[[:blank:]]*)([[:digit:]]+)/\18/p' signal.sh + unset ${!LESS*} ${SHELL} shtests exec 3> ${TMPDIR:-/tmp}/log LANG=POSIX @@ -465,7 +466,8 @@ fi strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 4000 - strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} + strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 4 + strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 40 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 400 @@ -478,7 +480,8 @@ fi strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:11} 4000 - strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} + strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 4 + strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:12} 40 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 400 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:13} 4000 strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:14} 400 diff --git a/ksh93-aso.dif b/ksh93-aso.dif index 27032ba..3cca437 100644 --- a/ksh93-aso.dif +++ b/ksh93-aso.dif @@ -1,5 +1,5 @@ --- src/lib/libast/features/aso -+++ src/lib/libast/features/aso 2012-02-06 11:25:03.897933168 +0100 ++++ src/lib/libast/features/aso 2012-02-20 12:09:41.065934089 +0100 @@ -5,7 +5,10 @@ if aso note{ gcc 4.1+ 64 bit memory atom int main() { @@ -12,115 +12,14 @@ } }end && { #define _aso_cas8(p,o,n) __sync_val_compare_and_swap(p,o,n) -@@ -27,10 +30,13 @@ if aso note{ gcc 4.1+ 64 bit memory atom - #endif - } - elif aso note{ gcc 4.1+ 32 bit memory atomic operations model }end link{ -+ #include +@@ -31,7 +34,9 @@ elif aso note{ gcc 4.1+ 32 bit memory at int main() { -- unsigned int i = 0; + uint32_t i = 0; - return __sync_fetch_and_add(&i,7); -+ uint32_t i = 0; + uint16_t j = 0; + uint8_t l = 0; + return __sync_fetch_and_add(&i,7)+__sync_fetch_and_add(&j,7)+__sync_fetch_and_add(&l,7); } }end && { #define _aso_cas8(p,o,n) __sync_val_compare_and_swap(p,o,n) -@@ -45,6 +51,7 @@ elif aso note{ gcc 4.1+ 32 bit memory at - #define _aso_casptr(p,o,n) ((void*)__sync_val_compare_and_swap(p,(uint32_t)o,(uint32_t)n)) - } - elif aso note{ atomic_cas_64 }end link{ -+ #include - #include - int main() - { -@@ -53,6 +60,7 @@ elif aso note{ atomic_cas_64 - return atomic_cas_64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _aso_cas8(p,o,n) atomic_cas_8(p,o,n) - #define _aso_inc8(p) (atomic_add_8_nv(p,1)-1) -@@ -73,6 +81,7 @@ elif aso note{ atomic_cas_64 - #endif - } - elif aso note{ atomic_cas_32 }end link{ -+ #include - #include - int main() - { -@@ -80,6 +89,7 @@ elif aso note{ atomic_cas_32 - return atomic_cas_32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _aso_cas8(p,o,n) atomic_cas_8(p,o,n) - #define _aso_inc8(p) (atomic_add_8_nv(p,1)-1) -@@ -93,6 +103,7 @@ elif aso note{ atomic_cas_32 - #define _aso_casptr(p,o,n) ((void*)atomic_cas_32((uint32_t*)p,(uint32_t)o,(uint32_t)n)) - } - elif aso -latomic note{ atomic_cas_64 with -latomic }end link{ -+ #include - #include - int main() - { -@@ -101,6 +112,7 @@ elif aso -latomic note{ atomi - return atomic_cas_64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _REQ_atomic - #define _aso_cas8(p,o,n) atomic_cas_8(p,o,n) -@@ -122,6 +134,7 @@ elif aso -latomic note{ atomi - #endif - } - elif aso note{ atomic_cas_32 with -latomic }end link{ -+ #include - #include - int main() - { -@@ -129,6 +142,7 @@ elif aso note{ atomic_cas_32 - return atomic_cas_32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _REQ_atomic - #define _aso_cas8(p,o,n) atomic_cas_8(p,o,n) -@@ -143,6 +157,7 @@ elif aso note{ atomic_cas_32 - #define _aso_casptr(p,o,n) ((void*)atomic_cas_32((uint32_t*)p,(uint32_t)o,(uint32_t)n)) - } - elif aso note{ cas64 }end link{ -+ #include - #include - int main() - { -@@ -151,6 +166,7 @@ elif aso note{ cas64 }end lin - return cas64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _aso_cas8(p,o,n) cas8(p,o,n) - #define _aso_inc8(p) (atomic_add_8_nv(p,1)-1) -@@ -171,6 +187,7 @@ elif aso note{ cas64 }end lin - #endif - } - elif aso note{ cas32 }end link{ -+ #include - #include - int main() - { -@@ -178,6 +195,7 @@ elif aso note{ cas32 }end lin - return cas32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1) - } - }end && { -+ #include - #include - #define _aso_cas8(p,o,n) cas8(p,o,n) - #define _aso_inc8(p) (atomic_add_8_nv(p,1)-1) diff --git a/ksh93-builtin.dif b/ksh93-builtin.dif index 1b6b276..6953279 100644 --- a/ksh93-builtin.dif +++ b/ksh93-builtin.dif @@ -56,39 +56,3 @@ switch (mid) { default: -@@ -122,7 +122,7 @@ what(const char* file, Sfio_t* ip, Sfio_ - switch (skip[buf[0]]) - { - case HIT: -- if (buf[0] == ')' && s[0] == '@' && s[1] == '(' && s[2] == '#' || buf[0] == ':' && s[0] == '$' && s[1] == 'I' && s[2] == 'd') -+ if (buf[0] == ')' && s[2] == '#' && s[1] == '(' && s[0] == '@' || buf[0] == ':' && s[2] == 'd' && s[1] == 'I' && s[0] == '$') - { - index = 0; - s = buf + 1; -@@ -130,7 +130,7 @@ what(const char* file, Sfio_t* ip, Sfio_ - } - break; - case 1: -- if (buf[0] == ')' && s[1] == '@' && s[2] == '(' && buf[1] == '#' || buf[0] == ':' && s[1] == '$' && s[2] == 'I' && s[3] == 'd') -+ if (buf[1] == ')' && buf[0] == '#' && s[2] == '(' && s[1] == '@' || buf[1] == ':' && buf[0] == 'd' && s[2] == 'I' && s[1] == '$') - { - index = 1; - s = buf + 2; -@@ -138,7 +138,7 @@ what(const char* file, Sfio_t* ip, Sfio_ - } - break; - case 2: -- if (buf[0] == ')' && s[2] == '@' && buf[1] == '(' && buf[2] == '#' || buf[0] == ':' && s[2] == '$' && s[3] == 'I' && s[3] == 'd') -+ - { - index = 2; - s = buf + 3; -@@ -196,7 +196,7 @@ what(const char* file, Sfio_t* ip, Sfio_ - list: - if ((s - b) > 2 && *(s - 1) == '$' && *(s - 2) == ' ') - s -= 2; -- if (s > b) -+ if (s > b || !*t) - { - sfprintf(op, "%s%-.*s\n", t, s - b, b); - state.hit = 1; diff --git a/ksh93-s390.dif b/ksh93-s390.dif index 8ef18ce..31188bb 100644 --- a/ksh93-s390.dif +++ b/ksh93-s390.dif @@ -1,11 +1,11 @@ --- src/cmd/ksh93/bltins/read.c +++ src/cmd/ksh93/bltins/read.c 2008-12-17 14:01:01.000000000 +0000 -@@ -263,6 +263,19 @@ int sh_readline(register Shell_t *shp,ch +@@ -280,6 +280,19 @@ int sh_readline(register Shell_t *shp,ch delim = ((unsigned)flags)>>D_FLAG; - if(shp->fdstatus[fd]&IOTTY) + if((shp->fdstatus[fd]&IOTTY) && !keytrap) tty_raw(fd,1); +#if defined(__linux__) -+ else if (flags&N_FLAG) ++ if ((flags&N_FLAG) && (shp->fdstatus[fd]&(IOTTY|IONOSEEK))==0) + { + struct stat st; + if ((fstat(fd, &st) == 0) && S_ISFIFO(st.st_mode)) diff --git a/ksh93.dif b/ksh93.dif index 4678b19..5f96978 100644 --- a/ksh93.dif +++ b/ksh93.dif @@ -355,6 +355,29 @@ PATH=$path +--- src/cmd/ksh93/tests/pty.sh ++++ src/cmd/ksh93/tests/pty.sh 2012-02-20 13:49:24.729935773 +0000 +@@ -419,16 +419,16 @@ r echo repeat-3 + ! + + # err_exit # +-whence -q less && ++whence -q more && + TERM=vt100 tst $LINENO <<"!" + L ksh process/terminal group exercise + +-w while :; do echo y; done | less +-u ^:\E ++w while :; do echo y; done | more ++u --More-- + c \cZ + r Stopped + w fg +-u ^:\E ++w q + ! + + exit $((Errors<125?Errors:125)) --- src/cmd/ksh93/tests/signal.sh +++ src/cmd/ksh93/tests/signal.sh 2011-05-20 13:25:48.196426330 +0000 @@ -285,10 +285,10 @@ then for exp in TERM VTALRM PIPE @@ -488,11 +511,11 @@ goto commit; #else --- src/cmd/ksh93/sh/init.c -+++ src/cmd/ksh93/sh/init.c 2012-02-16 14:06:30.817933875 +0000 -@@ -509,19 +509,47 @@ static void put_ifs(register Namval_t* n ++++ src/cmd/ksh93/sh/init.c 2012-02-20 10:33:24.362018545 +0000 +@@ -508,24 +508,30 @@ static void put_cdpath(register Namval_t + static void put_ifs(register Namval_t* np,const char *val,int flags,Namfun_t *fp) { register struct ifs *ip = (struct ifs*)fp; - Shell_t *shp; + Namfun_t *xp; ip->ifsnp = 0; - if(!val) @@ -500,49 +523,34 @@ { - fp = nv_stack(np, NIL(Namfun_t*)); - if(fp && !fp->nofree) +- { - free((void*)fp); -+ if (val != np->nvalue.cp) +- fp = 0; +- } ++ if(val != np->nvalue.cp) + nv_putv(np, val, flags, fp); + return; } - if(val != np->nvalue.cp) - nv_putv(np, val, flags, fp); -- if(!val && !(flags&NV_CLONE) && (fp=np->nvfun) && !fp->disc && (shp=(Shell_t*)(fp->last))) -- nv_stack(np,&((Init_t*)shp->init_context)->IFS_init.hdr); -- else if(!val) +- if(!val) ++ nv_putv(np, NIL(char*), flags, NIL(Namfun_t*)); + -+ xp = nv_stack(np, NIL(Namfun_t*)); -+#if 0 -+ if (xp != fp) ++ if((xp = nv_stack(np, NIL(Namfun_t*))) != fp) + sfprintf(sfstderr, "BUG in %s:%s(%d) xp(%p) != fp(%p)\n", + __FILE__, __FUNCTION__, __LINE__, xp, fp); -+#endif -+ nv_putv(np, NIL(char*), flags, NIL(Namfun_t*)); -+ if(xp && xp->nofree == 0) -+ free((void*)xp); -+ xp = NIL(Namfun_t*); -+ -+ if((fp=np->nvfun) && (shp=(Shell_t*)(fp->last))) ++ if(fp && !fp->nofree) + { -+ xp = &((Init_t*)shp->init_context)->IFS_init.hdr; -+ xp->last = (char*)shp; ++ free((void*)fp); ++ fp = NIL(Namfun_t*); + } -+ -+ if(!(flags&NV_CLONE) && fp && !fp->disc && xp) -+ nv_stack(np, xp); ++ if(fp) + { + fp->next = np->nvfun; + np->nvfun = fp; + } +- else if(!val) + else -+ { -+ if(xp) -+ { -+ Namval_t* sp = sh_scoped(shp,IFSNOD); -+ if((sp->nvfun!=xp) && (sp->nvfun->nofree==0)) { -+ fp = nv_disc(sp,sp->nvfun,NV_POP); -+ nv_disc(sp,xp,NV_FIRST); -+ free((void*)fp); -+ } -+ } np->nvfun = 0; -+ } } - /* diff --git a/workaround-stupid-build-system.diff b/workaround-stupid-build-system.diff index c472b92..7ca67f9 100644 --- a/workaround-stupid-build-system.diff +++ b/workaround-stupid-build-system.diff @@ -140,7 +140,7 @@ make shell prev libshell.a archive --- src/lib/libast/Mamfile -+++ src/lib/libast/Mamfile 2012-02-06 10:05:34.917933005 +0000 ++++ src/lib/libast/Mamfile 2012-02-20 12:00:37.157934600 +0100 @@ -5,7 +5,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS setv ARFLAGS rc setv AS as @@ -168,7 +168,7 @@ done lcgen generated make port/lc.tab done port/lc.tab -@@ -7282,64 +7282,37 @@ done ${INSTALLROOT}/lib/file/magic gener +@@ -7280,65 +7280,35 @@ done ${INSTALLROOT}/lib/file/magic gener make ${INSTALLROOT}/include/ast/fmtmsg.h prev comp/fmtmsg.h prev ast_lib.h @@ -186,10 +186,11 @@ exec - then rm -f 1.${COTEMP}.x exec - else mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/fmtmsg.h exec - fi - exec - } +-exec - } -exec - ;; -exec - esac - prev ${INSTALLROOT}/include/prototyped.h implicit + make ${INSTALLROOT}/include/prototyped.h implicit + done ${INSTALLROOT}/include/prototyped.h dontcare done ${INSTALLROOT}/include/ast/fmtmsg.h generated make ${INSTALLROOT}/include/ast/libgen.h prev comp/libgen.h @@ -208,7 +209,7 @@ exec - then rm -f 1.${COTEMP}.x exec - else mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/libgen.h exec - fi - exec - } +-exec - } -exec - ;; -exec - esac prev ${INSTALLROOT}/include/prototyped.h implicit @@ -230,7 +231,7 @@ exec - then rm -f 1.${COTEMP}.x exec - else mv 1.${COTEMP}.x ${INSTALLROOT}/include/ast/syslog.h exec - fi - exec - } +-exec - } -exec - ;; -exec - esac prev ast_namval.h implicit