.
OBS-URL: https://build.opensuse.org/package/show/shells/ksh?expand=0&rev=104
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
3
INIT.2012-02-14.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fedd8f2100f784dbcf60b1b6392d61c10902aaf2ff61a34134cd1ba83f4d2e11
|
||||
size 297404
|
||||
3
ast-base.2012-02-14.tar.bz2
Normal file
3
ast-base.2012-02-14.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2711f072573a7e69746fe8a1e88a72978e37b3b3097ff921aa6f23b624e76925
|
||||
size 6377383
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:08d8ddd04a0cb983ac32ba15b28045d6a9c15f5171430d66f26ff5b9924a25f8
|
||||
size 141200
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1ddaab5c6ae873e61e0706024abd57f0363891a8ad5bf026082c0706b7557665
|
||||
size 1573400
|
||||
3
ast-ksh.2012-02-14.tar.bz2
Normal file
3
ast-ksh.2012-02-14.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:334fc6d4e407cc8c9ffbcc6b4efdb3bb94da045126d608b7329f23b022f389de
|
||||
size 1575644
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:318716d403b0b0f5be08848235122ab27d4c13f6daceca55cd61a41cd3c8cfb4
|
||||
size 129260
|
||||
32
ifs-crash.sh
32
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
|
||||
{
|
||||
|
||||
34
ksh.changes
34
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
|
||||
|
||||
|
||||
19
ksh.spec
19
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
|
||||
|
||||
107
ksh93-aso.dif
107
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 <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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
76
ksh93.dif
76
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;
|
||||
+ }
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user