# # spec file for package ksh (Version 93t) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # norootforbuild Name: ksh BuildRequires: bind-libs bind-utils bison flex gdbm-devel glibc-devel libbz2-devel ncurses-devel procps psmisc pwdutils zlib-devel 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: 12 Summary: Korn Shell BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: INIT.2009-03-10.tar.bz2 Source1: ast-ksh.2009-03-10.tar.bz2 Source2: ast-open-locale.2008-07-25.tar.bz2 Source20: Agreement Source21: Warning Source22: libast.cflags Source30: rpmlintrc Patch: ksh93.dif Patch1: workaround-stupid-build-system.diff Patch2: ksh-qemu.patch Patch3: ksh93-shift_ijs.dif Patch4: ksh93-gmt2utc.dif Patch5: ksh93-uname.dif Patch6: ksh93-vi.dif Patch7: ksh93-profile.dif Patch8: ksh93-test.dif Patch9: ksh93-compat.dif Patch10: ksh93-suid_exec.dif Patch11: ksh93-signals.dif Patch12: ksh93-limits.dif Patch14: ksh93-ia64.dif Patch15: ksh93-s390.dif Patch16: ksh93-subshell.dif %global use_suid_exe 0 %global use_locale 0 %description The original Korn Shell. The ksh is an sh-compatible command interpreter that executes commands read from standard input or from a file. Authors: -------- David Korn Glenn Fowler Phong Vo %package -n ksh-devel License: Common Public License Version 1.0 (CPL1.0) Summary: Korn Shell development environment Group: Development/Libraries/C and C++ Requires: ksh = %{version}-%{release} AutoReqProv: on %description -n ksh-devel The package includes C header files and the static libraries together with the shared libraries for linking with other projects. Please be aware that the CPL licensed code can not be used within GPL licensed project. Authors: -------- David Korn Glenn Fowler Phong Vo %prep %setup -q -n ksh93 -T -c -a 0 -a 1 -a 2 find share/ \( -name chef -o -name fudd -o -name piglatin -o -name valley \) -a -type d |\ xargs -r rm -vrf find share/ ! \( -name libast -o -name libcmd -o -name libdll -o -name libshell \) -a -type f |\ xargs -r rm -vf find share/ -type d -a -empty | xargs -r rm -vrf find share/ -type d -a -empty | xargs -r rm -vrf %patch %patch1 %ifarch %arm %patch2 %endif %patch3 %patch4 %patch5 %patch6 %patch7 %patch8 %patch9 %patch10 %patch11 %patch12 %ifarch ia64 %patch14 %endif %ifarch s390 s390x %patch15 %endif %patch16 %build # This package failed when testing with -Wl,-as-needed being default. # So we disable it here, if you want to retest, just delete this comment and the line below. export SUSE_ASNEEDED=0 test -n "${!LC_*}" && unset "${!LC_*}" cflags () { local flag=$1; shift 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 } # LANG=POSIX export LANG # # If _you_ are knowing how to fix this in the autogenerated # sources of ksh/ast without breaking them, then let me know. # IGNORE="-Wno-missing-braces -Wno-unknown-pragmas -Wno-parentheses" IGNORE="$IGNORE -Wno-char-subscripts -Wno-uninitialized -Wno-implicit" # # 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="$FEATURE -DSH_CMDLIB_DIR=\\\"/%{_lib}/ast/bin\\\"" FEATURE="$FEATURE -DDEFSHELL=\\\"/bin/ksh\\\"" FEATURE="$FEATURE -DTHISPROG=\\\"/%{_lib}/ast/bin/suid_exec\\\"" # # echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 - if ./test64 ; then LARGEFILE="" else LARGEFILE="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" fi rm -f ./test64 case "$RPM_ARCH" in ia64) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" ;; s390) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" ;; ppc*) RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-O[s0-9]/-O}" ;; esac RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}"|sed -r 's/[[:blank:]]+-g[0-9]?//g') UNIVERSE=att 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 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE $LARGEFILE" RPM_OPT_FLAGS="$RPM_OPT_FLAGS $IGNORE $FEATURE" LDFLAGS="-lm" HOSTTYPE=${RPM_ARCH%%*-linux*} mam_cc_L=use mam_cc_OPTIMIZE=-pipe export mam_cc_L mam_cc_OPTIMIZE HOSTTYPE LDFLAGS RPM_OPT_FLAGS UNIVERSE for mam in $(find ${PWD}/ -name Mamfile); do sed -ri '/^exec.*\$\{CC\}/{ s/(\$\{CC\})/\1 \$\{RPM_OPT_FLAGS\}/g; }' $mam done bin/package make CC="$CC" root=$(echo ${PWD}/arch/linux*) test -d $root || exit 1 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 $? -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" ;; 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" ;; 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" ;; 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" ;; esac soname="-Wl,-soname,${lib}.so.${vers%.*},-stats" pushd ${root}/${base} $CC -shared $soname -o ${root}/lib/${lib}.so.${vers} ${obj} $link ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so.${vers%.*} ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so popd done nm -D ${root}/lib/libast.so | \ grep -E 'T[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \ awk '{print "-fno-builtin-"$3}' | \ sort -u | \ diff -u %{S:22} - || true base=src/cmd/ksh93 test=${PWD}/${base}/tests pushd ${root}/${base} rm -f libshell.a rm -f ${root}/bin/ksh 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") 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") 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 pushd ${test} sleep 5 LD_LIBRARY_PATH=${root}/lib PATH=$PATH:${root}/bin SHELL=${root}/bin/ksh ${root}/bin/ksh shtests popd pushd ${root}/bin set -- $(LD_LIBRARY_PATH=${root}/lib PATH=$PATH:${root}/bin shcomp --version 2>&1) eval version=\${$#} LD_LIBRARY_PATH=${root}/lib PATH=$PATH:. shcomp --nroff 2>&1 | \ sed 's/\(\.TH .*\)/\1 "2003-03-02" "" "Korn shell utilities"/' > ../man/man1/shcomp.1 popd popd %install root=$(echo ${PWD}/arch/linux*) test -d $root || exit 1 pushd $root || exit 1 mkdir -p %{buildroot}/bin mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}/%{_lib}/ast/bin mkdir -p %{buildroot}%{_includedir}/ast mkdir -p %{buildroot}%{_libdir}/ast mkdir -p %{buildroot}%{_mandir} mkdir %{buildroot}%{_mandir}/man1 mkdir %{buildroot}%{_mandir}/man3 %if %use_locale mkdir -p %{buildroot}%{_datadir}/locale %endif mkdir -p %{buildroot}%{_datadir}/ksh/fun mkdir -p %{buildroot}%{_sysconfdir}/permissions.d install bin/ksh %{buildroot}/%{_lib}/ast/bin/ install bin/shcomp %{buildroot}/%{_lib}/ast/bin/ %if %use_suid_exe install bin/suid_exec %{buildroot}/%{_lib}/ast/bin/ %endif ln -sf bin/ksh %{buildroot}/%{_lib}/ast/ksh ln -sf /bin/true %{buildroot}/bin/ksh 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/ for so in %{buildroot}/%{_lib}/ast/*.so.*.* ; do so=${so##*/} ln -sf /%{_lib}/ast/$so %{buildroot}%{_libdir}/ast/${so%%%%.*}.so done rm -f %{buildroot}%{_libdir}/ast/*.so.* install -m 0644 lib/*.a %{buildroot}%{_libdir}/ast/ install -m 0644 man/man1/sh.1 %{buildroot}%{_mandir}/man1/ksh.1 install -m 0644 man/man1/shcomp.1 %{buildroot}%{_mandir}/man1/shcomp.1 for man in man/man3/*.3 ; do man=${man##*/} ast=${man}ast install -m 0644 man/man3/${man} %{buildroot}%{_mandir}/man3/${ast} done install -m 0644 include/ast/* %{buildroot}%{_includedir}/ast/ popd %if %use_locale for msg in share/lib/locale/* ; do test -d $msg || continue mkdir -p %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES cp -vp ${msg}/LC_MESSAGES/* %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES/ done echo %%dir %{_datadir}/locale/C > ksh.lang echo %%dir %{_datadir}/locale/C/LC_MESSAGES >> ksh.lang find %{buildroot}/ -type f -o -type l | sed -r ' s:%{buildroot}:: s:(%{_datadir}/locale/)([^/_]+)(.*$):%%lang\(\2\) \1\2\3: s:^([^%%].*):: s:%%lang\(C\) :: /^ *$/d' >> ksh.lang %else > ksh.lang %endif cp lib/package/LICENSES/ast LICENSE mv src/cmd/ksh93/OBSOLETE src/cmd/ksh93/OBSOLETE.mm cat src/cmd/ksh93/builtins.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > Builtins cat src/cmd/ksh93/PROMO.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > PROMO cat src/cmd/ksh93/OBSOLETE.mm | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > OBSOLETE cat src/cmd/ksh93/sh.memo | sed 's/\\f5/\\fB/g;s/^\.H/\.P\n\.H/g' | troff -Tascii8 -t -mm | grotty -bou > MEMORANDUM cp %{S:21} . %if %use_suid_exe (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh) <<-EOF /%{_lib}/ast/bin/suid_exec root:root 4755 EOF (cat > %{buildroot}%{_sysconfdir}/permissions.d/ksh.paranoid) <<-EOF /%{_lib}/ast/bin/suid_exec root:root 0755 EOF %endif %post test -e etc/bash.bashrc && ln -sf bash.bashrc etc/ksh.kshrc || true if test -x %{_lib}/ast/bin/ksh ; then rm -f bin/ksh ln -sf /%{_lib}/ast/bin/ksh bin/ksh rm -f usr/bin/ksh ln -sf /%{_lib}/ast/bin/ksh usr/bin/ksh fi %postun if test ! -x %{_lib}/ast/bin/ksh ; then if test ! -x bin/pdksh ; then rm -f etc/ksh.kshrc fi if test ! -e bin/ksh ; then rm -f bin/ksh usr/bin/ksh fi fi %files -f ksh.lang %defattr(-,root,root) %if %use_suid_exe %{_sysconfdir}/permissions.d/ksh %{_sysconfdir}/permissions.d/ksh.paranoid %endif %doc LICENSE src/cmd/ksh93/COMPATIBILITY src/cmd/ksh93/RELEASE* %doc Builtins PROMO OBSOLETE MEMORANDUM %doc %{_mandir}/man1/*.1.gz %ghost %verify(not link) /bin/ksh %ghost %verify(not link) %{_bindir}/ksh %{_bindir}/rksh %{_bindir}/shcomp %dir /%{_lib}/ast %dir /%{_lib}/ast/bin /%{_lib}/ast/ksh /%{_lib}/ast/bin/ksh /%{_lib}/ast/bin/shcomp %if %use_suid_exe %attr(4755,root,root) /%{_lib}/ast/bin/suid_exec %endif /%{_lib}/ast/*.so.* %dir %{_datadir}/ksh %dir %{_datadir}/ksh/fun %{_datadir}/ksh/fun/* %files -n ksh-devel %defattr(-,root,root) %doc LICENSE Warning %dir %{_libdir}/ast/ %{_libdir}/ast/*.so %{_libdir}/ast/*.a %doc %{_mandir}/man3/* %{_includedir}/ast/ %changelog * Fri Jun 19 2009 coolo@novell.com - disable as-needed for this package as it fails to build with it * Mon May 25 2009 werner@suse.de - Assigning to SECONDS in a subshell causes crash (bnc#502622) * Mon Feb 16 2009 werner@suse.de - Update to 2009-03-10 beta test of ksh93t+ for bug fixes 09-03-10 If a variable that was left or right justified or zero-filled was changed with a typeset statement that was left or right justified or zero-filled, then the original justification no longer affects the result. 09-03-10 A bug in the handling of traps when the last command in a script is a subshell grouping command has been fixed. 09-03-03 A bug in which an expansion of the form ${!prefix@} could generate an exception after the return from a function has been fixed. - Update to 2009-02-02 beta test of ksh93t+ for bug fixes (bnc#472889): 09-02-02 A bug in restricted mode in which the value of ENV could be changed from within a function has been fixed. 09-02-02 A bug in which an erroneous message indicating that a process terminated with a coredump has been fixed. 09-02-02 The exit status when exit was called without an argument from a signal handler was incorrect and has been fixed. 09-02-02 A bug in which a function autoloaded in a subshell could cause a core dump when the subshell completed has been fixed. 09-02-02 A bug in which 2>&1 inside a command substitution wasn't working correctly has been fixed. 09-02-02 A bug in the call stack of arithmetic function with 2 args returning int has been fixed. 09-01-30 A bug in which 'eval print \$0' inside a function was giving the wrong value for $0 has been fixed. 09-01-28 A bug in which a command substitution could return an exit status of 127 when the pipefail option is enabled has been fixed. * Tue Feb 10 2009 werner@suse.de - Update to 2009-01-20 beta test of ksh93t+ for bug fixes (bnc#472889): 09-01-20 A bug in which the exit status specified in an exit trap was not used when a process terminated with a signal has been fixed. 09-01-19 A bug in which a signal whose default action is to terminate a process could be ingored when the process is running a sub-shell has been fixed. 09-01-19 A bug in which sending SIGWINCH to a process that reads from a pipe could cause a memory fault has been fixed. 09-01-13 A bug in which background jobs and pipelines that were not waited for could, in rare instantes, cause the shell to go into an infinite loop or fail has been fixed. 09-01-06 A bug in indexed arrays of compound variables in which referencing non-existant sub-variable in an arithmetic expression could cause the sub-variable to be created has been fixed. 09-01-05 A bug in which the \ character did not escape extened regular expression pattern characters has been fixed. 08-12-24 A bug in which killing the last element of a pipe did not cause a write to the pipe to generate a SIGPIPE has been fixed. 08-12-19 A bug which could cause command substitution to hang when the last element of a pipeline in a command substitution was a built-in and the output was more that PIPE_BUFF. 08-12-18 A bug which occurs when a here documented marker embedded in a command substitution occurs on a buffer boundary has been fixed. 08-12-17 A bug in the output of typeset -p for variables that had attributes but did not have a value has been fixed. 08-12-16 A bug in which a name reference to a name reference variable that references an array element has been fixed. 08-12-16 A bug in which a variable given both the -A and -C attribute along with an initial assignment didn't work correctly has been fixed. - Initialize flag variable for job handling * Wed Dec 17 2008 werner@suse.de - Add workaround for bug in s390 architecture where named pipes aka fifos are in blocking mode which cause read failures in some sort of shell code test cases * Wed Dec 17 2008 werner@suse.de - Add workaround for bug in glibc with signbit() macro that is that the inlined part for long doubles does not work on IA64 * Mon Dec 15 2008 werner@suse.de - Switch to 2008-12-12 beta test of ksh93t+ for bug fixes: 08-12-10 The [[ -t fd ]] test was fixed to handle fd>9. 08-12-10 A bug where function stack misalignment could cause a bus error has been fixed. 08-12-07 A bug in typeset -m which occured when the target node was an associative array element has been fixed. 08-12-04 The sign of floating point zero is preserved across arithmetic function calls. 08-12-04 A bug that caused print(1) to produce garbled stdout/stderr output has been fixed. 08-12-04 A bug in which printf "%%d\n" "''" did not output the numerical value of the EURO symbol has been fixed. 08-11-20 A bug which could cause a core dump if a function compiled with shcomp was found has been fixed. 08-11-20 A bug in which jobs were not cleared from the jobs table for interactive shells when the pipefail option is on has been fixed. 08-11-11 A bug in which running a simple command & inside a function would not return the correct process id has been fixed. 08-11-06 A bug which could cause a core dump when the _ reference variable was used as an embedded type with a compound assignment has been fixed. * Tue Nov 04 2008 werner@suse.de - Switch to 2008-11-04 of ksh93t for a minor and minimal fix within the shell syntax parser. * 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. * Mon Oct 13 2008 werner@suse.de - Switch to 2008-10-09 beta test of ksh93t to fix a hang caused by a subshell command substitution with redirection and a crash in typeset with types that contain arrays of other types a members * Thu Oct 09 2008 werner@suse.de - Switch to 2008-10-01 beta test of ksh93t to fix several crashes - Do not install locale data as this do not work (bnc#433739) * Mon Sep 22 2008 werner@suse.de - Switch to 2008-09-21 beta test of ksh93t as this fix a crash - Change manual page: ksh uses socketpair(2) for pipes (bnc#422675) * Fri Sep 19 2008 werner@suse.de - Switch to 2008-09-17 beta test of ksh93t as this fix a crash - Install the shell functions pushd, popd, and dirs - Set FPATH accordingly to last change * Fri Sep 12 2008 werner@suse.de - Add compiler flags -fno-delete-null-pointer-checks and -fno-tree-vrp to avoid miss-compile at least of strdup(ast3) maybe caused by a missing volatile modifier - Update to release 2008-07-25 of ksh93t Changes in ksh 08-07-09 The typeset -C option can be used with arrays to indicate that each element should default to a compound variable. 08-07-08 The %%B format now outputs compound variables and arrays. The alternate flag # can be used to cause output into a single line. 08-06-23 KSH_VERSION added as a name reference to .sh.version. 08-06-20 type now outputs 'special builtin' for special builtins. 08-06-16 When typeset -p is followed by variable names, it now displays the attributes names and values for the specific names. 08-06-13 The .sh.lineno variable has been added. When .sh.level is changed inside a DEBUG trap, the .sh.lineno contains the calling line number for the specified stack frame. 08-06-13 The .sh.level variable has been documented and now works. 08-06-11 The -C option has been added to read for reading compound command definitions from a file. 08-06-11 The . command is now permitted inside a compound command definition. The dot script can contain declaration commands and dot commands. 08-06-09 Add -C option to typeset so that typeset -C foo, is equivalent to foo=(). 08-06-09 Added -n warning message for typeset option orderings that are valid with ksh88 but not valid with ksh93, for example Lx5. 08-06-02 When defining a type, the typeset -r attribute causes this field to be required to be specified for each instance of the type and does not allow a default value. 08-05-22 The ceil function has been added to the math functions. 08-05-19 The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} to expand to the value (or subscripts) for array between sub1 and sub2 inclusive. For associative arrays, the range is based on location in the POSIX locale. The .. must be explicit and cannot result from an expansion. 08-05-15 The trap on SIGCLD is no longer triggered by the completion of the foreground job as with ksh88. 08-05-12 The unset built-in now returns non-zero when deleting an array subscript that is not set. 08-05-08 Changing the value of HISTFILE or HISTSIZE will cause the old history file to be close and reopened with the new name or size. 08-05-08 When FPATH is changed functions that were found via a path search will be searched for again. 08-05-07 The typeset -S option was added for variables outside type definitions to provide a storage class similar to C static inside a function defined with function name. 08-05-01 In multiline edit mode, the refresh operation will now clear the remaining portion of the last line. 08-04-30 The emacs and vi editors have been modified to handle window change commands as soon as they happen rather than waiting for the next command. 08-04-04 Choose the name _ as the sub-variable that holds type or instance specific data used by discipline functions. 08-03-20 Associative array assignments of the form ([name]=value ...) now allow ; as well as space tab and new line to separate elements. 08-03-17 --default option added to set(1) to handle set +o POSIX semantics. set --state added as a long name alias for set +o. 08-03-10 The new ${...} command substitution will treat the trailing } as a reserved word even if it is not at the beginning of a command, for example, ${ date }. 08-03-10 If the name of the ENV begins with /./ or ././ then the /etc/ksh.kshrc file will not be executed on systems that support this interactive initialization file. 08-02-29 The redirection operator >; has been added which for non-special files, generates the output in a temporary file and writes the specified file only of the command has completed successfully. 08-02-14 The typeset -a option can now optionally be followed by the name of an enumerication type which allows subscripts to be enumerations. 08-02-14 The enum builtin which creates enumeration types has been added. 08-02-12 The backoff logic when there are no more processes has been fixed. 08-02-07 The -X option has been added to typeset. The -X option creates a double precision number that gets displayed using the C99 %%a format. It can be used along with -l for long double. 08-01-31 The -T option to typeset has been added for creating typed variables. Also the -h and -S options have been added to typeset that are only applicable when defining a type. 08-01-31 The prefix expansion operator @ has been added. ${@name} expandes to the type of name or yields the attributes. 07-09-19 In both emacs and vi edit mode, the escape sequence \E[A (usually cursor up, when the cursor is at the end of the line will fetch the most recent line starting with the current line. 07-09-18 The value of ${!var} was correct when var was a reference to an array instance. 07-09-18 The value of ${!var[sub]} was not expanding to var[sub] and this was fixed. It also fixed ${name} where name is a name reference to var[sub]. 07-09-18 It is now legal to create a name reference without an initialization. It will be bound to a variable on the first assignment. 07-08-30 A discipline function can be invoked as ${x.foo} and is equivalent to ${ x.foo;} and can be invoked as x.foo inside ((...)). 07-07-03 The command substitution ${ command;} has been added. It behaves like $(command) except that command is executed in the current shell environment. The ${ must be followed by a blank or an operator. * Mon May 05 2008 werner@suse.de - Fix patch for option handling of echo builtin (bnc#385986) * Tue Mar 25 2008 werner@suse.de - Add missing link to file list * Mon Mar 17 2008 werner@suse.de - Work around a bug in former postun script * Thu Feb 14 2008 werner@suse.de - Add locale for ksh and libraries in ast format - Update to official bugfix release 2008-02-02 of ksh93s+ * A bug in which command substitution inside ((...)) could cause syntax errors or lead to core dumps has been fixed. * A bug in which discipline functions could be deleted when invoked from a subshell has been fixed. * A bug in which a command substitution consisting only of assignments was treated as a noop has been fixed. * A bug in which discipline functions invoked from withing a compound assignment could fail has been fixed. * Incomplete arithmetic assigments, for example ((x += )), now generate an error message. * A bug in which a set discipline defined for a variable before an array assignment could cause a core dump has been fixed. * A bug in on some systems in which exit status 0 is incorrectly returned by a process that catches the SIGCONT signal is stopped and then continued. * libast: string/strmatch.c: fix str="" pat="" sub values * libast: comp/conf.sh,conf.tab: handle /bin/sh \ in read data, redir subshell * libast: misc/magic.tab: amd-x68, 64-bit => x86-64 * libast: string/strnton.c,strntonll.c: add * libcmd: expr.c: fix <=0 type that broke substr * 1 * * Sun Jan 27 2008 coolo@suse.de - fix changelog * Tue Jan 08 2008 werner@suse.de - Update to private bugfix release 2008-01-06 ksh93s+ * A bug in on some systems in which exit status 0 is incorrectly returned by a process that catches the SIGCONT signal is stopped and then continued. * Fri Dec 21 2007 werner@suse.de - Update to private bugfix release 2007-12-15 of ksh93s+ * A race condition in which a program that has been stopped and then continued could loose the exit status has been fixed. * Code to check for file system out of space write errors for all writes has been added. * A bug in the macro expander for multibyte characters in which part of the character contains a file pattern byte has been fixed. * A bug in the emacs edit mode when multiline was set that output a backspace before the newline to the screen has been fixed. * A bug in which using TAB after a variable name listing expansion in the edit modes would cause the $ to disappear has been fixed. * A bug in which setting IFS to readonly could cause a subsequent command substitution to fail has been fixed. * A work around for a gcc 4.* C99 "feature" that could cause a job control shell to go into an infinite loop by adding the volatile attribute to some auto vars in functions that call setjmp(). * A bug in which the shell could read ahead on a pipe causing the standard input to be incorrectly positioned has been fixed. * A bug in which compound variable UTF-8 multibyte values were not expanded or traced properly has been fixed. * A bug where an unbalanced '[' in a command argument was not treated properly has been fixed. * A bug in which compatibility mode (no long option names) getopts(1) incorrectly set the value of OPTARG for flag options has been fixed. * A bug in which "hash -- name" treated "--" as an invalid name operand has been fixed. * typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility. * A bug in which the umask builtin mis-handled symbolic mode operands has been fixed. * Bugs in which shell arithmetic and the printf builtin mis-handled the signs of { -NaN -Inf -0.0 } have been fixed. * The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range of signals, determined at runtime, are now supported. * A bug in which creating an index array with only subscript 0 created only a simple variable has been fixed. * A bug in which appending to an indexed array using the form name+=([sub]=value) could cause the array to become an associative array has been fixed. * A bug in which typeset without arguments could coredump if a variable is declared as in indexed array and has no elements has been fixed. * A bug in which creating a local SECONDS variable with typeset in a function could corrupt memory has been fixed. * A bug which could cause a core dump when a script invoked by name from a function used compound variables has been fixed. * A bug in which printf %%d "'AB" did not diagnose unconverted characters has been fixed. * printf %%g "'A" support added for all floating point formats. * A bug in which typeset -f fun did not display the function definition when invoked in a subshell has been fixed. * The sleep builtin was fixed so that all floating point constants are valid operands. * A bug in which the locale was not being restored after LANG=value command has been fixed. * A bug in which a nameref to a compound variable that was local to the calling function would not expand correctly when displaying is value has been fixed. * A bug which cause cause a core dump if .sh.edchar returned 80 characters or more from a keyboard trap has been fixed. * A bug in which could cause a core dump when more than 8 file descriptors were in use has been fixed. * A bug in which creating a name reference to an instance of an array when the array name is itself a reference has been fixed. * The file completion code has been modified so that after an `=' in any word, each : will be considered a path delimiter. * A bug in which subprocess cleanup could corrupt the malloc() heap has been fixed. * A bug in which a name reference to an associatve array instance could cause the subscript to be evaluated as an arithmetic expression has been fixed. * A bug in which the value of an array instance was of a compound variable was not expanded correctly has been fixed. * A bug which could cause a core dump when a compound assignment was made to a compound variable element with a typeset -a attribute has been fixed. * A bug in which a trap ignored in a subshell caused it to be ignored by the parent has been fixed. * A bug in which the set command would generated erroneous output for a variable with the -RZ attribute if the variable name had been passed to a function has been fixed. * A bug in which read x[1] could core dump has been fixed. * A second bug in which after read x[sub] into an associative array of an element that hasn't been assigned could lead to a core dump has been fixed. * A bug in which a pipeline that completed correctly could have an exit status of 127 when pipefail was enabled has been fixed. * The SHOPT_AUDIT compile option has been added for keyboard logging. * libast: string/strelapsed.c: "0" is a valid elapsed time! * libast: sfio/sfreserve.c: preserve SF_SHARE sfrd() via sfreserve(f,0,0) * libast: comp/setlocale.c: add sjis_mbtowc() to work around [\~] translation * libast: features/signal.c: RT(1) .. RT(MAX-1) => RTMIN+1 .. RTMAX-1 * libast: features/float: favor sscanf() due to gnu strto[l]d() nan bugs * libast: regex/regcomp.c: fix REX_COLL_CLASS node allocation size * libast: sfio/sfcvt.c: use signbit() if available * libast: features/isoc99: _ISOC99_SOURCE tests * libast: port/astmath.c: add -DN=8 for signbit() * libast: sfio/sfstrtod.h: don't forget about -0.0 * libast: features/map.c: add { optopt optarg optind opterr } * libast: features/stdio: add _filbuf => _ast__filbuf * libast: comp/getsubopt.c: fix #undef that interfered with * libast: regex/regcomp.c: fix bug that missed ')' in ~(F)... * libast: port/astconf.c: fix CONF_ALLOC 16 bit overflow * libast: misc/fts.c: fix fts_close() to free the handle * libast: comp/setlocale.c: second and subsequent setlocale(*,"") reverts to previous * libast: path/pathprobe.c: add vfs ST_NOSUID check * libast: comp/conf.tab: add a few more xpg6 deferrals * libast: astsa: update to share with mainline src via _PACKAGE_astsa * libast: sfio/sfgetr.c: no limit on string stream line size * libast: sfio/sfextern.c: increase _Sfmaxr to 256*1024 * libast: misc/procopen.c: tighten up SIGCHLD logic between parent/child * libast: misc/signal.c: unblock SIG_DFL after setting handler, sig<0 => don't unblock * libast: misc/fs3d.c: no $LD_PRELOAD => no 3d and avoids invalid mount(2) call * libast: vmalloc: vmstat(0,0)==1 => region in use, drop VM_primary|VM_secondary * libast: misc/recstr.c: handle [lL] gobbled by strtol() * libast: path/pathprobe.c: handle '\r' in VERSION string * libast: regex/regcache.c: regcache(0,n,0) extends cache to size n (no shrinking) * libast: tm/tmdata.c: add 2005-12-31, drop 1999-12-31 * libcmd: cp.c: fix builtin state reinitialization * libcmd: rev.c: honor multibyte locales * libcmd: cp.c: open non-existent destination with O_EXCL * libcmd: stty.c: add -t,--terminal-group to list tty pgrp * libcmd: cksum.c: --silent -s => -S, -s == -x sys5 for gnu compatibility * libcmd: tee.c: drop ancient bsd compatibility "-" operand => SIGINT * libcmd: cksum.c: add SUM_LEGACY for -r * libcmd: cp.c: plug usage string memory leak by using per-builtin state * libcmd: cksum.c: add sumprint() default scale arg, --scale, --bsd for solaris * libcmd: chmod.c: add --show,-n * libcmd: wclib.c: bias checks for modern unix * libcmd: cat.c: fix --squeeze-blank to reduce multiple blank lines to *one* * libsum: sum.h, sumlib.c: add SUM_LEGACY for legacy output format * libsum: sum-sha1.c: reinstate Steve Reid's public domain implementation * libsum: sumlib.c: drop GPL sum-sha1.c * Fri Nov 23 2007 werner@suse.de - Add missed limit patch - Fix problem with endless loop due missing reset of the SIGTSTP singal handler after a failed program execution (bug #343111) * Tue Nov 20 2007 werner@suse.de - Fix bug in mbchar() macro to be able to run test for bug #341594 - Make option -n for echo builtin work even for AT&T universe * Fri Nov 16 2007 werner@suse.de - Fix the bug fix, that is decrement current size (bug #341594) * Fri Nov 16 2007 werner@suse.de - Enable signal handling for non-interactive mode (bug #339875) - Ignore signal QUIT always (bug #339875) - Ignore signal INT in case of waiting on a job (bug #339875) - Handle multibyte chars in variable expansion (bug #341594) * Mon Oct 29 2007 werner@suse.de - Work around a double -g problem which breaks debugging builds * Mon Sep 17 2007 werner@suse.de - Update to bugfix version 2007-06-28 of ksh93s+ (bug #263053) * In vi insert mode, ksh no longer emits a backspace character before the carriage return when the newline is entered * A bug in which pipefail would cause a command to return 0 when the pipeline was the last command and the failure happened on a component other than the last has been fixed * A bug in the expansion of ${var/pattern/rep} when pattern or rep contained a left parenthesis in single quotes has been fixed * The braces for a subscripted variable with ${var[sub]} are now optional when inside [[...]], ((...)) or as a subscript * A bug in brace expansion in which single and double quotes did not treat the comma as a literal character has been fixed * The -p option of whence now disables -v * Several bug fixes in compound variables and arrays of arrays have been made * A bug in which the %%B format of printf was affected by the locale has been fixed * A bug in which \ was not removed in the replacement pattern with ${var/pattern/rep} when it was not followed by \ or a digit has been fixed * A bug in which ksh -R file core dumped if no script was specified has been fixed, it now displays an error message * Added additional Solaris signals to signal table * A bug in which a pipeline with command substitution inside a function could cause a pipeline that invokes this function to hang when the pipefail option is on has been fixed * Added -q to whence * A small memory leak with each redirection of a non-builtin has been fixed - Fix many wrong detected limits for Linux like INT_MAX - Adapt FS3D file system: mount(2) of Linux uses five arguments - Fix bug in pointer arithmetic: after reallocation the addresses of the old area of an pointer array are changed (bug #300653) - Overflow in keytrap(): strncpy(3) does not append ASCII 0 if buffer is fully used - This updated version includes fix for bug #268488 - Enable the AT&T UNIVERSE for ksh as pdksh does, see bug #249783 * Wed Jun 20 2007 werner@suse.de - Fix pointer arithmetics within sh_trim() (bug #284611) * Tue Jun 19 2007 werner@suse.de - Correct bug ID (bug #284580) * Fri May 25 2007 werner@suse.de - Minor issuse like file permissions * Thu May 03 2007 werner@suse.de - Fix string conversion for high unsigned numbers (bug #268488) * Wed Apr 04 2007 werner@suse.de - Minor correction for builtin uname -i * Mon Apr 02 2007 werner@suse.de - Update to ksh93s+ (bug #239215) - Be sure that iffe can handle option -n even if bash is used * Fri Mar 30 2007 werner@suse.de - Disable AT&T UNIVERSE change * Wed Mar 28 2007 werner@suse.de - Reset exit status in case of catching SIGCONT (bug #254649) - Use the AT&T UNIVERSE for ksh as pdksh does (bug #249783) * Fri Jan 12 2007 werner@suse.de - Do not use binary OR instead of a logic OR (#233299) - Help the compile time and run time linker (#233299) * Mon Nov 20 2006 werner@suse.de - Avoid that a sub shell close required file descriptors (#222411) * Fri Nov 10 2006 werner@suse.de - On ia64 a cast of an integer to a character pointer and back to an long integer may results into an unaligned access, fix this in the SIGWINCH handler (bug #209643) * Tue Nov 07 2006 ro@suse.de - fix permissions for manpages * Mon Jul 10 2006 werner@suse.de - Don't trim backslash part of a multibyte character away (#189239) * Tue Jul 04 2006 werner@suse.de - Builtin cut: allow last line without newline (#189231) - Utility shcomp: fix segfault and install it (#189778) * Tue Jun 27 2006 werner@suse.de - No segmentation fault if ksh uses shared command libray (#188404) * Tue Jun 20 2006 werner@suse.de - Make it build even on new beta with new glibc headers * Wed May 31 2006 werner@suse.de - Fix segmentation fault in vi command line mode (bug #179917) * Mon May 29 2006 werner@suse.de - Make -i and -p option of uname builtin work (bug #178962) * Tue May 09 2006 werner@suse.de - Change PreRequire /bin/bash to /etc/bash.bashrc (bug #172633) * Mon May 08 2006 werner@suse.de - Correct order of souring order of the users profile and the system kshrc files (bug #172753) * Wed Apr 19 2006 werner@suse.de - Do not source system rc files if ksh is not interactive - Correct string from GMT to UTC for Universal Time Coordinates * Wed Apr 19 2006 werner@suse.de - Fix the patch for the multi byte characters (bug #163665) * Tue Apr 18 2006 werner@suse.de - Fix multi byte handling even for command line mode emacs/vi * Thu Apr 06 2006 werner@suse.de - Handle multi byte characters within macro expansion (bug #163665) * Mon Mar 27 2006 werner@suse.de - Update to ksh 93r * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires * Tue Dec 20 2005 werner@suse.de - Move manual pages of libast to an own subsection 3ast (#140295) * Fri Dec 16 2005 werner@suse.de - Make it build even with bash 3.1 and gcc 4.1.0 * Thu Nov 17 2005 uli@suse.de - disabled some tests on ARM (occasionally hang QEMU) * Mon Oct 24 2005 werner@suse.de - PreReqire the bash to get the system wide bash.bashrc * Mon Sep 19 2005 werner@suse.de - Make it compatible with parallel installed pdksh (bug #105126) * Mon Sep 19 2005 werner@suse.de - Avoid useless gcc warning of autogenerated sources * Tue Aug 16 2005 werner@suse.de - Move to group System/Shells (bug #104920) * Wed Apr 13 2005 werner@suse.de - Make it compile with gcc4 * Thu Mar 24 2005 werner@suse.de - Correct initialization for got_sigwinch variable * Wed Mar 23 2005 werner@suse.de - Update to release date 2005-02-02 (bug #18698, bug #74348) * Wed Mar 09 2005 werner@suse.de - Fix dead link in documentation (bug #71733) * Fri Feb 04 2005 werner@suse.de - More on winsize changes: now it works after a new prompt just like in the pdksh. * Fri Feb 04 2005 schwab@suse.de - Workaround broken build system and enable building shared libraries on x86-64. * Thu Feb 03 2005 werner@suse.de - Do not build shared version on x64_86 the ELF macro R_X64_86_32S breaks that a local symbol - Make it work on s390x * Thu Feb 03 2005 werner@suse.de - Make winsize changes work - Enable /etc/ksh.kshrc support - lchmod is not implemented under Linux - error_exit does never return - Enable shared libraries instead of the static ones - Add a warning about CPL versus GPL * Wed Feb 02 2005 werner@suse.de - Initial version of the AT&T ksh now under CPL1.0 (bug #3698)