2012-02-20 14:35:23 +00:00
committed by Git OBS Bridge
parent aaef2fedd6
commit cf8a770d37
16 changed files with 126 additions and 224 deletions

View File

@@ -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

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea89823ade1949c828e6012cf85f58aebcfe8cb9f31052370936e215a9b126a6
size 296877

3
INIT.2012-02-14.tar.bz2 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fedd8f2100f784dbcf60b1b6392d61c10902aaf2ff61a34134cd1ba83f4d2e11
size 297404

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2711f072573a7e69746fe8a1e88a72978e37b3b3097ff921aa6f23b624e76925
size 6377383

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:08d8ddd04a0cb983ac32ba15b28045d6a9c15f5171430d66f26ff5b9924a25f8
size 141200

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1ddaab5c6ae873e61e0706024abd57f0363891a8ad5bf026082c0706b7557665
size 1573400

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:334fc6d4e407cc8c9ffbcc6b4efdb3bb94da045126d608b7329f23b022f389de
size 1575644

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:318716d403b0b0f5be08848235122ab27d4c13f6daceca55cd61a41cd3c8cfb4
size 129260

View File

@@ -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
{

View File

@@ -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

View File

@@ -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

View File

@@ -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 <stdint.h>
@@ -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.h> atomic_cas_64 }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -53,6 +60,7 @@ elif aso note{ <atomic.h> atomic_cas_64
return atomic_cas_64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#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.h> atomic_cas_64
#endif
}
elif aso note{ <atomic.h> atomic_cas_32 }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -80,6 +89,7 @@ elif aso note{ <atomic.h> atomic_cas_32
return atomic_cas_32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#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.h> 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.h> atomic_cas_64 with -latomic }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -101,6 +112,7 @@ elif aso -latomic note{ <atomic.h> atomi
return atomic_cas_64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#define _REQ_atomic
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
@@ -122,6 +134,7 @@ elif aso -latomic note{ <atomic.h> atomi
#endif
}
elif aso note{ <atomic.h> atomic_cas_32 with -latomic }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -129,6 +142,7 @@ elif aso note{ <atomic.h> atomic_cas_32
return atomic_cas_32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#define _REQ_atomic
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
@@ -143,6 +157,7 @@ elif aso note{ <atomic.h> 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{ <atomic.h> cas64 }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -151,6 +166,7 @@ elif aso note{ <atomic.h> cas64 }end lin
return cas64(&i, 0, 1) != 0 || (atomic_add_32_nv(&j, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#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{ <atomic.h> cas64 }end lin
#endif
}
elif aso note{ <atomic.h> cas32 }end link{
+ #include <stdint.h>
#include <atomic.h>
int main()
{
@@ -178,6 +195,7 @@ elif aso note{ <atomic.h> cas32 }end lin
return cas32(&i, 0, 1) != 0 || (atomic_add_32_nv(&i, 1) != 1;-1)
}
}end && {
+ #include <stdint.h>
#include <atomic.h>
#define _aso_cas8(p,o,n) cas8(p,o,n)
#define _aso_inc8(p) (atomic_add_8_nv(p,1)-1)

View File

@@ -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;

View File

@@ -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))

View File

@@ -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;
+ }
}
/*

View File

@@ -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