Dr. Werner Fink 2009-12-11 15:15:17 +00:00 committed by Git OBS Bridge
parent e4cb6baf63
commit c20cca5a60
14 changed files with 301 additions and 167 deletions

View File

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

3
INIT.2009-12-06.tar.bz2 Normal file
View File

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

View File

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

View File

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

View File

@ -1,3 +1,116 @@
-------------------------------------------------------------------
Wed Dec 9 18:01:09 CET 2009 - werner@suse.de
- Update to 2009-12-06 beta test of ksh93t+ for bug fixes
09-12-04 A bug in which in some cases a trap in a function executed in
a subshell could trigger twice has been fixed.
09-12-03 A bug in which SHLVL exported with some attributes could cause
the shell to abort at startup has been fixed.
09-12-02 A bug with pipefail in which the shell could hang waiting for the
writer to complete before the last reader command has been fixed.
-------------------------------------------------------------------
Wed Dec 3 10:54:02 CET 2009 - werner@suse.de
- Update to 2009-11-30 beta test of ksh93t+ for bug fixes
09-11-30 A bug in which a trap could be inherited by the first element of
a pipeline when the command had more than 63 arguments that did
not contain any macro expansions has been fixed.
09-11-19 When read from a terminal was called from with a while or foo loop,
and an edit mode was on, a backspace or erase no longer will
overwrite the prompt.
09-11-17 Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2.
09-11-17 Inside a function, typeset foo.bar will bind foo to global variable
foo if local variable foo does not exist, instead of creating a
local variable.
09-11-17 "read -n1" from the terminal has been fixed to read exactly one character.
09-11-11 Job control now works for subshell commands, (...).
09-11-11 If set -e is on for an interractive shell errors in special builtins
now cause the shell to exit.
09-11-11 A bug in which an interrupt handler processed during the read builtin
when IFS did not contain a new line has been fixed.
09-11-09 A bug in which a variable that has been unset in a subshell and then
exported from that subshell does not show up in the environment
has been fixed.
09-11-02 ",2" is now a valid numeric constant for locales with
decimal_point=','.
09-11-02 A bug where "return" in .profile did not restore the shell state
has been fixed.
09-10-31 A bug that corrupted saved exit status when pids wrapped around has
been fixed.
09-10-26 A bug in { LANG LC_ALL LC_category } ordering has been fixed in -last.
-------------------------------------------------------------------
Fri Oct 30 16:23:36 CET 2009 - werner@suse.de
- Update to 2009-10-21 beta test of ksh93t+ for bug fixes
09-10-16 A bug where notification to libast that the environment has changed
has been fixed.
09-10-12 A bug in which a function loaded in a subshell could leave side
effects in the parent shell has been fixed.
09-10-12 A bug in converting a printf %d operand to a number when the operand
contains multiple subscripts for the same variable has been fixed.
09-10-09 A bug in the handling of the escape character \ in directory prefixes
in command completion has been fixed.
09-10-09 $PATH processing has been changed to delay dir stat() and .paths
lookup until the directory is needed in the path search.
09-09-28 Call the ast setlocale() intercept on unset too.
09-09-24 A bug in which LANG=foo; LC_ALL=foo; unset LC_ALL; did not revert
LC_CTYPE etc. to the LANG value has been fixed.
09-09-17 A bug in which unsetting SVLVL could cause a script invoked by
name without #! to core dump has been fixed.
09-09-16 A bug in which a pipeline in a here-document could hang when the
pipefail option was on has been fixed.
09-09-09 A bug in the processing of line joining in here documents which
occurred when a buffer began with <escape><new-line> has been fixed.
09-09-09 A leading ; with commands in a brace group or parenthesis group
no longer causes an error. It now is used for the "showme" option.
09-09-09 A bug in which a subshell containing a background process could
block until the background process completed has been fixed.
09-09-04 A bug in handing ${var[sub]}, where var is a nameref has been fixed.
09-09-03 A bug which caused an index array to have the wrong number of elements
when it was converted from a compound variable by adding an another
element has been fixed.
09-09-03 Specifying export for a compound variable now generates an error.
09-09-02 $"..." localizations strings are no longer recognized inside `...`.
09-09-01 A bug in the for loop optimizer in the handling of type static
variables has been fixed.
09-09-01 An error message is not displayed when * and @ are used as subscripts.
09-09-01 Several bugs in the processing for types that included an associative
array of another type has been fixed.
09-09-01 A bug in the tracing of [[ a < b ]] and [[ a > b ]] has been fixed.
09-08-26 The .sh.file variable was not being set for a script that was run
by name and didn't start with #! and this has been fixed.
09-08-25 A bug in which a function called to deeply from command substitution
did not display an error message has been fixed.
09-08-24 When processing profiles, ksh93 now violates the POSIX standard and
treats &> as a redirection operator similar to bash.
09-08-23 A bug in the handling of the trap on SIGPIPE that could lead to am
memory fault has been fixed.
09-08-21 A bug in the handling of the comma operator in arithmetic expressions
that could cause a core dump on some systems has been fixed.
09-08-20 A bug in which a compound variable containing an array of a type
that doesn't have any elements now expands correctly.
09-08-19 A bug which disabled function tracing inside a function after
a call to another function has been fixed.
09-08-19 A bug in which initializing a compound variable instance to another
compound variable by name has been fixed.
09-08-18 A bug in which compound variable instances could be lost after
an instance that invoked a type method discipline has been fixed.
09-08-18 A bug in which a discipline function for a type applied to an
array instance when invoked in a function ignored the subscript
has been fixed.
09-08-18 A scoping error with variables in arithmetic expression with
type variables when reference with a name reference has been fixed.
09-08-10 Several memory leaks were fixed primarily related to subshells.
09-08-06 A bug in which setting the trap on CHLD to ignore could cause
a script to hang has been fixed.
09-07-08 A bug in the processing of name reference assignments when it
contained pattern expansions with quoting has been fixed.
-------------------------------------------------------------------
Wed Aug 26 14:03:10 CEST 2009 - werner@suse.de

117
ksh.spec
View File

@ -19,18 +19,21 @@
Name: ksh
BuildRequires: bind-libs bind-utils bison flex gdbm-devel glibc-devel libbz2-devel ncurses-devel procps psmisc pwdutils zlib-devel
BuildRequires: bind-libs bind-utils bison flex gdbm-devel glibc-devel ncurses-devel procps psmisc pwdutils zlib-devel
%if %suse_version > 1020
BuildRequires: libbz2-devel
%endif
Url: http://www.research.att.com/~gsf/download/
License: Common Public License Version 1.0 (CPL1.0)
Group: System/Shells
PreReq: /bin/ln /bin/rm /etc/bash.bashrc /bin/true
AutoReqProv: on
Version: 93t
Release: 15
Release: 16
Summary: Korn Shell
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: INIT.2009-06-30.tar.bz2
Source1: ast-ksh.2009-06-30.tar.bz2
Source: INIT.2009-12-06.tar.bz2
Source1: ast-ksh.2009-12-06.tar.bz2
Source2: ast-open-locale.2008-07-25.tar.bz2
Source10: leak1.sh
Source11: leak2.sh
@ -53,8 +56,6 @@ Patch11: ksh93-signals.dif
Patch12: ksh93-limits.dif
Patch14: ksh93-ia64.dif
Patch15: ksh93-s390.dif
Patch16: ksh93-memleak.dif
Patch17: ksh93-pipe.dif
Patch42: ksh93-debugleaks.dif
%global use_suid_exe 0
%global use_locale 0
@ -121,8 +122,6 @@ find share/ -type d -a -empty | xargs -r rm -vrf
%patch14
%endif
%patch15
%patch16
%patch17
%if %debug_memleak
%patch42
%endif
@ -138,14 +137,24 @@ find share/ -type d -a -empty | xargs -r rm -vrf
case "${RPM_OPT_FLAGS}" in
*${flag}*) return
esac
if test -n "$1" && gcc -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
local var=$1; shift
eval $var=\${$var:+\$$var\ }$flag
fi
if test -n "$1" && g++ -Werror $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
local var=$1; shift
eval $var=\${$var:+\$$var\ }$flag
fi
test -z "$1" && return
case "$flag" in
-Wl,*)
set -o noclobber
echo 'int main () { return 0; }' > ldtest.c
if gcc -Werror $flag -o /dev/null -xc ldtest.c > /dev/null 2>&1 ; then
local var=$1; shift
eval $var=\${$var:+\$$var\ }$flag
fi
set +o noclobber
rm -f ldtest.c
;;
*)
if gcc -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
local var=$1; shift
eval $var=\${$var:+\$$var\ }$flag
fi
esac
}
#
LANG=POSIX
@ -160,7 +169,7 @@ find share/ -type d -a -empty | xargs -r rm -vrf
# Do not use -DSHOPT_SPAWN=1 and/or -DSHOPT_AMP=1 this would cause
# errors due race conditions while executing the test suite.
#
FEATURE="-DSHOPT_SYSRC=1 -DSHOPT_REMOTE=1 -DSHOPT_CMDLIB_BLTIN=1"
FEATURE="-DSHOPT_SYSRC=1 -DSHOPT_REMOTE=1 -DSHOPT_CMDLIB_BLTIN=1 -DSHOPT_CMDLIB_DIR=1"
FEATURE="$FEATURE -DSH_CMDLIB_DIR=\\\"/%{_lib}/ast/bin\\\""
FEATURE="$FEATURE -DDEFSHELL=\\\"/bin/ksh\\\""
FEATURE="$FEATURE -DTHISPROG=\\\"/%{_lib}/ast/bin/suid_exec\\\""
@ -182,16 +191,22 @@ find share/ -type d -a -empty | xargs -r rm -vrf
RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}"|sed -r 's/[[:blank:]]+-g[0-9]?//g')
UNIVERSE=att
LDFLAGS="-lm"
LDSOFLG=""
CC=gcc
cflags -std=gnu99 RPM_OPT_FLAGS
cflags -fPIC RPM_OPT_FLAGS
cflags @%{S:22} RPM_OPT_FLAGS
cflags -fno-strict-aliasing RPM_OPT_FLAGS
cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS
cflags -g RPM_OPT_FLAGS
cflags -pipe RPM_OPT_FLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--hash-size=16699 LDFLAGS
cflags -std=gnu99 RPM_OPT_FLAGS
cflags -fPIC RPM_OPT_FLAGS
cflags @%{S:22} RPM_OPT_FLAGS
cflags -fno-strict-aliasing RPM_OPT_FLAGS
cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS
cflags -g RPM_OPT_FLAGS
cflags -pipe RPM_OPT_FLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--hash-size=16699 LDFLAGS
cflags -Wl,-O2 LDSOFLG
cflags -Wl,-warn-common LDSOFLG
cflags -Wl,--as-needed LDSOFLG
cflags -Wl,--hash-size=8599 LDSOFLG
cflags -Wl,-rpath,/%{_lib}/ast LDSOFLG
RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE $LARGEFILE"
RPM_OPT_FLAGS="$RPM_OPT_FLAGS $IGNORE $FEATURE"
HOSTTYPE=${RPM_ARCH%%*-linux*}
@ -207,28 +222,29 @@ find share/ -type d -a -empty | xargs -r rm -vrf
log=${root}/lib/package/gen/make.out
test -s $log || exit 1
for lib in libast libcmd libdll libshell ; do
obj=$(grep -E "ar *cr *${lib}.a" $log | sed "s@+ *ar *cr *${lib}.a@@")
test -s ${root}/lib/${lib}.a || exit 1
obj=$(ar t ${root}/lib/${lib}.a)
test $? -eq 0 || exit 1
case "$lib" in
libshell)
base=src/cmd/ksh93
vers=$(grep ^VERSION ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -ldll -lcmd -last -lm -ldl"
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib $LDSOFLG $LDFLAGS -ldll -lcmd -last -lm -ldl"
;;
libdll)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -ldl -last"
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib $LDSOFLG -ldl -last"
;;
libcmd)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast -last"
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib $LDSOFLG -last"
;;
libast)
base=src/lib/$lib
vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast"
link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib $LDSOFLG"
;;
esac
soname="-Wl,-soname,${lib}.so.${vers%.*},-stats"
@ -251,33 +267,40 @@ find share/ -type d -a -empty | xargs -r rm -vrf
rm -f ${root}/bin/shcomp
ksh=$(grep -e '-o ksh' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o ksh@-o ${root}/bin/ksh@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
ksht=$(grep -e '-o ksh' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o ksh@-o ${root}/bin/ksh.test@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
test -n "${ksh}" || { echo build of ksh failed; exit 1; }
shcomp=$(grep -e '-o shcomp' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o shcomp@-o ${root}/bin/shcomp@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
shcompt=$(grep -e '-o shcomp' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o shcomp@-o ${root}/bin/shcomp.test@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
test -n "${shcomp}" || { echo build of shcomp failed; exit 1; }
suidex=$(grep -e '-o suid_exec' $log | tail -n 1 |\
sed "s@+ g\?cc@gcc@;s@-o shcomp@-o ${root}/bin/suid_exec@;s@[a-zA-Z0-9_/\.-]*lib\([a-z]\+\)\.a@-l\1@g;s@'@@g")
test -n "${suidex}" || { echo build of suidex failed; exit 1; }
${ksh} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${shcomp} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${suidex} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${ksht} -Wl,-rpath,${root}/lib
${shcompt} -Wl,-rpath,${root}/lib
${ksh} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${shcomp} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
${suidex} -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast
OPATH=$PATH
OSHELL=$SHELL
LD_LIBRARY_PATH=${root}/lib
PATH=$PATH:${root}/bin
SHELL=${root}/bin/ksh
export LD_LIBRARY_PATH PATH SHELL
SHELL=${root}/bin/ksh.test
SHCOMP=${root}/bin/shcomp.test
export PATH SHCOMP SHELL
pushd ${test}
${root}/bin/ksh shtests
${root}/bin/ksh %{S:10}
${root}/bin/ksh %{S:11}
${root}/bin/ksh -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10
${root}/bin/ksh.test shtests
${root}/bin/ksh.test %{S:10}
${root}/bin/ksh.test %{S:11}
${root}/bin/ksh.test -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10
popd
pushd ${root}/bin
PATH=$PATH:.
set -- $(shcomp --version 2>&1)
set -- $(shcomp.test --version 2>&1)
eval version=\${$#}
shcomp --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "2003-03-02" "" "Korn shell utilities"/' > ../man/man1/shcomp.1
shcomp.test --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "2003-03-02" "" "Korn shell utilities"/' > ../man/man1/shcomp.1
rm -v ksh.test shcomp.test
popd
SHELL=$OSHELL
PATH=$OPATH
@ -310,8 +333,9 @@ find share/ -type d -a -empty | xargs -r rm -vrf
ln -sf /bin/true %{buildroot}%{_bindir}/ksh
ln -sf /%{_lib}/ast/bin/ksh %{buildroot}%{_bindir}/rksh
ln -sf /%{_lib}/ast/bin/shcomp %{buildroot}%{_bindir}/shcomp
cp -a lib/*.so.* %{buildroot}/%{_lib}/ast/
cp -a fun/* %{buildroot}%{_datadir}/ksh/fun/
ln -sf ast %{buildroot}/%{_lib}/ksh
cp -a lib/*.so* %{buildroot}/%{_lib}/ast/
cp -a fun/* %{buildroot}%{_datadir}/ksh/fun/
for so in %{buildroot}/%{_lib}/ast/*.so.*.* ; do
so=${so##*/}
ln -sf /%{_lib}/ast/$so %{buildroot}%{_libdir}/ast/${so%%%%.*}.so
@ -400,7 +424,8 @@ fi
%if %use_suid_exe
%attr(4755,root,root) /%{_lib}/ast/bin/suid_exec
%endif
/%{_lib}/ast/*.so.*
/%{_lib}/ast/*.so*
/%{_lib}/ksh
%dir %{_datadir}/ksh
%dir %{_datadir}/ksh/fun
%{_datadir}/ksh/fun/*

View File

@ -10,8 +10,8 @@
-r /usr/shlib/libc.so /shlib/libc.so
do case $i in
--- src/lib/libast/features/map.c
+++ src/lib/libast/features/map.c 2007-03-30 18:21:16.084565107 +0200
@@ -60,10 +60,14 @@ main()
+++ src/lib/libast/features/map.c 2009-12-09 12:13:24.423429613 +0100
@@ -66,10 +66,14 @@ main()
#define _map_malloc 1
printf("\n");
printf("#define _map_libc 1\n");
@ -23,9 +23,9 @@
printf("#define dirname _ast_dirname\n");
+#endif
+#if _map_libc
#if !_lib_eaccess
printf("#undef eaccess\n");
printf("#define eaccess _ast_eaccess\n");
#if !_lib_execvpe
--- src/lib/libdll/features/dll
+++ src/lib/libdll/features/dll 2007-03-30 18:40:58.855596004 +0200
@@ -15,7 +15,7 @@ tst dll_DYNAMIC link{

View File

@ -1,27 +1,6 @@
--- src/lib/libast/tm/tmdata.c
+++ src/lib/libast/tm/tmdata.c 2006-04-19 15:52:53.000000000 +0000
@@ -54,7 +54,7 @@
"AM", "PM",
- "GMT", "UTC", "UCT", "CUT",
+ "UTC", "GMT", "UCT", "CUT",
"DST", "", "", "",
@@ -225,8 +225,8 @@
static Tm_zone_t zone[] =
{
- 0, "GMT", 0, ( 0 * 60), 0, /* UTC */
0, "UCT", 0, ( 0 * 60), 0, /* UTC */
+ 0, "GMT", 0, ( 0 * 60), 0, /* UTC */
0, "UTC", 0, ( 0 * 60), 0, /* UTC */
0, "CUT", 0, ( 0 * 60), 0, /* UTC */
"USA", "HST", 0, (10 * 60), 0, /* Hawaii */
--- src/lib/libast/man/tm.3
+++ src/lib/libast/man/tm.3 2006-04-19 15:55:42.000000000 +0000
@@ -70,7 +70,7 @@
@@ -70,7 +70,7 @@ are used to determine local time zone an
.PP
.L time_t
values are the number of seconds since the epoch,
@ -30,7 +9,7 @@
with leap seconds omitted.
.PP
The global variable
@@ -433,7 +433,7 @@
@@ -433,7 +433,7 @@ that includes the hours and minutes.
.B z
Time zone
.I SHHMM
@ -39,7 +18,7 @@
.I S
is
.B +
@@ -614,7 +614,7 @@
@@ -614,7 +614,7 @@ Meridian names: AM, PM.
.TP
.B 43-46
.B UTC
@ -50,7 +29,7 @@
Daylight savings time suffix names: DST.
--- src/lib/libast/man/tmx.3
+++ src/lib/libast/man/tmx.3 2006-04-19 15:54:55.000000000 +0000
@@ -59,7 +59,7 @@
@@ -59,7 +59,7 @@ are used to determine local time zone in
.PP
.L time_t
values are the number of seconds since the epoch,
@ -59,7 +38,7 @@
with leap seconds omitted.
.PP
The global variable
@@ -492,7 +492,7 @@
@@ -492,7 +492,7 @@ Meridian names: AM, PM.
.TP
.B 43-46
.B UTC
@ -68,3 +47,24 @@
.TP
.B 47-50
Daylight savings time suffix names: DST.
--- src/lib/libast/tm/tmdata.c
+++ src/lib/libast/tm/tmdata.c 2006-04-19 15:52:53.000000000 +0000
@@ -54,7 +54,7 @@ static char* format[] =
"AM", "PM",
- "GMT", "UTC", "UCT", "CUT",
+ "UTC", "GMT", "UCT", "CUT",
"DST", "", "", "",
@@ -230,8 +230,8 @@ static Tm_leap_t leap[] =
static Tm_zone_t zone[] =
{
- 0, "GMT", 0, ( 0 * 60), 0, /* UTC */
0, "UCT", 0, ( 0 * 60), 0, /* UTC */
+ 0, "GMT", 0, ( 0 * 60), 0, /* UTC */
0, "UTC", 0, ( 0 * 60), 0, /* UTC */
0, "CUT", 0, ( 0 * 60), 0, /* UTC */
0, "Z", 0, ( 0 * 60), 0, /* UTC */

View File

@ -1,21 +0,0 @@
| From: David Korn <dgk@research.att.com>
| To: werner@suse.de
| Subject: Re: Re: [ast-users] Crash with SIGPIPE trap...
|
| OK, now I get what is causing this. Here is a simpler fix
| that I think should work. If the stream is in a pool, then
| this just purges the top level so that it doesn't write to
| that level.
|
--- src/cmd/ksh93/sh/fault.c
+++ src/cmd/ksh93/sh/fault.c 2009-08-24 15:52:21.770401660 +0200
@@ -413,6 +413,9 @@ void sh_chktrap(void)
sh.sigflag[sig] &= ~SH_SIGTRAP;
if(trap=sh.st.trapcom[sig])
{
+ Sfio_t *fp;
+ if (sig==SIGPIPE && (fp=sfpool((Sfio_t*)0,sh.outpool,SF_WRITE)))
+ sfpurge(fp);
sh.oldexit = SH_EXITSIG|sig;
sh_trap(trap,0);
}

View File

@ -1,5 +1,5 @@
--- src/cmd/ksh93/edit/edit.c
+++ src/cmd/ksh93/edit/edit.c 2007-12-20 18:50:27.512968240 +0100
+++ src/cmd/ksh93/edit/edit.c 2007-12-20 17:50:28.000000000 +0000
@@ -28,6 +28,7 @@
*/
@ -7,9 +7,9 @@
+#include <ast_wchar.h>
#include <errno.h>
#include <ccode.h>
#include <ctype.h>
@@ -54,8 +55,20 @@
static char CURSOR_UP[20] = { ESC, '[', 'A', 0 };
#include "FEATURE/options"
@@ -56,8 +57,20 @@ static char CURSOR_UP[20] = { ESC, '[',
#if SHOPT_MULTIBYTE
-# define is_cntrl(c) ((c<=STRIP) && iscntrl(c))
@ -32,7 +32,7 @@
# define is_cntrl(c) iscntrl(c)
# define is_print(c) isprint(c)
--- src/cmd/ksh93/edit/emacs.c
+++ src/cmd/ksh93/edit/emacs.c 2007-12-20 18:50:27.512968240 +0100
+++ src/cmd/ksh93/edit/emacs.c 2007-12-20 17:50:28.000000000 +0000
@@ -62,6 +62,7 @@ One line screen editor for any program
*/
@ -41,7 +41,7 @@
#include "FEATURE/cmds"
#if KSHELL
# include "defs.h"
@@ -83,6 +84,9 @@ One line screen editor for any program
@@ -84,6 +85,9 @@ One line screen editor for any program
#if SHOPT_MULTIBYTE
@ -51,7 +51,7 @@
# define gencpy(a,b) ed_gencpy(a,b)
# define genncpy(a,b,n) ed_genncpy(a,b,n)
# define genlen(str) ed_genlen(str)
@@ -1434,11 +1438,19 @@ static void setcursor(register Emacs_t *
@@ -1473,11 +1477,19 @@ static void setcursor(register Emacs_t *
#if SHOPT_MULTIBYTE
static int print(register int c)
{
@ -72,7 +72,7 @@
}
#endif /* SHOPT_MULTIBYTE */
--- src/cmd/ksh93/edit/vi.c
+++ src/cmd/ksh93/edit/vi.c 2007-12-20 18:50:27.540971791 +0100
+++ src/cmd/ksh93/edit/vi.c 2007-12-20 17:50:28.000000000 +0000
@@ -28,6 +28,8 @@
* cbosgd!pds
-*/
@ -106,11 +106,11 @@
static int _isalph(int);
static int _ismetach(int);
--- src/cmd/ksh93/sh/macro.c
+++ src/cmd/ksh93/sh/macro.c 2007-12-20 18:50:27.572975848 +0100
@@ -1926,13 +1926,13 @@ static void mac_copy(register Mac_t *mp,
+++ src/cmd/ksh93/sh/macro.c 2007-12-20 17:50:28.000000000 +0000
@@ -2167,13 +2167,13 @@ static void mac_copy(register Mac_t *mp,
if(mp->pattern)
{
char *sp = "&|()";
char *sp = "&|()";
- while(c = *sp++)
+ while((c = *sp++))
{
@ -124,8 +124,8 @@
if(state[c]==0)
state[c] = S_PAT;
--- src/cmd/ksh93/sh/string.c
+++ src/cmd/ksh93/sh/string.c 2007-12-20 18:51:06.773946405 +0100
@@ -42,7 +42,7 @@
+++ src/cmd/ksh93/sh/string.c 2007-12-20 17:51:07.000000000 +0000
@@ -41,7 +41,7 @@
#endif
#if !_lib_iswprint && !defined(iswprint)
@ -134,7 +134,7 @@
#endif
@@ -250,7 +250,7 @@ void sh_trim(register char *sp)
@@ -249,7 +249,7 @@ void sh_trim(register char *sp)
if(sp)
{
dp = sp;
@ -144,7 +144,7 @@
#if SHOPT_MULTIBYTE
int len;
--- src/cmd/ksh93/tests/sjis.sh
+++ src/cmd/ksh93/tests/sjis.sh 2007-12-20 18:50:27.648985486 +0100
+++ src/cmd/ksh93/tests/sjis.sh 2007-12-20 17:50:28.000000000 +0000
@@ -0,0 +1,63 @@
+########################################################################
+# #
@ -210,7 +210,7 @@
+fi
+exit $err
--- src/lib/libast/comp/setlocale.c
+++ src/lib/libast/comp/setlocale.c 2007-12-20 18:50:27.680989544 +0100
+++ src/lib/libast/comp/setlocale.c 2007-12-20 17:50:28.000000000 +0000
@@ -32,6 +32,7 @@
#include "lclib.h"
@ -220,7 +220,7 @@
#include <ctype.h>
#include <mc.h>
--- src/lib/libast/comp/wc.c
+++ src/lib/libast/comp/wc.c 2007-12-20 18:50:27.716994109 +0100
+++ src/lib/libast/comp/wc.c 2007-12-20 17:50:28.000000000 +0000
@@ -26,6 +26,7 @@
*/
@ -230,7 +230,7 @@
#define STUB 1
--- src/lib/libast/features/wchar
+++ src/lib/libast/features/wchar 2007-12-20 18:50:27.748998166 +0100
+++ src/lib/libast/features/wchar 2007-12-20 17:50:28.000000000 +0000
@@ -1,5 +1,6 @@
set prototyped
-lib mbstowcs,wctomb,wcrtomb,wcslen,wcstombs,wcwidth stdlib.h stdio.h wchar.h
@ -266,12 +266,12 @@
extern int fwprintf(FILE*, const wchar_t*, ...);
extern int fwscanf(FILE*, const wchar_t*, ...);
--- src/lib/libast/include/ast.h
+++ src/lib/libast/include/ast.h 2007-12-20 18:50:27.781002225 +0100
+++ src/lib/libast/include/ast.h 2007-12-20 17:50:28.000000000 +0000
@@ -176,13 +176,16 @@ typedef struct
#define mbcoll() (ast.mb_xfrm!=0)
#define mbwide() (mbmax()>1)
-#define mbchar(p) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p++,ast.tmp_int)):(*(unsigned char*)(p++)))
-#define mbchar(p) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
#define mbinit() (mbwide()?(*ast.mb_towc)((wchar_t*)0,(char*)0,mbmax()):0)
#define mbsize(p) (mbwide()?(*ast.mb_len)((char*)(p),mbmax()):((p),1))
#define mbconv(s,w) (ast.mb_conv?(*ast.mb_conv)(s,w):((*(s)=(w)),1))
@ -280,14 +280,14 @@
-
+#define mbchar(p) ((mbsize(p)>1) ? \
+ (((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0) ? \
+ ((p+=ast.tmp_int),ast.tmp_wchar) : \
+ (*(unsigned char*)(p++))) : \
+ ({p+=ast.tmp_int;ast.tmp_wchar;}) : \
+ ({ast.tmp_int=*(unsigned char*)p;p+=ast.mb_sync+1;ast.tmp_int;})) : \
+ (*(unsigned char*)(p++)))
/*
* common macros
*/
--- src/lib/libast/regex/reglib.h
+++ src/lib/libast/regex/reglib.h 2007-12-20 18:50:27.813006282 +0100
+++ src/lib/libast/regex/reglib.h 2007-12-20 17:50:28.000000000 +0000
@@ -57,6 +57,7 @@ typedef struct regsubop_s
char re_rhs[1]; /* substitution rhs */
@ -297,8 +297,8 @@
#include <stk.h>
--- src/lib/libcmd/Mamfile
+++ src/lib/libcmd/Mamfile 2007-12-20 18:51:49.683387189 +0100
@@ -464,7 +464,7 @@ make cat.o
+++ src/lib/libcmd/Mamfile 2007-12-20 17:51:50.000000000 +0000
@@ -479,7 +479,7 @@ make cat.o
prev cat.c
meta cat.o %.c>%.o cat.c cat
prev cat.c

View File

@ -1,6 +1,6 @@
--- src/lib/libcmd/date.c
+++ src/lib/libcmd/date.c 2007-03-30 12:51:14.345910709 +0200
@@ -214,10 +214,19 @@ settime(const char* cmd, Time_t now, int
+++ src/lib/libcmd/date.c 2007-03-30 10:51:14.000000000 +0000
@@ -217,10 +217,19 @@ settime(void* context, const char* cmd,
if (!adjust && !network)
return tmxsettime(now);
argv = args;
@ -20,17 +20,17 @@
if (streq(astconf("UNIVERSE", NiL, NiL), "att"))
{
tmxfmt(buf, sizeof(buf), "%m%d%H" "%M%Y.%S", now);
@@ -232,6 +241,7 @@ settime(const char* cmd, Time_t now, int
@@ -235,6 +244,7 @@ settime(void* context, const char* cmd,
if (tm_info.flags & TM_UTC)
*argv++ = "-u";
}
+#endif
*argv++ = buf;
*argv = 0;
if (!procrun(s, args))
if (!sh_run(context, argv - args, args))
--- src/lib/libcmd/uname.c
+++ src/lib/libcmd/uname.c 2007-03-28 18:38:01.234930006 +0200
@@ -77,6 +77,7 @@ __STDPP__directive pragma pp:hide getdom
+++ src/lib/libcmd/uname.c 2007-03-28 16:38:01.000000000 +0000
@@ -79,6 +79,7 @@ __STDPP__directive pragma pp:hide getdom
#include <cmd.h>
#include <ctype.h>
@ -38,7 +38,7 @@
#include <proc.h>
#include "FEATURE/utsname"
@@ -84,9 +85,11 @@ __STDPP__directive pragma pp:hide getdom
@@ -86,9 +87,11 @@ __STDPP__directive pragma pp:hide getdom
#define MAXHOSTNAME 64
#if _lib_uname && _sys_utsname
@ -52,7 +52,7 @@
#endif
#if defined(__STDPP__directive) && defined(__STDPP__hide)
@@ -267,6 +270,9 @@ b_uname(int argc, char** argv, void* con
@@ -269,6 +272,9 @@ b_uname(int argc, char** argv, void* con
{
case 'a':
flags |= OPT_all|((1L<<OPT_ALL)-1);
@ -62,7 +62,7 @@
continue;
case 'b':
flags |= OPT_base;
@@ -323,7 +329,11 @@ b_uname(int argc, char** argv, void* con
@@ -325,7 +331,11 @@ b_uname(int argc, char** argv, void* con
sethost = opt_info.arg;
continue;
case ':':
@ -74,7 +74,7 @@
if (!streq(argv[0], s) && (!eaccess(s, X_OK) || !eaccess(s+=4, X_OK)))
{
argv[0] = s;
@@ -392,13 +402,49 @@ b_uname(int argc, char** argv, void* con
@@ -394,13 +404,49 @@ b_uname(int argc, char** argv, void* con
output(OPT_machine, ut.machine, "machine");
if (flags & OPT_processor)
{

View File

@ -187,6 +187,23 @@
v=$(getconf LIBPATH)
for v in ${v//,/ }
do v=${v#*:}
--- src/cmd/ksh93/tests/locale.sh
+++ src/cmd/ksh93/tests/locale.sh 2009-12-09 14:01:40.927429385 +0100
@@ -134,11 +134,11 @@
unset LC_CTYPE
export LANG=$locale
export LC_ALL=C
- command wc -C < $tmp/two_euro_chars.txt
+ command wc -m < $tmp/two_euro_chars.txt
unset LC_ALL
- command wc -C < $tmp/two_euro_chars.txt
+ command wc -m < $tmp/two_euro_chars.txt
export LC_ALL=C
- command wc -C < $tmp/two_euro_chars.txt
+ command wc -m < $tmp/two_euro_chars.txt
")
got=$*
[[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
--- src/cmd/ksh93/tests/path.sh
+++ src/cmd/ksh93/tests/path.sh 2008-09-11 18:02:46.000000000 +0200
@@ -228,7 +228,7 @@ builtin getconf

View File

@ -34,4 +34,4 @@ do
done
echo "[${0##*/}: leak count at $leak]"
((leak < 6)) || exit 1
((leak < 7)) || exit 1

View File

@ -1,7 +1,7 @@
--- src/cmd/INIT/Mamfile
+++ src/cmd/INIT/Mamfile 2008-02-14 13:08:37.000000000 +0100
@@ -5,7 +5,7 @@ setv AR ar
setv ARFLAGS cr
+++ src/cmd/INIT/Mamfile 2008-02-14 12:08:37.000000000 +0000
@@ -5,7 +5,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
setv ASFLAGS
-setv CC cc
@ -19,8 +19,8 @@
setv TAR tar
setv YACC yacc
--- src/cmd/INIT/iffe.sh
+++ src/cmd/INIT/iffe.sh 2008-02-14 13:15:59.000000000 +0100
@@ -1052,7 +1052,7 @@ case `(getopts '[-][123:xyz]' opt --xyz;
+++ src/cmd/INIT/iffe.sh 2008-02-14 12:15:59.000000000 +0000
@@ -1083,7 +1083,7 @@ case `(getopts '[-][123:xyz]' opt --xyz;
--*) echo $command: $1: unknown option >&2
exit 2
;;
@ -30,8 +30,8 @@
*) break
;;
--- src/cmd/INIT/mamake.c
+++ src/cmd/INIT/mamake.c 2008-02-14 13:08:37.000000000 +0100
@@ -117,7 +117,7 @@ USAGE_LICENSE
+++ src/cmd/INIT/mamake.c 2008-02-14 12:08:37.000000000 +0000
@@ -118,7 +118,7 @@ USAGE_LICENSE
#define set(b,o) ((b)->nxt=(b)->buf+(o))
#define use(b) (*(b)->nxt=0,(b)->nxt=(b)->buf)
@ -40,7 +40,7 @@
#define KEY(a,b,c,d) ((((unsigned long)(a))<<15)|(((unsigned long)(b))<<10)|(((unsigned long)(c))<<5)|(((unsigned long)(d))))
#define NOW ((unsigned long)time((time_t*)0))
#define ROTATE(p,l,r,t) ((t)=(p)->l,(p)->l=(t)->r,(t)->r=(p),(p)=(t))
@@ -335,14 +335,14 @@ report(int level, char* text, char* item
@@ -336,14 +336,14 @@ report(int level, char* text, char* item
*/
static void
@ -57,7 +57,7 @@
unlink(r->name);
if (state.ignore)
return;
@@ -1242,7 +1242,7 @@ run(Rule_t* r, register char* s)
@@ -1257,7 +1257,7 @@ run(Rule_t* r, register char* s)
if (x)
{
if (c = execute(s))
@ -66,7 +66,7 @@
if (status((Buf_t*)0, 0, r->name, &st))
{
r->time = st.st_mtime;
@@ -1608,7 +1608,7 @@ make(Rule_t* r)
@@ -1623,7 +1623,7 @@ make(Rule_t* r)
}
r->flags |= RULE_made;
if (!(r->flags & (RULE_dontcare|RULE_error|RULE_exists|RULE_generated|RULE_implicit|RULE_virtual)))
@ -75,7 +75,7 @@
break;
case KEY('e','x','e','c'):
r->flags |= RULE_generated;
@@ -1694,7 +1694,7 @@ verify(Dict_item_t* item, void* handle)
@@ -1709,7 +1709,7 @@ verify(Dict_item_t* item, void* handle)
Rule_t* r = (Rule_t*)item->value;
if ((r->flags & (RULE_active|RULE_error|RULE_made)) == RULE_active)
@ -85,9 +85,9 @@
}
--- src/cmd/ksh93/Mamfile
+++ src/cmd/ksh93/Mamfile 2008-09-11 16:45:17.978032831 +0200
@@ -7,7 +7,7 @@ setv AR ar
setv ARFLAGS cr
+++ src/cmd/ksh93/Mamfile 2008-09-11 14:45:18.000000000 +0000
@@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
setv ASFLAGS
-setv CC cc
@ -104,7 +104,7 @@
setv SILENT
setv TAR tar
setv YACC yacc
@@ -1372,7 +1372,7 @@ prev +ljobs
@@ -1394,7 +1394,7 @@ prev +ljobs
prev +li
prev ${mam_libsocket}
prev ${mam_libsecdb}
@ -113,7 +113,7 @@
done ksh generated
make shcomp
make shcomp.o
@@ -1396,7 +1396,7 @@ prev ${mam_libsocket}
@@ -1418,7 +1418,7 @@ prev ${mam_libsocket}
prev ${mam_libsecdb}
setv CC.DLL -UCC.DLL
setv SH_DICT -DSH_DICT="\"libshell\""
@ -123,14 +123,14 @@
make suid_exec
make suid_exec.o
--- src/lib/libast/Mamfile
+++ src/lib/libast/Mamfile 2008-02-14 13:08:37.000000000 +0100
@@ -5,7 +5,7 @@ setv AR ar
setv ARFLAGS cr
+++ src/lib/libast/Mamfile 2008-02-14 12:08:37.000000000 +0000
@@ -5,7 +5,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
setv ASFLAGS
-setv CC cc
+setv CC gcc
setv mam_cc_FLAGS ${mam_cc_DLL} -D_BLD_ast
setv mam_cc_FLAGS ${mam_cc_DLL} -D_BLD_ast
setv CCFLAGS ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${mam_cc_OPTIMIZE}?}
setv CCLDFLAGS ${-strip-symbols?1?${mam_cc_LD_STRIP}??}
@@ -27,7 +27,7 @@ setv NMAKE nmake
@ -142,7 +142,7 @@
setv SILENT
setv TAR tar
setv YACC yacc
@@ -913,7 +913,7 @@ make lcgen
@@ -954,7 +954,7 @@ make lcgen
make port/lcgen.c
prev std/stdio.h implicit
done port/lcgen.c
@ -151,7 +151,7 @@
done lcgen generated
make port/lc.tab
done port/lc.tab
@@ -7013,64 +7013,37 @@ done ${INSTALLROOT}/lib/file/magic gener
@@ -7131,64 +7131,37 @@ done ${INSTALLROOT}/lib/file/magic gener
make ${INSTALLROOT}/include/ast/fmtmsg.h
prev comp/fmtmsg.h
prev ast_lib.h
@ -223,14 +223,14 @@
prev ${INSTALLROOT}/include/prototyped.h implicit
done ${INSTALLROOT}/include/ast/syslog.h generated
--- src/lib/libcmd/Mamfile
+++ src/lib/libcmd/Mamfile 2008-02-14 13:08:37.000000000 +0100
@@ -7,7 +7,7 @@ setv AR ar
setv ARFLAGS cr
+++ src/lib/libcmd/Mamfile 2008-02-14 12:08:37.000000000 +0000
@@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
setv ASFLAGS
-setv CC cc
+setv CC gcc
setv mam_cc_FLAGS ${mam_cc_DLL}
setv mam_cc_FLAGS ${mam_cc_DLL}
setv CCFLAGS ${-debug-symbols?1?${mam_cc_DEBUG} -D_BLD_DEBUG?${mam_cc_OPTIMIZE}?}
setv CCLDFLAGS ${-strip-symbols?1?${mam_cc_LD_STRIP}??}
@@ -29,7 +29,7 @@ setv NMAKE nmake
@ -243,9 +243,9 @@
setv TAR tar
setv YACC yacc
--- src/lib/libdll/Mamfile
+++ src/lib/libdll/Mamfile 2008-02-14 13:08:37.000000000 +0100
@@ -7,7 +7,7 @@ setv AR ar
setv ARFLAGS cr
+++ src/lib/libdll/Mamfile 2008-02-14 12:08:37.000000000 +0000
@@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
setv ASFLAGS
-setv CC cc