diff --git a/INIT.2012-02-29.tar.bz2 b/INIT.2012-02-29.tar.bz2 deleted file mode 100644 index 3047b50..0000000 --- a/INIT.2012-02-29.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f60890b21701470900a61961a77743f8671b4ac5c4939ae4c7baf6a97a1a52b2 -size 299600 diff --git a/INIT.2012-08-01.tar.bz2 b/INIT.2012-08-01.tar.bz2 new file mode 100644 index 0000000..6a5e704 --- /dev/null +++ b/INIT.2012-08-01.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b854435757829f9fbc9d24242192e2056069862d9c463bf8dcfb76b1f094c8b +size 295820 diff --git a/ast-base.2012-02-29.tar.bz2 b/ast-base.2012-02-29.tar.bz2 deleted file mode 100644 index 2ca7f1d..0000000 --- a/ast-base.2012-02-29.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77e138e0fffeb21a2cf0aaa7c1cc4400870bf017812d8745b9da7a9432a9351f -size 8022544 diff --git a/ast-base.2012-08-01.tar.bz2 b/ast-base.2012-08-01.tar.bz2 new file mode 100644 index 0000000..82bc6c2 --- /dev/null +++ b/ast-base.2012-08-01.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81f4007679dad9a93b2a4ed241cbe2e86d1422ee3b74c4f905aaae1345070af2 +size 8035476 diff --git a/astksh_builtin_poll20120806_001.diff b/astksh_builtin_poll20120806_001.diff index ce85185..ae1c745 100644 --- a/astksh_builtin_poll20120806_001.diff +++ b/astksh_builtin_poll20120806_001.diff @@ -1,6 +1,49 @@ -diff -N -r -u original/src/cmd/ksh93/bltins/poll.c build_poll/src/cmd/ksh93/bltins/poll.c ---- src/cmd/ksh93/bltins/poll.c 1970-01-01 01:00:00.000000000 +0100 -+++ src/cmd/ksh93/bltins/poll.c 2012-08-07 05:13:40.057935800 +0200 +--- src/cmd/ksh93/Makefile ++++ src/cmd/ksh93/Makefile 2012-08-06 21:25:47.000000000 +0000 +@@ -161,6 +161,7 @@ DATAFILES = limits.c msg.c strdata.c tes + + shell$(RELEASE) $(VERSION) id=shell :LIBRARY: shell.3 nval.3 alarm.c cd_pwd.c cflow.c deparse.c \ + enum.c getopts.c hist.c misc.c print.c read.c sleep.c trap.c test.c \ ++ poll.c \ + typeset.c ulimit.c umask.c whence.c main.c nvdisc.c nvtype.c \ + arith.c args.c array.c completion.c defs.c edit.c expand.c regress.c \ + fault.c fcin.c history.c init.c io.c jobs.c lex.c macro.c name.c \ +--- src/cmd/ksh93/Mamfile ++++ src/cmd/ksh93/Mamfile 2012-08-06 21:25:47.000000000 +0000 +@@ -548,6 +548,22 @@ meta test.o %.c>%.o bltins/test.c test + prev bltins/test.c + exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_API_ast=20100309 -D_PACKAGE_ast -D_BLD_shell -DSHOPT_DYNAMIC -DSHOPT_MULTIBYTE -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DKSHELL -c bltins/test.c + done test.o generated ++ ++make poll.o ++make bltins/poll.c ++prev ${PACKAGE_ast_INCLUDE}/tmx.h implicit ++prev FEATURE/poll implicit ++prev FEATURE/externs implicit ++prev include/builtins.h implicit ++prev include/io.h implicit ++prev ${PACKAGE_ast_INCLUDE}/error.h implicit ++prev include/defs.h implicit ++done bltins/poll.c ++meta poll.o %.c>%.o bltins/poll.c test ++prev bltins/poll.c ++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_API_ast=20100309 -D_PACKAGE_ast -D_BLD_shell -DSHOPT_DYNAMIC -DSHOPT_MULTIBYTE -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_DYNAMIC -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DKSHELL -c bltins/poll.c ++done poll.o generated ++ + make typeset.o + make bltins/typeset.c + prev FEATURE/dynamic implicit +@@ -1328,7 +1344,7 @@ meta hexpand.o %.c>%.o edit/hexpand.c he + prev edit/hexpand.c + exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_HISTEXPAND -DSHOPT_EDPREDICT -DSHOPT_MULTIBYTE -DKSHELL -DSHOPT_ESH -DSHOPT_VSH -D_PACKAGE_ast -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -D_BLD_shell -D_API_ast=20100309 -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -c edit/hexpand.c + done hexpand.o generated +-exec - ${AR} rc libshell.a alarm.o cd_pwd.o cflow.o deparse.o enum.o getopts.o hist.o misc.o print.o read.o sleep.o trap.o test.o typeset.o ulimit.o umask.o whence.o main.o nvdisc.o nvtype.o arith.o args.o array.o completion.o defs.o edit.o expand.o regress.o fault.o fcin.o ++exec - ${AR} rc libshell.a alarm.o cd_pwd.o cflow.o deparse.o enum.o getopts.o hist.o misc.o poll.o print.o read.o sleep.o trap.o test.o typeset.o ulimit.o umask.o whence.o main.o nvdisc.o nvtype.o arith.o args.o array.o completion.o defs.o edit.o expand.o regress.o fault.o fcin.o + exec - ${AR} rc libshell.a history.o init.o io.o jobs.o lex.o macro.o name.o nvtree.o parse.o path.o string.o streval.o subshell.o tdump.o timers.o trestore.o waitevent.o xec.o env.o limits.o msg.o strdata.o testops.o keywords.o options.o signals.o aliases.o builtins.o variables.o lexstates.o emacs.o vi.o hexpand.o + exec - (ranlib libshell.a) >/dev/null 2>&1 || true + done libshell.a generated +--- src/cmd/ksh93/bltins/poll.c ++++ src/cmd/ksh93/bltins/poll.c 2012-08-07 03:13:40.000000000 +0000 @@ -0,0 +1,717 @@ +/*********************************************************************** +* * @@ -719,10 +762,9 @@ diff -N -r -u original/src/cmd/ksh93/bltins/poll.c build_poll/src/cmd/ksh93/blti + + return(retval); +} -diff -N -r -u original/src/cmd/ksh93/data/builtins.c build_poll/src/cmd/ksh93/data/builtins.c ---- src/cmd/ksh93/data/builtins.c 2012-06-19 10:02:12.000000000 +0200 -+++ src/cmd/ksh93/data/builtins.c 2012-08-06 23:25:47.431435123 +0200 -@@ -109,6 +109,7 @@ +--- src/cmd/ksh93/data/builtins.c ++++ src/cmd/ksh93/data/builtins.c 2012-08-06 21:25:47.000000000 +0000 +@@ -109,6 +109,7 @@ const struct shtable3 shtab_builtins[] = #endif /* JOBS */ "false", NV_BLTIN|BLT_ENV, bltin(false), "getopts", NV_BLTIN|BLT_ENV, bltin(getopts), @@ -730,10 +772,9 @@ diff -N -r -u original/src/cmd/ksh93/data/builtins.c build_poll/src/cmd/ksh93/da "print", NV_BLTIN|BLT_ENV, bltin(print), "printf", NV_BLTIN|BLT_ENV, bltin(printf), "pwd", NV_BLTIN, bltin(pwd), -diff -N -r -u original/src/cmd/ksh93/include/builtins.h build_poll/src/cmd/ksh93/include/builtins.h ---- src/cmd/ksh93/include/builtins.h 2012-01-10 20:11:54.000000000 +0100 -+++ src/cmd/ksh93/include/builtins.h 2012-08-06 23:25:47.432435170 +0200 -@@ -100,6 +100,7 @@ +--- src/cmd/ksh93/include/builtins.h ++++ src/cmd/ksh93/include/builtins.h 2012-08-06 21:25:47.000000000 +0000 +@@ -100,6 +100,7 @@ extern int b_wait(int, char*[],Shbltin_t extern int b_whence(int, char*[],Shbltin_t*); extern int b_alarm(int, char*[],Shbltin_t*); @@ -741,55 +782,8 @@ diff -N -r -u original/src/cmd/ksh93/include/builtins.h build_poll/src/cmd/ksh93 extern int b_print(int, char*[],Shbltin_t*); extern int b_printf(int, char*[],Shbltin_t*); extern int b_pwd(int, char*[],Shbltin_t*); -diff -N -r -u original/src/cmd/ksh93/Makefile build_poll/src/cmd/ksh93/Makefile ---- src/cmd/ksh93/Makefile 2012-06-19 09:46:54.000000000 +0200 -+++ src/cmd/ksh93/Makefile 2012-08-06 23:25:47.432435170 +0200 -@@ -161,6 +161,7 @@ - - shell$(RELEASE) $(VERSION) id=shell :LIBRARY: shell.3 nval.3 alarm.c cd_pwd.c cflow.c deparse.c \ - enum.c getopts.c hist.c misc.c print.c read.c sleep.c trap.c test.c \ -+ poll.c \ - typeset.c ulimit.c umask.c whence.c main.c nvdisc.c nvtype.c \ - arith.c args.c array.c completion.c defs.c edit.c expand.c regress.c \ - fault.c fcin.c history.c init.c io.c jobs.c lex.c macro.c name.c \ -diff -N -r -u original/src/cmd/ksh93/Mamfile build_poll/src/cmd/ksh93/Mamfile ---- src/cmd/ksh93/Mamfile 2012-07-27 18:05:35.000000000 +0200 -+++ src/cmd/ksh93/Mamfile 2012-08-06 23:25:47.432435170 +0200 -@@ -548,6 +548,22 @@ - prev bltins/test.c - exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_API_ast=20100309 -D_PACKAGE_ast -D_BLD_shell -DSHOPT_DYNAMIC -DSHOPT_MULTIBYTE -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DKSHELL -c bltins/test.c - done test.o generated -+ -+make poll.o -+make bltins/poll.c -+prev ${PACKAGE_ast_INCLUDE}/tmx.h implicit -+prev FEATURE/poll implicit -+prev FEATURE/externs implicit -+prev include/builtins.h implicit -+prev include/io.h implicit -+prev ${PACKAGE_ast_INCLUDE}/error.h implicit -+prev include/defs.h implicit -+done bltins/poll.c -+meta poll.o %.c>%.o bltins/poll.c test -+prev bltins/poll.c -+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -D_API_ast=20100309 -D_PACKAGE_ast -D_BLD_shell -DSHOPT_DYNAMIC -DSHOPT_MULTIBYTE -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_DYNAMIC -DSHOPT_HISTEXPAND -DERROR_CONTEXT_T=Error_context_t -DSHOPT_FIXEDARRAY -DSHOPT_ESH -DKSHELL -c bltins/poll.c -+done poll.o generated -+ - make typeset.o - make bltins/typeset.c - prev FEATURE/dynamic implicit -@@ -1328,7 +1344,7 @@ - prev edit/hexpand.c - exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Iinclude -I${PACKAGE_ast_INCLUDE} -DSHOPT_HISTEXPAND -DSHOPT_EDPREDICT -DSHOPT_MULTIBYTE -DKSHELL -DSHOPT_ESH -DSHOPT_VSH -D_PACKAGE_ast -DSHOPT_PFSH -DSHOPT_STATS -DSHOPT_NAMESPACE -DSHOPT_COSHELL -DSHOPT_DYNAMIC -D_BLD_shell -DERROR_CONTEXT_T=Error_context_t -D_API_ast=20100309 -DSHOPT_FIXEDARRAY -c edit/hexpand.c - done hexpand.o generated --exec - ${AR} rc libshell.a alarm.o cd_pwd.o cflow.o deparse.o enum.o getopts.o hist.o misc.o print.o read.o sleep.o trap.o test.o typeset.o ulimit.o umask.o whence.o main.o nvdisc.o nvtype.o arith.o args.o array.o completion.o defs.o edit.o expand.o regress.o fault.o fcin.o -+exec - ${AR} rc libshell.a alarm.o cd_pwd.o cflow.o deparse.o enum.o getopts.o hist.o misc.o poll.o print.o read.o sleep.o trap.o test.o typeset.o ulimit.o umask.o whence.o main.o nvdisc.o nvtype.o arith.o args.o array.o completion.o defs.o edit.o expand.o regress.o fault.o fcin.o - exec - ${AR} rc libshell.a history.o init.o io.o jobs.o lex.o macro.o name.o nvtree.o parse.o path.o string.o streval.o subshell.o tdump.o timers.o trestore.o waitevent.o xec.o env.o limits.o msg.o strdata.o testops.o keywords.o options.o signals.o aliases.o builtins.o variables.o lexstates.o emacs.o vi.o hexpand.o - exec - (ranlib libshell.a) >/dev/null 2>&1 || true - done libshell.a generated -diff -N -r -u original/src/cmd/ksh93/tests/builtin_poll.sh build_poll/src/cmd/ksh93/tests/builtin_poll.sh ---- src/cmd/ksh93/tests/builtin_poll.sh 1970-01-01 01:00:00.000000000 +0100 -+++ src/cmd/ksh93/tests/builtin_poll.sh 2012-08-07 03:22:34.753348550 +0200 +--- src/cmd/ksh93/tests/builtin_poll.sh ++++ src/cmd/ksh93/tests/builtin_poll.sh 2012-08-07 01:22:35.000000000 +0000 @@ -0,0 +1,100 @@ +######################################################################## +# # diff --git a/ksh-qemu.patch b/ksh-qemu.patch index c0cd53d..82d2609 100644 --- a/ksh-qemu.patch +++ b/ksh-qemu.patch @@ -1,6 +1,6 @@ --- src/lib/libast/features/lib -+++ src/lib/libast/features/lib 2007-03-28 17:49:29.241351031 +0200 -@@ -90,27 +90,6 @@ tst lib_poll_fd_1 note{ fd is first arg ++++ src/lib/libast/features/lib 2007-03-28 15:49:29.000000000 +0000 +@@ -92,27 +92,6 @@ tst lib_poll_fd_1 note{ fd is first arg } }end @@ -28,7 +28,7 @@ exp _lib_poll _lib_poll_fd_1||_lib_poll_fd_2 tst lib_poll_notimer note{ poll with no fds ignores timeout }end execute{ -@@ -224,74 +203,6 @@ tst real_vfork note{ vfork child shares +@@ -241,74 +220,6 @@ tst real_vfork note{ vfork child shares } }end diff --git a/ksh.changes b/ksh.changes index 5567ef0..8270d68 100644 --- a/ksh.changes +++ b/ksh.changes @@ -1,3 +1,235 @@ +------------------------------------------------------------------- +Thu Feb 7 13:56:58 UTC 2013 - werner@suse.de + +- Do not use Shift-JIS work around with UTF-8 + +------------------------------------------------------------------- +Tue Feb 5 17:41:08 UTC 2013 - werner@suse.de + +- Update to 2012-08-01 of ksh93u+ for bugfix version + 12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep) + that read from stdin has been fixed. + 12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed. + 12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr. + 12-07-23 A scoping error with namrefs to compound associative arrays has + been fixed. + 12-07-20 A bug where builtin -d /path/foo deleted foo has been fixed. + 12-07-18 A bug in which /dev/stdout did not work in command substitution on + some systems has been fixed. + 12-07-17 A bug in which the restricted option set in a subshell prevented + some variables from getting restored when the subshell completed + has been fixed. + 12-07-09 A bug in which the directory is not restored after a subshell changes + the name of the directory for subshells executed in the same process + has been fixed. + 12-07-09 A bug in which file descriptors created with {n}< file were not being + closed has been fixed. + 12-07-09 The 12-04-04 fix for cd .. was not correct causing cd /etc;cd .. to + remain in /etc. This has been fixed. + 12-07-02 A bug in which builtin name did now work for builtins found in a + library added by builtin -f lib has been fixed. + 12-07-02 A bug in the edit modes which after a directory did not refresh + the input line has been fixed. + 12-07-02 A bug in which an exit status > 256 corresponding to a signal was + not returned by a function to indicate a signal exit has been fixed. + 12-06-28 Fix ulimit -a to list (Kibytes) instead of (kbytes). + 12-06-27 Fix unitialized data reference for as first char in --vi mode. + 12-06-26 The formatting of printf "%q" for multibyte locales has changed to + output using \u[xxx] format for valid wide characters. + 12-06-25 The size limit for read -N and read -n has been raised to INT_MAX. + 12-06-22 A bug in which an exit trap set in a subshell might not be triggered + when the last command was a simple executable has been fixed. + 12-06-22 A bug which could cause the shell to hang when a coprocess exits + while a command inside a command substitution is reading from it has + been fixed. + 12-06-21 +ksh new accepts for commands of the form for i; do;...;done + 12-06-19 Tab completion after a / when there is only one match not completes + with that match rather than generating a menu of matches. + 12-06-19 A bug in which patterns containing {...} where not processed + correctly inside ${var/pattern/string} has been fixed. + 12-06-18 Code modified to eliminate fts_notify variable. + 12-06-15 Change the .paths plugin/builtin library variable name from + BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware + -lcmd from causing older non-plugin_version() aware ksh to dump core. + 12-06-14 builtin without argument no longer lists .sh.tilde as a built-in. + 12-06-12 For assignments if the form x=(foo bar), foo is only check for an + alias if it is float, integer, compound, or nameref. + 12-06-12 +The shell supports 64 bit i-nodes even for 32 bit binaries. + 12-06-11 A bug wth >; redirection systems for which vfork() was the same a + fork() has been fixed. + 12-06-11 A bug in path lookup that ignored buffer boundaries has been fixed. + 12-06-08 typeset -a var and typeset -A var, first unset var when var is + a compound variable. + 12-06-08 A bug in which running shcomp on a program containg namespace + could core dump has been fixed. + 12-06-06 A bug in which unset of an associative array of compound variables + did not completely unset the variable has been fixed. + 12-06-06 A bug in which exporting left or right justfied fields could loose + the field width has been fixed. + 12-06-06 A bug on Solaris11 in which >; did not work for /dev/null was fixed. + 12-06-05 A race condition which occured when stopping a builtin command + invoked from a subshell has been fixed. + 12-06-05 A bug with appending elements to an empty indexed array has been + fixed. + 12-06-04 A bug in which continuing a stopped builtin could cause it to + terminate has been fixed. + 12-06-04 By default, builtins added at runtime will restore the current + directory if they are killed or stopped. + 12-06-04 A bug in handling \\ in read has been fixed. + 12-05-31 Use getrlimit64/setrlimit64 on systems that support it. + 12-05-31 Fix 64 bit big-endian arithmentic bug that mishandled nan and inf. + 12-05-31 Handle ECONNRESET like EPIPE. + 12-05-31 Change .paths parse to use only the last BUILTIN_LIB from the top + and treat BUILTIN_LIB value as a ':' separated list of lib names. + 12-05-29 Fix BUILTIN_LIB binding bug that ignored subsequent lookups. + 12-05-29 shtests: --nocompile omits the compile test and --compile does only + the compile test. + 12-05-25 A command subsitution containing a here-document that itself contains + a here-document no longer hangs. + 12-05-24 When the redirection operatory >; is directed to a symlink, it now + overwrites the file named by the link rather than the link. + 12-05-21 +Added printf formats %(type)q where type can be html, url, pattern, + ere, or csv. + 12-05-18 A bug with appending elements to an indexed array has been fixed. + 12-05-18 The exit status from getopts --man interactively was 0 instead of 2 + and has been fixed. + 12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has + been fixed. + 12-05-17 A bug with fixed size arrays which could cause a core dump has been + fixed. + 12-05-17 A bug in which the here-document <<< $(^V, the terminal was not + restored to insert mode after a character is entered has been fixed. + 12-04-27 A bug in which old attributes were not cleared when assigning a + value using typeset has been fixed. + 12-04-26 +Enabled multiline editing by default. set +o multiline can disable. + 12-04-25 The 12-04-17 PATH fix created a new bug which was fixed. + 12-04-25 Fixed a big memory leak problem in which unsetting compound variables + did not free all the space. + 12-04-25 A bug in which test ! ! ! was treated as an error has been fixed. + 12-04-24 A bug with print -v for a compound variable that contained fixed + arrays which prevented the output from being used again as input + has been fixed. + 12-04-23 +kill provides the STKFLT signal on systems that support it. + 12-04-23 +The -L option was added to kill. The -L option is the same as -l + except that without arguments the output format is in the form of + a select menu. + 12-04-23 A bug in which the exit status for an interactive shell was always + 0 has been fixed. + 12-04-20 Entering blank lines interactively no longer resets the exit status. + 12-04-18 A bug in file completion in which the second tab completion on a file + would list the completion rather than inserting the completion has + been fixed. + 12-04-18 A bug in which "${arr[@]:i:j}" and "${@:i:j}" generated the empty + string when i was a valid subscript and j was <=0 rather than + generating nothing has been fixed. + 12-04-17 A bug in which read -d delim from a terminal did not respond to + interrupt and did not termrinate when the delimiter was entered + has been fixed. + 12-04-17 A bug in which a directory in PATH containing a .paths file that + contains a line with FPATH=dir, where dir does not exist could + cause the path search to fail has been fixed. + 12-04-16 A bug in which $(trap -p) did not display traps such as ERR and + DEBUG that are not associated with signals has been fixed. + 12-04-11 A bug in which unsetting a variable did not unset attributes when + the variable did not have a value has been fixed. + 12-04-11 A bug in which read -A for an array whose index is an enumeration + type, lost the enumeration type has been fixed. + 12-04-10 Shared libraries loaded from a library named by a BUILTIN_LIB= found + in a .paths file found in a directory on PATH now add builtins that + are associated with the directory in PATH containing the .paths file. + 12-04-09 Increased I/O buffer sizes for better performance. + 12-04-09 A bug in which the leading 0 was stripped from $x, when $x contained + a heximadecimal constant inside an arithmetic expression inside + a for or while loop. + 12-04-06 Modified namespaces to hand variabes FPATH, PATH, and OPTIND that + are defined in name spaces appropriately. This also fixed OPTIND + and OPTARG processing for functions. + 12-04-04 A bug in which cd .. fails when the current directory has been + renamed has been fixed. + 12-04-02 Made some namespace changes and added a regression test. + 12-03-30 A bug with namespaces in which PATH and FPATH set in a namespace was + not restored when leaving the namespace has been fixed. + 12-03-29 A bug in which appending an index array onto an array without elements + caused the first element to be 1 rather than 0 has been fixed. + 12-03-29 A bug which could cause a core dump when copying a large index array + has been fixed. + 12-03-28 The shell now generates an error message when the sizes with L, Z, and + R are > 32767 on 32 bit binaries instead of generating a core dump. + 12-03-28 A bug in left and right justification in which the width of invalid + characters was not taken as zero has been fixed. + 12-03-26 A bug in which typeset -p ref, when ref is a reference to an index + array element did not display the subscript has been fixed. + 12-03-23 A bug in lowercase and uppercase fields when expanding ${name:=val} + when name is the empty string has been fixed. + 12-03-22 A namespace bug in which a type t defined in namespace foo could not + be referenced outside the namespace as .foo.t has been fixed. + 12-03-22 A bug in name reference scoping in which a name function called from + another function is pass a name reference to a compound variable + instance to be created and the compound variable is in the global + scope. + 12-03-22 A bug in which ${ref[@}} did not behave like ${arr[i][@]} when + ref is a name reference to arr[i] has been fixed. + 12-03-21 A bug in which assigning a compound variable into arr[i], where + arr[i] is an array variable did not work correctly has been fixed. + 12-03-21 A bug with multi-dimenstional index arrays in which ${arr[i][j]} + could generate a bogus error message when i was > 9 has been fixed. + 12-03-21 A bug in which typeset v=foo, typeset -p v[0] generated a core dump + has been fixed. + 12-03-20 A bug in vi edit mode in which the sequence bar0il left the + cursor on the b rather than the a has been fixed. + 12-03-20 A bug which caused a core dump when defining a type with a field + as ' integer -a data=([0]=0)' has been fixed. + 12-03-19 Using typeset -a array when array is an associative arry not + generated an error message. + 12-03-19 typeset +a, typeset +A, and typeset +C not displays the variables + with the attributes a, A, and C respectively instead of an error. + 12-03-19 A bug in which typeset -pC, typeset -pa, and typeset -pA output all + variables rather than those of type C, a, or A only has been fixed. + 12-03-18 A bug in which unset foo where foo is a name reference to a compound + variable defined inside a function is not unset has been fixed. + 12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the + list of matches became empty has been fixed. + 12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax + error since a is not an assignment command. + 12-03-16 A bug in which an unset discipline from a variable defined in a + subshell is not invoked in the subshell has been fixed. + 12-03-08 The assignment typeset -a (x=1 y=2) now creates an index array + of two elements rathern than an array of one element which is + a compound variable. + 12-03-02 +The vi and emacs edit modes now list all the entries in a directory + when entering a for completion after a /. + 12-03-02 A bug in which a program that exits with value 12 when called + from a command substitution in which standard output has been + redirected caused the shell to hang has been fixed. + 12-03-01 A bug in which the shell could not parse [[ ']' == ~(E)[]] ]] + has been fixed. + 12-02-29 A bug in which ~user expanded first in a subshell prevented it + from expanding later in a program has been fixed. +- Remove our patches which are part of this update +- Re-add Shift-JIS patch to make it work again + ------------------------------------------------------------------- Wed Jan 30 11:17:34 UTC 2013 - werner@suse.de diff --git a/ksh.spec b/ksh.spec index 1cc3955..a3db03b 100644 --- a/ksh.spec +++ b/ksh.spec @@ -17,7 +17,7 @@ Name: ksh -%global date 2012-02-29 +%global date 2012-08-01 %global use_suid_exe 0 %if %suse_version > 1210 %global use_opt_bins 1 @@ -108,16 +108,17 @@ Patch21: ksh93-vm.dif Patch22: ksh93-limit-name-len.dif Patch23: ksh93-foreground-prgrp.dif Patch24: ksh93-builtin.dif -Patch25: ksh93-vmleak.dif # PATCH-FIX-UPSTREAM ksh93-read-dont-ignore-esc.dif [bnc#765171] -Patch26: ksh93-read-dont-ignore-esc.dif +# is part of ksh93u+ 2012-06-28 # PATCH-EXTEND-UPSTREAM astksh_builtin_poll20120806_001.diff [bnc#779888] Patch27: astksh_builtin_poll20120806_001.diff # PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266] Patch28: ksh93-env.dif # PATCH-FIX-UPSTREAM ksh93-zerofill.dif [bnc#785360] Patch29: ksh93-zerofill.dif -# PATCH-FIX-UPSTREAM ksh93-pathtemp.dif [bnc#786134] +# PATCH-EXTEND-UPSTREAM ksh93-pathtemp.dif [bnc#786134] +# the fix is part of ksh93u+ 2012-06-28 +# nevertheless the /dev/shm extension is useful Patch30: ksh93-pathtemp.dif # PATCH-FIX-UPSTREAM ksh93-dttree-crash.dif [bnc#795324] Patch31: ksh93-dttree-crash.dif @@ -201,8 +202,6 @@ fi %patch22 %patch23 %patch24 -%patch25 -%patch26 %patch27 %patch28 %patch29 @@ -316,14 +315,15 @@ fi # Do not use -DSHOPT_SPAWN=1 and/or -DSHOPT_AMP=1 this would cause # errors due race conditions while executing the test suite. # - feature=${TMPDIR:-/tmp}/feature.h + feature=${PWD}/.feature.h set -C (cat > $feature)<<-'EOF' #define SHOPT_FS_3D 0 #define SHOPT_SYSRC 1 #define SHOPT_REMOTE 1 #define SHOPT_CMDLIB_BLTIN 1 - #define SHOPT_CMDLIB_DIR 1 + #define SHOPT_CMDLIB_HDR + #define SHOPT_CMDLIB_DIR "/%{_lib}/ast/bin" #define SH_CMDLIB_DIR "/%{_lib}/ast/bin" #define THISPROG "/%{_lib}/ast/bin/suid_exec" #define _AST_std_malloc 0 @@ -425,8 +425,9 @@ fi # by this library simply to avoid that gcc will overwrites those with # its own builtin functions. # - bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" + bin/package view root=$(echo ${PWD}/arch/linux*) + bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin -I${root}/include" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" test -d $root || exit 1 log=${root}/lib/package/gen/make.out test -s $log || exit 1 @@ -448,7 +449,7 @@ fi ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so popd done - nobuiltin=${TMPDIR:-/tmp}/nobuiltin + nobuiltin=${PWD}/.nobuiltin nm -D ${root}/lib/libast.so | \ grep -E 'T[[:blank:]](_ast_)?(str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \ sed -r 's/[[:xdigit:]]+[[:blank:]]+T[[:blank:]]+(_ast_)?([^[:blank:]]*)/-fno-builtin-\2/' | \ @@ -465,7 +466,8 @@ fi *) cflags @$nobuiltin RPM_OPT_FLAGS esac - bin/package make CCFLAGS="$RPM_OPT_FLAGS" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" + export > .env + bin/package make CCFLAGS="$RPM_OPT_FLAGS -I${root}/include" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC" root=$(echo ${PWD}/arch/linux*) test -d $root || exit 1 log=${root}/lib/package/gen/make.out diff --git a/ksh93-builtin.dif b/ksh93-builtin.dif index 6953279..3ba5953 100644 --- a/ksh93-builtin.dif +++ b/ksh93-builtin.dif @@ -1,6 +1,6 @@ --- src/cmd/builtin/pty.c -+++ src/cmd/builtin/pty.c 2012-02-13 13:35:02.577933517 +0000 -@@ -215,6 +215,12 @@ mkpty(int* master, int* slave) ++++ src/cmd/builtin/pty.c 2013-02-01 15:59:52.697952156 +0000 +@@ -216,6 +216,12 @@ mkpty(int* master, int* slave) #if !_lib_openpty char* sname; #endif @@ -13,7 +13,7 @@ /* * some systems hang hard during the handshake * if you know why then please let us know -@@ -237,6 +243,12 @@ mkpty(int* master, int* slave) +@@ -238,6 +244,12 @@ mkpty(int* master, int* slave) error(-1, "unable to get standard error window size"); } #endif @@ -26,10 +26,10 @@ #if _lib_openpty if (openpty(master, slave, NULL, ttyp, winp) < 0) return -1; -@@ -276,6 +288,9 @@ mkpty(int* master, int* slave) - #endif - fcntl(*master, F_SETFD, FD_CLOEXEC); +@@ -279,6 +291,9 @@ mkpty(int* master, int* slave) + #if !O_cloexec fcntl(*slave, F_SETFD, FD_CLOEXEC); + #endif +#ifdef __linux__ + sigprocmask(SIG_SETMASK, &oldset, NULL); +#endif diff --git a/ksh93-compat.dif b/ksh93-compat.dif index 3dfc3ac..b2292f7 100644 --- a/ksh93-compat.dif +++ b/ksh93-compat.dif @@ -1,6 +1,6 @@ --- src/lib/libast/astsa/ast.h -+++ src/lib/libast/astsa/ast.h 2012-02-21 12:03:32.810434306 +0000 -@@ -94,6 +94,12 @@ typedef struct ++++ src/lib/libast/astsa/ast.h 2012-02-21 12:03:33.000000000 +0000 +@@ -93,6 +93,12 @@ typedef struct #define pointerof(x) ((void*)((char*)0+(x))) #define roundof(x,y) (((x)+(y)-1)&~((y)-1)) @@ -13,8 +13,47 @@ #ifndef offsetof #define offsetof(type,member) ((unsigned long)&(((type*)0)->member)) #endif +--- src/lib/libast/features/libpath.sh ++++ src/lib/libast/features/libpath.sh 2007-03-30 16:45:55.000000000 +0000 +@@ -21,7 +21,7 @@ + ######################################################################## + ok=0 + for i in \ +- -x /lib/ld.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ ++ -x /lib64/ld.so /lib/ld.so /lib64/ld-*.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ + -f /usr/shlib/libc.so /shlib/libc.so /usr/lib/libc.so \ + -r /usr/shlib/libc.so /shlib/libc.so + do case $i in +--- src/lib/libast/features/map.c ++++ src/lib/libast/features/map.c 2009-12-09 11:13:24.000000000 +0000 +@@ -67,10 +67,14 @@ main() + #define _map_malloc 1 + printf("\n"); + printf("#define _map_libc 1\n"); ++#endif ++#if _map_libc || defined(__linux__) + printf("#undef basename\n"); + printf("#define basename _ast_basename\n"); + printf("#undef dirname\n"); + printf("#define dirname _ast_dirname\n"); ++#endif ++#if _map_libc + #if !_lib_eaccess + printf("#undef eaccess\n"); + printf("#define eaccess _ast_eaccess\n"); +--- src/lib/libast/features/sys ++++ src/lib/libast/features/sys 2012-02-21 12:04:43.000000000 +0000 +@@ -134,7 +134,7 @@ tst typ_signed_size_t output{ + } + }end + +-define offsetof (type,member) ((size_t)&(((type*)0)->member)) ++define offsetof (type,member) __builtin_offsetof(type,member) + define EXIT_FAILURE 1 + define EXIT_SUCCESS 0 + define MB_CUR_MAX 1 --- src/lib/libdll/features/dll -+++ src/lib/libdll/features/dll 2007-03-30 18:40:58.855596004 +0200 ++++ src/lib/libdll/features/dll 2007-03-30 16:40:59.000000000 +0000 @@ -15,7 +15,7 @@ tst dll_DYNAMIC link{ }end tst run{ @@ -42,42 +81,3 @@ lib=$abi/$lib fi ;; ---- src/lib/libast/features/libpath.sh -+++ src/lib/libast/features/libpath.sh 2007-03-30 18:45:55.030440187 +0200 -@@ -21,7 +21,7 @@ - ######################################################################## - ok=0 - for i in \ -- -x /lib/ld.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ -+ -x /lib64/ld.so /lib/ld.so /lib64/ld-*.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ - -f /usr/shlib/libc.so /shlib/libc.so /usr/lib/libc.so \ - -r /usr/shlib/libc.so /shlib/libc.so - do case $i in ---- src/lib/libast/features/map.c -+++ 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"); -+#endif -+#if _map_libc || defined(__linux__) - printf("#undef basename\n"); - printf("#define basename _ast_basename\n"); - printf("#undef dirname\n"); - printf("#define dirname _ast_dirname\n"); -+#endif -+#if _map_libc - #if !_lib_eaccess - printf("#undef eaccess\n"); - printf("#define eaccess _ast_eaccess\n"); ---- src/lib/libast/features/sys -+++ src/lib/libast/features/sys 2012-02-21 12:04:43.269934994 +0000 -@@ -126,7 +126,7 @@ tst typ_signed_size_t output{ - } - }end - --define offsetof (type,member) ((size_t)&(((type*)0)->member)) -+define offsetof (type,member) __builtin_offsetof(type,member) - define EXIT_FAILURE 1 - define EXIT_SUCCESS 0 - define MB_CUR_MAX 1 diff --git a/ksh93-dttree-crash.dif b/ksh93-dttree-crash.dif index 034bae8..3af9865 100644 --- a/ksh93-dttree-crash.dif +++ b/ksh93-dttree-crash.dif @@ -1,5 +1,94 @@ +--- src/cmd/ksh93/sh/xec.c ++++ src/cmd/ksh93/sh/xec.c 2013-02-01 16:22:50.000000000 +0000 +@@ -2741,11 +2741,6 @@ int sh_exec(register const Shnode_t *t, + slp = (struct slnod*)np->nvenv; + sh_funstaks(slp->slchild,-1); + stakdelete(slp->slptr); +- if(shp->funload) +- { +- free((void*)np->nvalue.rp); +- np->nvalue.rp = 0; +- } + if(rp->sdict) + { + Namval_t *mp, *nq; +@@ -2759,6 +2754,12 @@ int sh_exec(register const Shnode_t *t, + dtclose(rp->sdict); + rp->sdict = 0; + } ++ if(shp->funload) ++ { ++ if(!shp->fpathdict) ++ free((void*)np->nvalue.rp); ++ np->nvalue.rp = 0; ++ } + } + if(!np->nvalue.rp) + { +@@ -2769,7 +2770,7 @@ int sh_exec(register const Shnode_t *t, + { + static Dtdisc_t _Rpdisc = + { +- offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) ++ offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) + }; + struct functnod *fp; + struct comnod *ac = t->funct.functargs; +@@ -2796,8 +2797,10 @@ int sh_exec(register const Shnode_t *t, + rp->np = np; + if(!shp->fpathdict) + shp->fpathdict = dtopen(&_Rpdisc,Dtobag); +- if(shp->fpathdict) ++ if(shp->fpathdict) { ++ dtuserdata(shp->fpathdict,shp,1); + dtinsert(shp->fpathdict,rp); ++ } + } + } + else +--- src/lib/libast/Mamfile ++++ src/lib/libast/Mamfile 2013-01-30 10:01:13.000000000 +0000 +@@ -3969,6 +3969,14 @@ meta dtopen.o %.c>%.o cdt/dtopen.c dtope + prev cdt/dtopen.c + exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtopen.c + done dtopen.o generated ++make dtstat.o ++make cdt/dtstat.c ++prev cdt/dthdr.h implicit ++done cdt/dtstat.c ++meta dtstat.o %.c>%.o cdt/dtstat.c dtstat ++prev cdt/dtstat.c ++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtstat.c ++done dtstat.o generated + make dtstrhash.o + make cdt/dtstrhash.c + prev cdt/dthdr.h implicit +@@ -3985,6 +3993,14 @@ meta dttree.o %.c>%.o cdt/dttree.c dttre + prev cdt/dttree.c + exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dttree.c + done dttree.o generated ++make dtuser.o ++make cdt/dtuser.c ++prev cdt/dthdr.h implicit ++done cdt/dtuser.c ++meta dtuser.o %.c>%.o cdt/dtuser.c dtuser ++prev cdt/dtuser.c ++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtuser.c ++done dtuser.o generated + make dtview.o + make cdt/dtview.c + prev cdt/dthdr.h implicit +@@ -6101,7 +6117,7 @@ exec - ${AR} rc libast.a state.o transit + exec - ${AR} rc libast.a streval.o strexpr.o strmatch.o strcopy.o modei.o modex.o strmode.o strlcat.o strlcpy.o strlook.o strncopy.o strsearch.o strpsearch.o stresc.o stropt.o strtape.o strpcmp.o strnpcmp.o strvcmp.o strnvcmp.o tok.o tokline.o tokscan.o pathaccess.o pathcat.o pathcanon.o pathcheck.o pathpath.o pathexists.o pathfind.o pathkey.o pathprobe.o pathrepl.o pathnative.o pathposix.o pathtemp.o pathtmp.o pathstat.o pathgetlink.o pathsetlink.o pathbin.o pathshell.o pathcd.o pathprog.o fs3d.o ftwalk.o ftwflags.o fts.o astintercept.o conformance.o getenv.o setenviron.o optget.o optjoin.o optesc.o optctx.o strsort.o struniq.o magic.o mime.o mimetype.o signal.o sigflag.o systrace.o error.o errorf.o errormsg.o errorx.o localeconv.o setlocale.o translate.o catopen.o iconv.o lc.o lctab.o mc.o base64.o recfmt.o recstr.o reclen.o fmtrec.o fmtbase.o fmtbuf.o fmtclock.o fmtdev.o fmtelapsed.o fmterror.o fmtesc.o fmtfmt.o fmtfs.o fmtident.o fmtint.o fmtip4.o fmtip6.o fmtls.o fmtmatch.o fmtmode.o fmtnum.o fmtperm.o fmtre.o fmttime.o + exec - ${AR} rc libast.a fmtuid.o fmtgid.o fmtsignal.o fmtscale.o fmttmx.o fmttv.o fmtversion.o strelapsed.o strperm.o struid.o strgid.o strtoip4.o strtoip6.o stack.o stk.o swapget.o swapmem.o swapop.o swapput.o sigdata.o sigcrit.o sigunblock.o procopen.o procclose.o procrun.o procfree.o tmdate.o tmequiv.o tmfix.o tmfmt.o tmform.o tmgoff.o tminit.o tmleap.o tmlex.o tmlocale.o tmmake.o tmpoff.o tmscan.o tmsleep.o tmtime.o tmtype.o tmweek.o tmword.o tmzone.o tmxdate.o tmxduration.o tmxfmt.o tmxgettime.o tmxleap.o tmxmake.o tmxscan.o tmxsettime.o tmxsleep.o tmxtime.o tmxtouch.o tvcmp.o tvgettime.o tvsettime.o tvsleep.o tvtouch.o cmdarg.o vecargs.o vecfile.o vecfree.o vecload.o vecstring.o univdata.o touch.o mnt.o debug.o memccpy.o memchr.o memcmp.o memcpy.o memdup.o memmove.o memset.o mkdir.o mkfifo.o mknod.o rmdir.o remove.o rename.o link.o unlink.o strdup.o strchr.o strrchr.o strstr.o strtod.o strtold.o strtol.o strtoll.o strtoul.o strtoull.o strton.o strtonll.o strntod.o strntold.o strnton.o + exec - ${AR} rc libast.a strntonll.o strntol.o strntoll.o strntoul.o strntoull.o strcasecmp.o strncasecmp.o strerror.o mktemp.o tmpnam.o fsync.o execlp.o execve.o execvp.o execvpe.o spawnveg.o vfork.o killpg.o hsearch.o tsearch.o getlogin.o putenv.o setenv.o unsetenv.o lstat.o statvfs.o eaccess.o gross.o omitted.o readlink.o symlink.o getpgrp.o setpgid.o setsid.o waitpid.o creat64.o fcntl.o open.o atexit.o getdents.o getwd.o dup2.o errno.o getpreroot.o ispreroot.o realopen.o setpreroot.o getgroups.o mount.o system.o iblocks.o modedata.o tmdata.o memfatal.o sfkeyprintf.o sfdcdio.o sfdcdos.o sfdcfilter.o sfdcseekable.o sfdcslow.o sfdcsubstr.o sfdctee.o sfdcunion.o sfdcmore.o sfdcprefix.o wc.o wc2utf8.o basename.o closelog.o dirname.o fmtmsglib.o fnmatch.o ftw.o getdate.o getsubopt.o glob.o nftw.o openlog.o re_comp.o resolvepath.o realpath.o regcmp.o regexp.o setlogmask.o strftime.o strptime.o swab.o syslog.o tempnam.o wordexp.o mktime.o regalloc.o regclass.o regcoll.o regcomp.o regcache.o regdecomp.o regerror.o regexec.o regfatal.o reginit.o +-exec - ${AR} rc libast.a regnexec.o regsubcomp.o regsubexec.o regsub.o regrecord.o regrexec.o regstat.o dtclose.o dtdisc.o dthash.o dtlist.o dtmethod.o dtopen.o dtstrhash.o dttree.o dtview.o dtwalk.o dtnew.o dtcomp.o sfclose.o sfclrlock.o sfdisc.o sfdlen.o sfexcept.o sfgetl.o sfgetu.o sfcvt.o sfecvt.o sffcvt.o sfextern.o sffilbuf.o sfflsbuf.o sfprints.o sfgetd.o sfgetr.o sfllen.o sfmode.o sfmove.o sfnew.o sfpkrd.o sfnotify.o sfnputc.o sfopen.o sfpeek.o sfpoll.o sfpool.o sfpopen.o sfprintf.o sfputd.o sfputl.o sfputr.o sfputu.o sfrd.o sfread.o sfreserve.o sfscanf.o sfseek.o sfset.o sfsetbuf.o sfsetfd.o sfsize.o sfsk.o sfstack.o sfstrtod.o sfsync.o sfswap.o sftable.o sftell.o sftmp.o sfungetc.o sfvprintf.o sfvscanf.o sfwr.o sfwrite.o sfpurge.o sfraise.o sfwalk.o sfgetm.o sfmutex.o sfputm.o sfresize.o _sfclrerr.o _sfeof.o _sferror.o _sffileno.o _sfopen.o _sfstacked.o _sfvalue.o _sfgetc.o _sfgetl.o _sfgetl2.o _sfgetu.o _sfgetu2.o _sfdlen.o _sfllen.o _sfslen.o _sfulen.o _sfputc.o _sfputd.o _sfputl.o _sfputm.o ++exec - ${AR} rc libast.a regnexec.o regsubcomp.o regsubexec.o regsub.o regrecord.o regrexec.o regstat.o dtclose.o dtdisc.o dthash.o dtlist.o dtmethod.o dtopen.o dtstat.o dtstrhash.o dttree.o dtuser.o dtview.o dtwalk.o dtnew.o dtcomp.o sfclose.o sfclrlock.o sfdisc.o sfdlen.o sfexcept.o sfgetl.o sfgetu.o sfcvt.o sfecvt.o sffcvt.o sfextern.o sffilbuf.o sfflsbuf.o sfprints.o sfgetd.o sfgetr.o sfllen.o sfmode.o sfmove.o sfnew.o sfpkrd.o sfnotify.o sfnputc.o sfopen.o sfpeek.o sfpoll.o sfpool.o sfpopen.o sfprintf.o sfputd.o sfputl.o sfputr.o sfputu.o sfrd.o sfread.o sfreserve.o sfscanf.o sfseek.o sfset.o sfsetbuf.o sfsetfd.o sfsize.o sfsk.o sfstack.o sfstrtod.o sfsync.o sfswap.o sftable.o sftell.o sftmp.o sfungetc.o sfvprintf.o sfvscanf.o sfwr.o sfwrite.o sfpurge.o sfraise.o sfwalk.o sfgetm.o sfmutex.o sfputm.o sfresize.o _sfclrerr.o _sfeof.o _sferror.o _sffileno.o _sfopen.o _sfstacked.o _sfvalue.o _sfgetc.o _sfgetl.o _sfgetl2.o _sfgetu.o _sfgetu2.o _sfdlen.o _sfllen.o _sfslen.o _sfulen.o _sfputc.o _sfputd.o _sfputl.o _sfputm.o + exec - ${AR} rc libast.a _sfputu.o clearerr.o fclose.o fdopen.o feof.o ferror.o fflush.o fgetc.o fgetpos.o fgets.o fileno.o fopen.o fprintf.o fpurge.o fputc.o fputs.o fread.o freopen.o fscanf.o fseek.o fseeko.o fsetpos.o ftell.o ftello.o fwrite.o flockfile.o ftrylockfile.o funlockfile.o getc.o getchar.o getw.o pclose.o popen.o printf.o putc.o putchar.o puts.o putw.o rewind.o scanf.o setbuf.o setbuffer.o setlinebuf.o setvbuf.o snprintf.o sprintf.o sscanf.o asprintf.o vasprintf.o tmpfile.o ungetc.o vfprintf.o vfscanf.o vprintf.o vscanf.o vsnprintf.o vsprintf.o vsscanf.o _doprnt.o _doscan.o _filbuf.o _flsbuf.o _stdfun.o _stdopen.o _stdprintf.o _stdscanf.o _stdsprnt.o _stdvbuf.o _stdvsnprnt.o _stdvsprnt.o _stdvsscn.o fgetwc.o fwprintf.o putwchar.o vfwscanf.o wprintf.o fgetws.o fwscanf.o swprintf.o vswprintf.o wscanf.o fputwc.o getwc.o swscanf.o vswscanf.o fputws.o getwchar.o ungetwc.o vwprintf.o fwide.o putwc.o vfwprintf.o vwscanf.o stdio_c99.o fcloseall.o fmemopen.o getdelim.o getline.o frexp.o frexpl.o astcopy.o + exec - ${AR} rc libast.a astconf.o astdynamic.o astlicense.o astquery.o astwinsize.o conftab.o aststatic.o getopt.o getoptl.o aso.o asolock.o asometh.o asorelax.o aso-sem.o aso-fcntl.o vmbest.o vmclear.o vmclose.o vmdcheap.o vmdebug.o vmdisc.o vmexit.o vmlast.o vmopen.o vmpool.o vmprivate.o vmprofile.o vmregion.o vmsegment.o vmset.o vmstat.o vmstrdup.o vmtrace.o vmwalk.o vmmopen.o malloc.o vmgetmem.o a64l.o acosh.o asinh.o atanh.o cbrt.o crypt.o erf.o err.o exp.o exp__E.o expm1.o gamma.o getpass.o lgamma.o log.o log1p.o log__L.o rand48.o random.o rcmd.o rint.o support.o sfstrtmp.o spawn.o + exec - (ranlib libast.a) >/dev/null 2>&1 || true --- src/lib/libast/cdt/dtcomp.c -+++ src/lib/libast/cdt/dtcomp.c 2012-12-20 10:29:45.005452948 +0000 ++++ src/lib/libast/cdt/dtcomp.c 2012-12-20 10:29:45.000000000 +0000 @@ -52,9 +52,3 @@ extern ssize_t dtsize(Dt_t* d) { return (ssize_t)(*(_DT(d)->searchf))((d),(Void_t*)(0),DT_STAT); @@ -10,27 +99,8 @@ -{ - return (ssize_t)(*(_DT(d)->searchf))((d),(Void_t*)(0),DT_STAT); -} ---- src/lib/libast/cdt/dtdisc.c -+++ src/lib/libast/cdt/dtdisc.c 2012-12-20 10:29:45.013452595 +0000 -@@ -57,7 +57,6 @@ Dtdisc_t* disc; - int type; - #endif - { -- Dtsearch_f searchf; - Dtdisc_t *old; - Dtlink_t *list; - -@@ -71,8 +70,6 @@ int type; - if(!disc) /* only want to know current discipline */ - return old; - -- searchf = dt->meth->searchf; -- - if(old->eventf && (*old->eventf)(dt,DT_DISC,(Void_t*)disc,old) < 0) - return NIL(Dtdisc_t*); - --- src/lib/libast/cdt/dthash.c -+++ src/lib/libast/cdt/dthash.c 2012-12-20 10:29:45.013452595 +0000 ++++ src/lib/libast/cdt/dthash.c 2012-12-20 10:29:45.000000000 +0000 @@ -52,11 +52,13 @@ static int htable(Dt_t* dt) if((n = hash->tblz) > 0 && (hash->type&H_FIXED) ) return 0; /* fixed size table */ @@ -120,7 +190,7 @@ do_insert: /* inserting a new object */ --- src/lib/libast/cdt/dtlist.c -+++ src/lib/libast/cdt/dtlist.c 2012-12-20 10:29:45.013452595 +0000 ++++ src/lib/libast/cdt/dtlist.c 2012-12-20 10:29:45.000000000 +0000 @@ -142,9 +142,9 @@ int type; } @@ -133,7 +203,7 @@ Dt_t* dt; Dtstat_t* st; #endif -@@ -190,7 +190,7 @@ int type; +@@ -186,7 +186,7 @@ int type; else if(type&DT_CLEAR) DTRETURN(obj, lclear(dt)); else if(type&DT_STAT ) @@ -142,7 +212,7 @@ h = list->here; /* save finger to last search object */ list->here = NIL(Dtlink_t*); -@@ -206,8 +206,9 @@ int type; +@@ -202,8 +202,9 @@ int type; { r = (Dtlink_t*)obj; goto do_insert; } @@ -154,7 +224,7 @@ DTRETURN(obj, NIL(Void_t*)); dt->data->size += 1; -@@ -294,7 +295,7 @@ int type; +@@ -290,7 +291,7 @@ int type; } r = h ? h : r; } @@ -163,8 +233,8 @@ DTRETURN(obj, NIL(Void_t*)); if(type&(DT_DELETE|DT_DETACH|DT_REMOVE)) ---- src/lib/libast/cdt/dtopen.c 2012-01-19 09:47:26.000000000 +0000 -+++ src/lib/libast/cdt/dtopen.c 2012-12-20 10:29:45.021452290 +0000 +--- src/lib/libast/cdt/dtopen.c ++++ src/lib/libast/cdt/dtopen.c 2012-12-20 10:29:45.000000000 +0000 @@ -153,25 +153,3 @@ void _dtfree(Dt_t* dt, Dtlink_t* l, int if(disc->link < 0) /* free holder */ (void)(*dt->memoryf)(dt, (Void_t*)l, 0, disc); @@ -191,8 +261,8 @@ - return data; - } -} ---- src/lib/libast/cdt/dtstat.c 1970-01-01 00:00:00.000000000 +0000 -+++ src/lib/libast/cdt/dtstat.c 2012-12-20 10:29:45.021452290 +0000 +--- src/lib/libast/cdt/dtstat.c ++++ src/lib/libast/cdt/dtstat.c 2012-12-20 10:29:45.000000000 +0000 @@ -0,0 +1,54 @@ +/*********************************************************************** +* * @@ -249,7 +319,7 @@ + return sz; +} --- src/lib/libast/cdt/dtstrhash.c -+++ src/lib/libast/cdt/dtstrhash.c 2012-12-20 10:29:45.021452290 +0000 ++++ src/lib/libast/cdt/dtstrhash.c 2012-12-20 10:29:45.000000000 +0000 @@ -22,40 +22,38 @@ #include "dthdr.h" @@ -310,7 +380,7 @@ + return h; } --- src/lib/libast/cdt/dttree.c -+++ src/lib/libast/cdt/dttree.c 2012-12-20 10:29:45.029525330 +0000 ++++ src/lib/libast/cdt/dttree.c 2012-12-20 10:29:45.000000000 +0000 @@ -545,7 +545,14 @@ int type; } else goto no_root; @@ -378,17 +448,8 @@ { dt_insert: if(!(root = _dtmake(dt, obj, type)) ) { obj = NIL(Void_t*); -@@ -638,8 +649,6 @@ dt_return: - - static int treeevent(Dt_t* dt, int event, Void_t* arg) - { -- Dtlink_t *l, *list; -- ssize_t size; - Dttree_t *tree = (Dttree_t*)dt->data; - - if(event == DT_OPEN) ---- src/lib/libast/cdt/dtuser.c 1970-01-01 00:00:00.000000000 +0000 -+++ src/lib/libast/cdt/dtuser.c 2012-12-20 10:29:45.029525330 +0000 +--- src/lib/libast/cdt/dtuser.c ++++ src/lib/libast/cdt/dtuser.c 2012-12-20 10:29:45.000000000 +0000 @@ -0,0 +1,59 @@ +/*********************************************************************** +* * @@ -449,8 +510,8 @@ + return 0; + else return (*dt->disc->eventf)(dt, DT_ANNOUNCE|DT_USER|flags, data, dt->disc); +} ---- src/lib/libast/include/cdt.h 2012-12-20 11:37:28.641452879 +0000 -+++ src/lib/libast/include/cdt.h 2012-12-20 10:29:45.129453247 +0000 +--- src/lib/libast/include/cdt.h ++++ src/lib/libast/include/cdt.h 2012-12-20 10:29:45.000000000 +0000 @@ -164,6 +164,7 @@ struct _dtstat_s ssize_t msize; /* max #defined elts in below arrays */ ssize_t lsize[DT_MAXSIZE]; /* #objects by level */ @@ -503,99 +564,3 @@ #define dtsize(d) (ssize_t)(*(_DT(d)->searchf))((d),(Void_t*)(0),DT_STAT) #define DT_PRIME 17109811 /* 2#00000001 00000101 00010011 00110011 */ ---- src/lib/libast/Mamfile -+++ src/lib/libast/Mamfile 2013-01-30 10:01:13.201453447 +0000 -@@ -3966,6 +3966,14 @@ meta dtopen.o %.c>%.o cdt/dtopen.c dtope - prev cdt/dtopen.c - exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtopen.c - done dtopen.o generated -+make dtstat.o -+make cdt/dtstat.c -+prev cdt/dthdr.h implicit -+done cdt/dtstat.c -+meta dtstat.o %.c>%.o cdt/dtstat.c dtstat -+prev cdt/dtstat.c -+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtstat.c -+done dtstat.o generated - make dtstrhash.o - make cdt/dtstrhash.c - prev cdt/dthdr.h implicit -@@ -3982,6 +3990,14 @@ meta dttree.o %.c>%.o cdt/dttree.c dttre - prev cdt/dttree.c - exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dttree.c - done dttree.o generated -+make dtuser.o -+make cdt/dtuser.c -+prev cdt/dthdr.h implicit -+done cdt/dtuser.c -+meta dtuser.o %.c>%.o cdt/dtuser.c dtuser -+prev cdt/dtuser.c -+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtuser.c -+done dtuser.o generated - make dtview.o - make cdt/dtview.c - prev cdt/dthdr.h implicit -@@ -6091,7 +6107,7 @@ exec - ${AR} rc libast.a state.o transit - exec - ${AR} rc libast.a streval.o strexpr.o strmatch.o strcopy.o modei.o modex.o strmode.o strlcat.o strlcpy.o strlook.o strncopy.o strsearch.o strpsearch.o stresc.o stropt.o strtape.o strpcmp.o strnpcmp.o strvcmp.o strnvcmp.o tok.o tokline.o tokscan.o pathaccess.o pathcat.o pathcanon.o pathcheck.o pathpath.o pathexists.o pathfind.o pathkey.o pathprobe.o pathrepl.o pathnative.o pathposix.o pathtemp.o pathtmp.o pathstat.o pathgetlink.o pathsetlink.o pathbin.o pathshell.o pathcd.o pathprog.o fs3d.o ftwalk.o ftwflags.o fts.o astintercept.o conformance.o getenv.o setenviron.o optget.o optjoin.o optesc.o optctx.o strsort.o struniq.o magic.o mime.o mimetype.o signal.o sigflag.o systrace.o error.o errorf.o errormsg.o errorx.o localeconv.o setlocale.o translate.o catopen.o iconv.o lc.o lctab.o mc.o base64.o recfmt.o recstr.o reclen.o fmtrec.o fmtbase.o fmtbuf.o fmtclock.o fmtdev.o fmtelapsed.o fmterror.o fmtesc.o fmtfmt.o fmtfs.o fmtident.o fmtint.o fmtip4.o fmtip6.o fmtls.o fmtmatch.o fmtmode.o fmtnum.o fmtperm.o fmtre.o fmttime.o - exec - ${AR} rc libast.a fmtuid.o fmtgid.o fmtsignal.o fmtscale.o fmttmx.o fmttv.o fmtversion.o strelapsed.o strperm.o struid.o strgid.o strtoip4.o strtoip6.o stack.o stk.o swapget.o swapmem.o swapop.o swapput.o sigdata.o sigcrit.o sigunblock.o procopen.o procclose.o procrun.o procfree.o tmdate.o tmequiv.o tmfix.o tmfmt.o tmform.o tmgoff.o tminit.o tmleap.o tmlex.o tmlocale.o tmmake.o tmpoff.o tmscan.o tmsleep.o tmtime.o tmtype.o tmweek.o tmword.o tmzone.o tmxdate.o tmxduration.o tmxfmt.o tmxgettime.o tmxleap.o tmxmake.o tmxscan.o tmxsettime.o tmxsleep.o tmxtime.o tmxtouch.o tvcmp.o tvgettime.o tvsettime.o tvsleep.o tvtouch.o cmdarg.o vecargs.o vecfile.o vecfree.o vecload.o vecstring.o univdata.o touch.o mnt.o debug.o memccpy.o memchr.o memcmp.o memcpy.o memdup.o memmove.o memset.o mkdir.o mkfifo.o mknod.o rmdir.o remove.o rename.o link.o unlink.o strdup.o strchr.o strrchr.o strstr.o strtod.o strtold.o strtol.o strtoll.o strtoul.o strtoull.o strton.o strtonll.o strntod.o strntold.o strnton.o - exec - ${AR} rc libast.a strntonll.o strntol.o strntoll.o strntoul.o strntoull.o strcasecmp.o strncasecmp.o strerror.o mktemp.o tmpnam.o fsync.o execlp.o execve.o execvp.o execvpe.o spawnveg.o vfork.o killpg.o hsearch.o tsearch.o getlogin.o putenv.o setenv.o unsetenv.o lstat.o statvfs.o eaccess.o gross.o omitted.o readlink.o symlink.o getpgrp.o setpgid.o setsid.o waitpid.o creat64.o fcntl.o open.o atexit.o getdents.o getwd.o dup2.o errno.o getpreroot.o ispreroot.o realopen.o setpreroot.o getgroups.o mount.o system.o iblocks.o modedata.o tmdata.o memfatal.o sfkeyprintf.o sfdcdio.o sfdcdos.o sfdcfilter.o sfdcseekable.o sfdcslow.o sfdcsubstr.o sfdctee.o sfdcunion.o sfdcmore.o sfdcprefix.o wc.o wc2utf8.o basename.o closelog.o dirname.o fmtmsglib.o fnmatch.o ftw.o getdate.o getsubopt.o glob.o nftw.o openlog.o re_comp.o resolvepath.o realpath.o regcmp.o regexp.o setlogmask.o strftime.o strptime.o swab.o syslog.o tempnam.o wordexp.o mktime.o regalloc.o regclass.o regcoll.o regcomp.o regcache.o regdecomp.o regerror.o regexec.o regfatal.o reginit.o --exec - ${AR} rc libast.a regnexec.o regsubcomp.o regsubexec.o regsub.o regrecord.o regrexec.o regstat.o dtclose.o dtdisc.o dthash.o dtlist.o dtmethod.o dtopen.o dtstrhash.o dttree.o dtview.o dtwalk.o dtnew.o dtcomp.o sfclose.o sfclrlock.o sfdisc.o sfdlen.o sfexcept.o sfgetl.o sfgetu.o sfcvt.o sfecvt.o sffcvt.o sfextern.o sffilbuf.o sfflsbuf.o sfprints.o sfgetd.o sfgetr.o sfllen.o sfmode.o sfmove.o sfnew.o sfpkrd.o sfnotify.o sfnputc.o sfopen.o sfpeek.o sfpoll.o sfpool.o sfpopen.o sfprintf.o sfputd.o sfputl.o sfputr.o sfputu.o sfrd.o sfread.o sfreserve.o sfscanf.o sfseek.o sfset.o sfsetbuf.o sfsetfd.o sfsize.o sfsk.o sfstack.o sfstrtod.o sfsync.o sfswap.o sftable.o sftell.o sftmp.o sfungetc.o sfvprintf.o sfvscanf.o sfwr.o sfwrite.o sfpurge.o sfraise.o sfwalk.o sfgetm.o sfmutex.o sfputm.o sfresize.o _sfclrerr.o _sfeof.o _sferror.o _sffileno.o _sfopen.o _sfstacked.o _sfvalue.o _sfgetc.o _sfgetl.o _sfgetl2.o _sfgetu.o _sfgetu2.o _sfdlen.o _sfllen.o _sfslen.o _sfulen.o _sfputc.o _sfputd.o _sfputl.o _sfputm.o -+exec - ${AR} rc libast.a regnexec.o regsubcomp.o regsubexec.o regsub.o regrecord.o regrexec.o regstat.o dtclose.o dtdisc.o dthash.o dtlist.o dtmethod.o dtopen.o dtstat.o dtstrhash.o dttree.o dtuser.o dtview.o dtwalk.o dtnew.o dtcomp.o sfclose.o sfclrlock.o sfdisc.o sfdlen.o sfexcept.o sfgetl.o sfgetu.o sfcvt.o sfecvt.o sffcvt.o sfextern.o sffilbuf.o sfflsbuf.o sfprints.o sfgetd.o sfgetr.o sfllen.o sfmode.o sfmove.o sfnew.o sfpkrd.o sfnotify.o sfnputc.o sfopen.o sfpeek.o sfpoll.o sfpool.o sfpopen.o sfprintf.o sfputd.o sfputl.o sfputr.o sfputu.o sfrd.o sfread.o sfreserve.o sfscanf.o sfseek.o sfset.o sfsetbuf.o sfsetfd.o sfsize.o sfsk.o sfstack.o sfstrtod.o sfsync.o sfswap.o sftable.o sftell.o sftmp.o sfungetc.o sfvprintf.o sfvscanf.o sfwr.o sfwrite.o sfpurge.o sfraise.o sfwalk.o sfgetm.o sfmutex.o sfputm.o sfresize.o _sfclrerr.o _sfeof.o _sferror.o _sffileno.o _sfopen.o _sfstacked.o _sfvalue.o _sfgetc.o _sfgetl.o _sfgetl2.o _sfgetu.o _sfgetu2.o _sfdlen.o _sfllen.o _sfslen.o _sfulen.o _sfputc.o _sfputd.o _sfputl.o _sfputm.o - exec - ${AR} rc libast.a _sfputu.o clearerr.o fclose.o fdopen.o feof.o ferror.o fflush.o fgetc.o fgetpos.o fgets.o fileno.o fopen.o fprintf.o fpurge.o fputc.o fputs.o fread.o freopen.o fscanf.o fseek.o fseeko.o fsetpos.o ftell.o ftello.o fwrite.o flockfile.o ftrylockfile.o funlockfile.o getc.o getchar.o getw.o pclose.o popen.o printf.o putc.o putchar.o puts.o putw.o rewind.o scanf.o setbuf.o setbuffer.o setlinebuf.o setvbuf.o snprintf.o sprintf.o sscanf.o asprintf.o vasprintf.o tmpfile.o ungetc.o vfprintf.o vfscanf.o vprintf.o vscanf.o vsnprintf.o vsprintf.o vsscanf.o _doprnt.o _doscan.o _filbuf.o _flsbuf.o _stdfun.o _stdopen.o _stdprintf.o _stdscanf.o _stdsprnt.o _stdvbuf.o _stdvsnprnt.o _stdvsprnt.o _stdvsscn.o fgetwc.o fwprintf.o putwchar.o vfwscanf.o wprintf.o fgetws.o fwscanf.o swprintf.o vswprintf.o wscanf.o fputwc.o getwc.o swscanf.o vswscanf.o fputws.o getwchar.o ungetwc.o vwprintf.o fwide.o putwc.o vfwprintf.o vwscanf.o stdio_c99.o fcloseall.o fmemopen.o getdelim.o getline.o frexp.o frexpl.o astcopy.o - exec - ${AR} rc libast.a astconf.o astdynamic.o astlicense.o astquery.o astwinsize.o conftab.o aststatic.o getopt.o getoptl.o aso.o asolock.o asometh.o asorelax.o aso-sem.o aso-fcntl.o vmbest.o vmclear.o vmclose.o vmdcheap.o vmdebug.o vmdisc.o vmexit.o vmlast.o vmopen.o vmpool.o vmprivate.o vmprofile.o vmregion.o vmsegment.o vmset.o vmstat.o vmstrdup.o vmtrace.o vmwalk.o vmmopen.o malloc.o vmgetmem.o a64l.o acosh.o asinh.o atanh.o cbrt.o crypt.o erf.o err.o exp.o exp__E.o expm1.o gamma.o getpass.o lgamma.o log.o log1p.o log__L.o rand48.o random.o rcmd.o rint.o support.o sfstrtmp.o spawn.o - exec - (ranlib libast.a) >/dev/null 2>&1 || true ---- src/cmd/ksh93/sh/xec.c -+++ src/cmd/ksh93/sh/xec.c 2013-01-30 08:52:32.000000000 +0000 -@@ -2661,24 +2661,25 @@ int sh_exec(register const Shnode_t *t, - slp = (struct slnod*)np->nvenv; - sh_funstaks(slp->slchild,-1); - stakdelete(slp->slptr); -- if(shp->funload) -- { -- free((void*)np->nvalue.rp); -- np->nvalue.rp = 0; -- } - if(rp->sdict) - { - Namval_t *mp, *nq; - shp->last_root = rp->sdict; - for(mp=(Namval_t*)dtfirst(rp->sdict);mp;mp=nq) - { -- nq = dtnext(rp->sdict,mp); - _nv_unset(mp,NV_RDONLY); -+ nq = dtnext(rp->sdict,mp); - nv_delete(mp,rp->sdict,0); - } - dtclose(rp->sdict); - rp->sdict = 0; - } -+ if(shp->funload) -+ { -+ if(!shp->fpathdict) -+ free((void*)np->nvalue.rp); -+ np->nvalue.rp = 0; -+ } - } - if(!np->nvalue.rp) - { -@@ -2689,7 +2690,7 @@ int sh_exec(register const Shnode_t *t, - { - static Dtdisc_t _Rpdisc = - { -- offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) -+ offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) - }; - struct functnod *fp; - struct comnod *ac = t->funct.functargs; -@@ -2716,8 +2717,10 @@ int sh_exec(register const Shnode_t *t, - rp->np = np; - if(!shp->fpathdict) - shp->fpathdict = dtopen(&_Rpdisc,Dtobag); -- if(shp->fpathdict) -+ if(shp->fpathdict) { -+ dtuserdata(shp->fpathdict,shp,1); - dtinsert(shp->fpathdict,rp); -+ } - } - } - else diff --git a/ksh93-env.dif b/ksh93-env.dif index 46083d0..e992d35 100644 --- a/ksh93-env.dif +++ b/ksh93-env.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/sh/name.c -+++ src/cmd/ksh93/sh/name.c 2012-10-16 12:12:42.846844975 +0000 -@@ -2123,7 +2123,7 @@ static void attstore(register Namval_t * ++++ src/cmd/ksh93/sh/name.c 2012-10-16 12:12:43.000000000 +0000 +@@ -2162,7 +2162,7 @@ static void attstore(register Namval_t * if((flag&(NV_UTOL|NV_LTOU|NV_INTEGER)) == (NV_UTOL|NV_LTOU)) { data = (void*)nv_mapchar(np,0); diff --git a/ksh93-foreground-prgrp.dif b/ksh93-foreground-prgrp.dif index 3414e43..3fb4d7a 100644 --- a/ksh93-foreground-prgrp.dif +++ b/ksh93-foreground-prgrp.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/sh/jobs.c -+++ src/cmd/ksh93/sh/jobs.c 2012-02-08 11:52:14.000000000 +0100 -@@ -841,7 +841,9 @@ static void job_reset(register struct pr ++++ src/cmd/ksh93/sh/jobs.c 2012-02-08 10:52:14.000000000 +0000 +@@ -845,7 +845,9 @@ static void job_reset(register struct pr { /* save the terminal state for current job */ #ifdef SIGTSTP diff --git a/ksh93-gcc.dif b/ksh93-gcc.dif index 502ac05..2c948eb 100644 --- a/ksh93-gcc.dif +++ b/ksh93-gcc.dif @@ -1,5 +1,29 @@ +--- src/lib/libast/misc/optget.c ++++ src/lib/libast/misc/optget.c 2013-01-28 14:52:53.000000000 +0000 +@@ -4367,9 +4367,9 @@ optget(register char** argv, const char* + */ + + opt_info.assignment = 0; +- num = 1; +- w = v = 0; +- x = 0; ++ nov = no = num = 1; ++ e = w = v = 0; ++ n = x = 0; + for (;;) + { + if (!opt_info.offset) +@@ -5214,7 +5214,7 @@ optget(register char** argv, const char* + + if (opt_info.num != LONG_MIN) + opt_info.num = (long)(opt_info.number = num); +- if ((n = *++s == '#') || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) ++ if ((n = (*++s == '#')) || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) + { + if (w) + { --- src/lib/libpp/ppsearch.c -+++ src/lib/libpp/ppsearch.c 2012-03-14 11:40:10.953934666 +0000 ++++ src/lib/libpp/ppsearch.c 2012-03-14 11:40:11.000000000 +0000 @@ -107,6 +107,14 @@ ppmultiple(register struct ppfile* fp, r * search for file using directories in dp */ @@ -39,69 +63,3 @@ /* * search for an include file * if (flags&SEARCH_INCLUDE) then ---- src/lib/libcmd/Mamfile -+++ src/lib/libcmd/Mamfile 2013-01-28 10:46:23.141952570 +0000 -@@ -429,6 +429,7 @@ make uniq.c - prev cmd.h implicit - done uniq.c - make vmstate.c -+prev ${PACKAGE_ast_INCLUDE}/sfdisc.h implicit - prev ${PACKAGE_ast_INCLUDE}/vmalloc.h implicit - prev cmd.h implicit - done vmstate.c ---- src/lib/libast/misc/optget.c -+++ src/lib/libast/misc/optget.c 2013-01-28 14:52:53.069452260 +0000 -@@ -2406,7 +2406,6 @@ opthelp(const char* oopts, const char* w - int bflags = 0; - int dflags = 0; - int hflags = 0; -- int sflags = 0; - int matched = 0; - int paragraph = 0; - Push_t* psp = 0; -@@ -4368,9 +4367,9 @@ optget(register char** argv, const char* - */ - - opt_info.assignment = 0; -- num = 1; -- w = v = 0; -- x = 0; -+ nov = no = num = 1; -+ e = w = v = 0; -+ n = x = 0; - for (;;) - { - if (!opt_info.offset) -@@ -4609,6 +4608,7 @@ optget(register char** argv, const char* - opt_info.num = (long)(opt_info.number = optnumber(opt_info.arg, &e, &err)); - if (err || e == opt_info.arg) - { -+ opt_info.num = (long)(opt_info.number = 0); - if (!err && (k & OPT_cache_optional)) - { - opt_info.arg = 0; -@@ -4636,6 +4636,7 @@ optget(register char** argv, const char* - opt_info.arg = 0; - opt_info.index--; - opt_info.offset = 0; -+ opt_info.num = (long)(opt_info.number = 0); - return c; - } - if (k & OPT_cache_string) -@@ -5213,7 +5214,7 @@ optget(register char** argv, const char* - - if (opt_info.num != LONG_MIN) - opt_info.num = (long)(opt_info.number = num); -- if ((n = *++s == '#') || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) -+ if ((n = (*++s == '#')) || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e)) - { - if (w) - { -@@ -5306,6 +5307,7 @@ optget(register char** argv, const char* - opt_info.index++; - if (*(s + 1) == '?' && (*opt_info.arg == '-' || (pass->flags & OPT_plus) && *opt_info.arg == '+') && *(opt_info.arg + 1)) - { -+ opt_info.num = (long)(opt_info.number = 0); - opt_info.index--; - opt_info.arg = 0; - } diff --git a/ksh93-heredoc.dif b/ksh93-heredoc.dif index f51c2e8..2774d4f 100644 --- a/ksh93-heredoc.dif +++ b/ksh93-heredoc.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/sh/lex.c -+++ src/cmd/ksh93/sh/lex.c 2012-01-16 16:09:37.624771155 +0100 -@@ -1874,6 +1874,8 @@ static int here_copy(Lex_t *lp,register ++++ src/cmd/ksh93/sh/lex.c 2012-01-16 15:09:38.000000000 +0000 +@@ -1893,6 +1893,8 @@ static int here_copy(Lex_t *lp,register sfputc(sp,'\\'); } } diff --git a/ksh93-ia64.dif b/ksh93-ia64.dif index 8d6e3b8..897b8f3 100644 --- a/ksh93-ia64.dif +++ b/ksh93-ia64.dif @@ -1,24 +1,5 @@ ---- src/lib/libast/sfio/sfcvt.c -+++ src/lib/libast/sfio/sfcvt.c 2008-12-17 11:56:17.000000000 +0000 -@@ -56,6 +56,16 @@ static char *Zero = "0"; - #define _lib_signbit 1 - #endif - -+#if defined(__ia64__) && defined(signbit) -+# if defined __GNUC__ && __GNUC__ >= 4 -+# define __signbitl(f) __builtin_signbitl(f) -+# else -+# if _lib_copysignl -+# define __signbitl(f) (int)(copysignl(1.0,(f))<0.0) -+# endif -+# endif -+#endif -+ - #if ! _lib_signbit - #if ! _ast_fltmax_double - static int neg0ld(Sfdouble_t f) --- src/cmd/ksh93/features/math.sh -+++ src/cmd/ksh93/features/math.sh 2012-01-20 14:23:37.587145847 +0000 ++++ src/cmd/ksh93/features/math.sh 2012-01-20 14:23:38.000000000 +0000 @@ -130,6 +130,18 @@ echo "#include " case $_hdr_ieeefp in 1) echo "#include " ;; @@ -38,3 +19,22 @@ echo : generate the intercept functions and table entries +--- src/lib/libast/sfio/sfcvt.c ++++ src/lib/libast/sfio/sfcvt.c 2013-02-01 17:13:48.305452072 +0000 +@@ -54,6 +54,16 @@ static char *Zero = "0"; + #endif + #endif + ++#if defined(__ia64__) && defined(signbit) ++# if defined __GNUC__ && __GNUC__ >= 4 ++# define __signbitl(f) __builtin_signbitl(f) ++# else ++# if _lib_copysignl ++# define __signbitl(f) (int)(copysignl(1.0,(f))<0.0) ++# endif ++# endif ++#endif ++ + #if !_lib_signbit + #if !_ast_fltmax_double + static int neg0ld(Sfdouble_t f) diff --git a/ksh93-jobs.dif b/ksh93-jobs.dif index 5c19f6b..eb8d246 100644 --- a/ksh93-jobs.dif +++ b/ksh93-jobs.dif @@ -1,5 +1,5 @@ --- src/cmd/ksh93/sh/jobs.c -+++ src/cmd/ksh93/sh/jobs.c 2012-12-20 13:33:27.885452491 +0000 ++++ src/cmd/ksh93/sh/jobs.c 2012-12-20 13:33:28.000000000 +0000 @@ -638,12 +638,14 @@ void job_init(Shell_t *shp, int lflag) /* This should have already been done by rlogin */ register int fd; @@ -16,27 +16,7 @@ if((fd = open(ttynam,O_RDWR)) <0) return; if(fd!=JOBTTY) -@@ -660,7 +662,7 @@ void job_init(Shell_t *shp, int lflag) - /* wait until we are in the foreground */ - while((job.mytgid=tcgetpgrp(JOBTTY)) != job.mypgid) - { -- if(job.mytgid == -1) -+ if(job.mytgid <= 0) - return; - /* Stop this shell until continued */ - signal(SIGTTIN,SIG_DFL); -@@ -833,7 +835,9 @@ static void job_set(register struct proc - if((pw->p_flag&P_STOPPED) || tcgetpgrp(job.fd) == shp->gd->pid) - tcsetpgrp(job.fd,pw->p_fgrp); - /* if job is stopped, resume it in the background */ -- job_unstop(pw); -+ if(!shp->forked) -+ job_unstop(pw); -+ shp->forked = 0; - #endif /* SIGTSTP */ - } - -@@ -1104,7 +1110,7 @@ static struct process *job_bystring(regi +@@ -1110,7 +1112,7 @@ static struct process *job_bystring(regi int job_kill(register struct process *pw,register int sig) { @@ -45,7 +25,7 @@ register pid_t pid; register int r; const char *msg; -@@ -1117,6 +1123,7 @@ int job_kill(register struct process *pw +@@ -1123,6 +1125,7 @@ int job_kill(register struct process *pw errno = ECHILD; if(pw==0) goto error; @@ -53,11 +33,3 @@ pid = pw->p_pid; #if SHOPT_COSHELL if(pw->p_cojob) -@@ -2043,6 +2050,7 @@ void job_fork(pid_t parent) - job.in_critical = 0; - break; - default: -+ job_chksave(parent); - jobfork=0; - job_unlock(); - break; diff --git a/ksh93-limit-name-len.dif b/ksh93-limit-name-len.dif index c5f7298..ceec301 100644 --- a/ksh93-limit-name-len.dif +++ b/ksh93-limit-name-len.dif @@ -10,18 +10,18 @@ int index; const char* conf; --- src/cmd/ksh93/sh/init.c -+++ src/cmd/ksh93/sh/init.c 2012-02-21 11:26:13.622577250 +0100 -@@ -169,7 +169,7 @@ struct match ++++ src/cmd/ksh93/sh/init.c 2013-02-01 15:53:58.733952540 +0000 +@@ -170,7 +170,7 @@ struct match char *val; char *rval[2]; - int *match; + regoff_t *match; - char node[NV_MINSZ+sizeof(char*)]; + char node[NV_MINSZ+sizeof(char*)+sizeof(Dtlink_t)]; - int first; + regoff_t first; int vsize; int nmatch; -@@ -772,7 +772,7 @@ static int hasgetdisc(register Namfun_t - void sh_setmatch(Shell_t *shp,const char *v, int vsize, int nmatch, int match[],int index) +@@ -766,7 +766,7 @@ static int hasgetdisc(register Namfun_t + void sh_setmatch(Shell_t *shp,const char *v, int vsize, int nmatch, regoff_t match[],int index) { struct match *mp = &ip->SH_MATCH_init; - Namval_t *np = nv_namptr(mp->node,0); diff --git a/ksh93-limits.dif b/ksh93-limits.dif index 9f96958..052fe4d 100644 --- a/ksh93-limits.dif +++ b/ksh93-limits.dif @@ -1,5 +1,5 @@ --- src/lib/libast/comp/conf.sh -+++ src/lib/libast/comp/conf.sh 2010-08-17 17:45:16.129814168 +0200 ++++ src/lib/libast/comp/conf.sh 2010-08-17 15:45:16.000000000 +0000 @@ -143,7 +143,7 @@ main() return 1; #else @@ -9,7 +9,7 @@ return 0; #endif -@@ -785,7 +785,11 @@ defined() # list-file +@@ -801,7 +801,11 @@ defined() # list-file cat < @@ -21,7 +21,7 @@ #include $systeminfo$headers ${tail} #undef conf -@@ -813,7 +817,11 @@ unsigned int conf[] = { +@@ -829,7 +833,11 @@ unsigned int conf[] = { cat < @@ -33,7 +33,7 @@ #include $systeminfo$headers ${tail} #undef conf -@@ -854,7 +862,11 @@ done +@@ -870,7 +878,11 @@ done cat < @@ -45,7 +45,7 @@ #include $systeminfo$headers ${tail} #undef conf -@@ -1032,7 +1044,7 @@ do eval name=\"'$'CONF_name_$key\" +@@ -1048,7 +1060,7 @@ do eval name=\"'$'CONF_name_$key\" case $flags in *[Ll]*) d= case ${conf_name} in @@ -54,7 +54,7 @@ x= ;; *) eval x='$'CONF_const_${conf_name} -@@ -1092,7 +1104,11 @@ do eval name=\"'$'CONF_name_$key\" +@@ -1108,7 +1120,11 @@ do eval name=\"'$'CONF_name_$key\" ${head} #include #include @@ -66,7 +66,7 @@ #include $systeminfo$headers ${tail} int -@@ -1107,7 +1123,11 @@ main() +@@ -1123,7 +1139,11 @@ main() ${head} #include #include @@ -78,7 +78,7 @@ #include $systeminfo$headers ${tail} ${script} -@@ -1254,7 +1274,11 @@ printf("#endif\n"); +@@ -1270,7 +1290,11 @@ printf("#endif\n"); *) cat > $tmp.c < @@ -90,7 +90,7 @@ #include $systeminfo$headers ${tail} ${script} -@@ -1333,7 +1357,7 @@ ${script} +@@ -1349,7 +1373,7 @@ ${script} *[lLuU]) case $LL_suffix in ??) case $conf_limit in @@ -99,7 +99,7 @@ conf_limit=${conf_limit}L ;; esac -@@ -1368,7 +1392,7 @@ ${script} +@@ -1384,7 +1408,7 @@ ${script} *[lLuU]) case $LL_suffix in ??) case $conf_minmax in @@ -108,7 +108,7 @@ conf_minmax=${conf_minmax}L ;; esac -@@ -1545,7 +1569,11 @@ esac +@@ -1561,7 +1585,11 @@ esac cat < diff --git a/ksh93-pathtemp.dif b/ksh93-pathtemp.dif index ec59ade..aaef2e7 100644 --- a/ksh93-pathtemp.dif +++ b/ksh93-pathtemp.dif @@ -1,99 +1,3 @@ ---- src/cmd/ksh93/bltins/trap.c -+++ src/cmd/ksh93/bltins/trap.c 2012-10-23 15:45:37.000000000 +0000 -@@ -102,6 +102,7 @@ int b_trap(int argc,char *argv[],Shbltin - /* internal traps */ - if(sig&SH_TRAP) - { -+ char **trap = (shp->st.otrap?shp->st.otrap:shp->st.trap); - sig &= ~SH_TRAP; - if(sig>SH_DEBUGTRAP) - { -@@ -110,10 +111,11 @@ int b_trap(int argc,char *argv[],Shbltin - } - if(pflag) - { -- if(arg=shp->st.trap[sig]) -+ if(arg=trap[sig]) - sfputr(sfstdout,sh_fmtq(arg),'\n'); - continue; - } -+ shp->st.otrap = 0; - if(shp->st.trap[sig]) - free(shp->st.trap[sig]); - shp->st.trap[sig] = 0; -@@ -402,7 +404,7 @@ static void sig_list(register Shell_t *s - } - for(sig=SH_DEBUGTRAP; sig>=0; sig--) - { -- if(!(trap=shp->st.trap[sig])) -+ if(!(trap=shp->st.otrap?shp->st.otrap[sig]:shp->st.trap[sig])) - continue; - sfprintf(sfstdout,trapfmt,sh_fmtq(trap),traps[sig]); - } ---- src/cmd/ksh93/include/defs.h -+++ src/cmd/ksh93/include/defs.h 2012-10-23 15:42:45.000000000 +0000 -@@ -90,6 +90,7 @@ struct sh_scoped - int ioset; - unsigned short trapmax; - char *trap[SH_DEBUGTRAP+1]; -+ char **otrap; - char **trapcom; - char **otrapcom; - void *timetrap; ---- src/cmd/ksh93/include/shnodes.h -+++ src/cmd/ksh93/include/shnodes.h 2012-10-23 14:23:06.000000000 +0000 -@@ -211,7 +211,7 @@ union Shnode_u - - extern void sh_freeup(Shell_t*); - extern void sh_funstaks(struct slnod*,int); --extern Sfio_t *sh_subshell(Shell_t*,Shnode_t*, int, int); -+extern Sfio_t *sh_subshell(Shell_t*,Shnode_t*, volatile int, int); - #if defined(__EXPORT__) && defined(_BLD_DLL) && defined(_BLD_shell) - __EXPORT__ - #endif ---- src/cmd/ksh93/sh/subshell.c -+++ src/cmd/ksh93/sh/subshell.c 2012-10-25 10:09:34.574345265 +0000 -@@ -455,7 +455,7 @@ void sh_subjobcheck(pid_t pid) - * output of command . Otherwise, NULL will be returned. - */ - --Sfio_t *sh_subshell(Shell_t *shp,Shnode_t *t, int flags, int comsub) -+Sfio_t *sh_subshell(Shell_t *shp,Shnode_t *t, volatile int flags, int comsub) - { - struct subshell sub_data; - register struct subshell *sp = &sub_data; -@@ -528,6 +528,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ - sh_stats(STAT_SUBSHELL); - /* save trap table */ - shp->st.otrapcom = 0; -+ shp->st.otrap = savst.trap; - if((nsig=shp->st.trapmax*sizeof(char*))>0 || shp->st.trapcom[0]) - { - nsig += sizeof(char*); -@@ -602,6 +603,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ - } - if(!shp->savesig) - shp->savesig = -1; -+ nv_restore(sp); - if(comsub) - { - /* re-enable job control */ -@@ -666,7 +668,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ - { - int n; - shp->options = sp->options; -- nv_restore(sp); - if(sp->salias) - { - shp->alias_tree = dtview(sp->salias,0); -@@ -685,6 +686,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ - memset(&shp->st.trapcom[savst.trapmax],0,n*sizeof(char*)); - shp->st = savst; - shp->curenv = savecurenv; -+ shp->st.otrap = 0; - if(nsig) - { - memcpy((char*)&shp->st.trapcom[0],savsig,nsig); --- src/lib/libast/path/pathtemp.c +++ src/lib/libast/path/pathtemp.c 2012-10-25 10:35:14.510345073 +0000 @@ -73,15 +73,49 @@ diff --git a/ksh93-profile.dif b/ksh93-profile.dif index 5b9456d..ff6e295 100644 --- a/ksh93-profile.dif +++ b/ksh93-profile.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/sh/main.c -+++ src/cmd/ksh93/sh/main.c 2010-08-17 17:35:18.099125448 +0200 -@@ -219,14 +219,38 @@ int sh_main(int ac, char *av[], Shinit_f ++++ src/cmd/ksh93/sh/main.c 2010-08-17 15:35:18.000000000 +0000 +@@ -200,14 +200,38 @@ int sh_main(int ac, char *av[], Shinit_f { /* system profile */ sh_source(shp, iop, e_sysprofile); @@ -41,7 +41,7 @@ if(!sh_isoption(SH_NOEXEC)) { if(!sh_isoption(SH_NOUSRPROFILE) && !sh_isoption(SH_PRIVILEGED) && sh_isoption(SH_RC)) -@@ -234,9 +258,6 @@ int sh_main(int ac, char *av[], Shinit_f +@@ -215,9 +239,6 @@ int sh_main(int ac, char *av[], Shinit_f #if SHOPT_BASH if(sh_isoption(SH_BASH) && !sh_isoption(SH_POSIX)) { @@ -51,7 +51,7 @@ sh_source(shp, iop, shp->gd->rcfile ? shp->gd->rcfile : sh_mactry(shp,(char*)e_bash_rc)); } else -@@ -244,10 +265,6 @@ int sh_main(int ac, char *av[], Shinit_f +@@ -225,10 +246,6 @@ int sh_main(int ac, char *av[], Shinit_f { if(name = sh_mactry(shp,nv_getval(ENVNOD))) name = *name ? strdup(name) : (char*)0; diff --git a/ksh93-read-dont-ignore-esc.dif b/ksh93-read-dont-ignore-esc.dif deleted file mode 100644 index 17a19a4..0000000 --- a/ksh93-read-dont-ignore-esc.dif +++ /dev/null @@ -1,25 +0,0 @@ ---- src/cmd/ksh93/bltins/read.c -+++ src/cmd/ksh93/bltins/read.c 2012-06-04 09:58:53.848644056 +0200 -@@ -570,7 +570,13 @@ int sh_readline(register Shell_t *shp,ch - case S_QUOTE: - c = shp->ifstable[*cp++]; - inquote = !inquote; -- goto skip; -+ if(val) -+ { -+ stakputs(val); -+ use_stak = 1; -+ *val = 0; -+ } -+ continue; - case S_ESC: - /* process escape character */ - if((c = shp->ifstable[*cp++]) == S_NL) -@@ -582,6 +588,7 @@ int sh_readline(register Shell_t *shp,ch - { - stakputs(val); - use_stak = 1; -+ was_escape = 1; - *val = 0; - } - continue; diff --git a/ksh93-reg.dif b/ksh93-reg.dif index 317ce84..a5a5d77 100644 --- a/ksh93-reg.dif +++ b/ksh93-reg.dif @@ -1,15 +1,6 @@ --- src/cmd/ksh93/edit/edit.c -+++ src/cmd/ksh93/edit/edit.c 2012-01-16 16:13:59.743144345 +0100 -@@ -1670,7 +1670,7 @@ int ed_histgen(Edit_t *ep,const char *pa - History_t *hp; - off_t offset; - int ac=0,l,m,n,index1,index2; -- char *cp, **argv, **av, **ar; -+ char *cp, **argv=0, **av, **ar; - if(!(hp=ep->sh->gd->hist_ptr)) - return(0); - if(*pattern=='#') -@@ -1748,8 +1748,13 @@ int ed_histgen(Edit_t *ep,const char *pa ++++ src/cmd/ksh93/edit/edit.c 2013-02-01 17:18:31.405454238 +0000 +@@ -1769,8 +1769,13 @@ int ed_histgen(Edit_t *ep,const char *pa mplast->next = mp; mplast->next = 0; } diff --git a/ksh93-s390.dif b/ksh93-s390.dif index 31188bb..1e2a136 100644 --- a/ksh93-s390.dif +++ b/ksh93-s390.dif @@ -1,11 +1,11 @@ --- src/cmd/ksh93/bltins/read.c -+++ src/cmd/ksh93/bltins/read.c 2008-12-17 14:01:01.000000000 +0000 -@@ -280,6 +280,19 @@ int sh_readline(register Shell_t *shp,ch - delim = ((unsigned)flags)>>D_FLAG; - if((shp->fdstatus[fd]&IOTTY) && !keytrap) - tty_raw(fd,1); ++++ src/cmd/ksh93/bltins/read.c 2013-02-01 15:29:39.393452098 +0000 +@@ -288,6 +288,19 @@ int sh_readline(register Shell_t *shp,ch + ep->e_nttyparm.c_lflag |= ISIG; + tty_set(fd,TCSADRAIN,&ep->e_nttyparm); + } +#if defined(__linux__) -+ if ((flags&N_FLAG) && (shp->fdstatus[fd]&(IOTTY|IONOSEEK))==0) ++ else if ((shp->fdstatus[fd]&(IOTTY|IONOSEEK))==0) + { + struct stat st; + if ((fstat(fd, &st) == 0) && S_ISFIFO(st.st_mode)) diff --git a/ksh93-shift_ijs.dif b/ksh93-shift_ijs.dif index 8292778..fe491ec 100644 --- a/ksh93-shift_ijs.dif +++ b/ksh93-shift_ijs.dif @@ -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) -@@ -1559,11 +1563,19 @@ static void setcursor(register Emacs_t * +@@ -1563,11 +1567,19 @@ static void setcursor(register Emacs_t * #if SHOPT_MULTIBYTE static int print(register int c) { @@ -107,7 +107,7 @@ static int _ismetach(int); --- src/cmd/ksh93/sh/io.c +++ src/cmd/ksh93/sh/io.c 2010-06-28 14:09:09.000000000 +0000 -@@ -1514,6 +1514,7 @@ static int io_heredoc(Shell_t *shp,regis +@@ -1536,6 +1536,7 @@ static int io_heredoc(Shell_t *shp,regis if(traceon) sfprintf(sfstderr,"< %s\n",name); sfputr(outfile,name,'\n'); @@ -116,8 +116,81 @@ else { --- src/cmd/ksh93/sh/macro.c -+++ src/cmd/ksh93/sh/macro.c 2011-05-27 13:08:05.000000000 +0200 -@@ -2341,13 +2341,13 @@ static void mac_copy(register Mac_t *mp, ++++ src/cmd/ksh93/sh/macro.c 2013-02-07 13:26:07.897952986 +0000 +@@ -54,6 +54,7 @@ + #if SHOPT_MULTIBYTE + # undef isascii + # define isacii(c) ((c)<=UCHAR_MAX) ++# include + #else + # define mbchar(p) (*(unsigned char*)p++) + #endif /* SHOPT_MULTIBYTE */ +@@ -2026,6 +2027,10 @@ static void comsubst(Mac_t *mp,register + struct _mac_ savemac; + int savtop = stktell(stkp); + char lastc=0, *savptr = stkfreeze(stkp,0); ++#if SHOPT_MULTIBYTE ++ const Lc_t *lc=lcinfo(LC_CTYPE)->lc; ++ wchar_t lastw=0; ++#endif /* SHOPT_MULTIBYTE */ + int was_history = sh_isstate(SH_HISTORY); + int was_verbose = sh_isstate(SH_VERBOSE); + int was_interactive = sh_isstate(SH_INTERACTIVE); +@@ -2209,6 +2214,17 @@ static void comsubst(Mac_t *mp,register + } + else if(lastc) + { ++#if SHOPT_MULTIBYTE ++ if(lastw) ++ { ++ int n; ++ char mb[8]; ++ n = mbconv(mb, lastw); ++ mac_copy(mp,mb,n); ++ lastw = 0; ++ } ++ else ++#endif /* SHOPT_MULTIBYTE */ + mac_copy(mp,&lastc,1); + lastc = 0; + } +@@ -2220,6 +2236,17 @@ static void comsubst(Mac_t *mp,register + ssize_t len = 1; + + /* can't write past buffer so save last character */ ++#if SHOPT_MULTIBYTE ++ if ((len = mbsize(str))>1 && !(lc->flags & LC_utf8)) ++ { ++ len = mb2wc(lastw,str,len); ++ if (len < 0) ++ { ++ lastw = 0; ++ len = 1; ++ } ++ } ++#endif /* SHOPT_MULTIBYTE */ + c -= len; + lastc = str[c]; + str[c] = 0; +@@ -2240,6 +2267,17 @@ static void comsubst(Mac_t *mp,register + } + if(lastc) + { ++#if SHOPT_MULTIBYTE ++ if(lastw) ++ { ++ int n; ++ char mb[8]; ++ n = mbconv(mb, lastw); ++ mac_copy(mp,mb,n); ++ lastw = 0; ++ } ++ else ++#endif /* SHOPT_MULTIBYTE */ + mac_copy(mp,&lastc,1); + lastc = 0; + } +@@ -2340,13 +2378,13 @@ static void mac_copy(register Mac_t *mp, if(mp->pattern) { char *sp = "&|()"; @@ -135,7 +208,7 @@ state[c] = S_PAT; --- src/cmd/ksh93/sh/string.c +++ src/cmd/ksh93/sh/string.c 2007-12-20 17:51:07.000000000 +0000 -@@ -41,7 +41,7 @@ +@@ -37,7 +37,7 @@ #endif #if !_lib_iswprint && !defined(iswprint) @@ -144,7 +217,7 @@ #endif -@@ -249,7 +249,7 @@ void sh_trim(register char *sp) +@@ -245,7 +245,7 @@ void sh_trim(register char *sp) if(sp) { dp = sp; @@ -154,7 +227,7 @@ #if SHOPT_MULTIBYTE int len; --- src/cmd/ksh93/tests/sjis.sh -+++ src/cmd/ksh93/tests/sjis.sh 2011-05-20 17:11:28.623926368 +0200 ++++ src/cmd/ksh93/tests/sjis.sh 2011-05-20 15:11:29.000000000 +0000 @@ -0,0 +1,67 @@ +######################################################################## +# # @@ -245,7 +318,7 @@ #define STUB 1 --- src/lib/libast/features/wchar +++ src/lib/libast/features/wchar 2007-12-20 17:50:28.000000000 +0000 -@@ -7,7 +7,8 @@ cat{ +@@ -8,7 +8,8 @@ cat{ #define _AST_WCHAR_H 1 }end @@ -255,7 +328,7 @@ lib towlower,towupper stdlib.h stdio.h wchar.h typ mbstate_t stdlib.h stdio.h wchar.h nxt wchar -@@ -64,6 +65,12 @@ cat < --- src/lib/libcmd/Mamfile -+++ src/lib/libcmd/Mamfile 2012-01-16 15:02:08.387145418 +0000 -@@ -508,7 +508,7 @@ make cat.o ++++ src/lib/libcmd/Mamfile 2013-02-05 15:11:03.153953100 +0000 +@@ -509,7 +509,7 @@ make cat.o prev cat.c meta cat.o %.c>%.o cat.c cat prev cat.c --exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler ][-author?David Korn ][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -D_BLD_DEBUG -c cat.c -+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler ][-author?David Korn ][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -D_BLD_DEBUG -DSHOPT_MULTIBYTE -c cat.c +-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler ][-author?David Korn ][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -c cat.c ++exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler ][-author?David Korn ][-copyright?Copyright (c) 1992-2012 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -DSHOPT_MULTIBYTE -c cat.c done cat.o generated make chgrp.o prev chgrp.c diff --git a/ksh93-signals.dif b/ksh93-signals.dif index 38eacf2..938b8d5 100644 --- a/ksh93-signals.dif +++ b/ksh93-signals.dif @@ -1,5 +1,5 @@ --- src/cmd/ksh93/data/signals.c -+++ src/cmd/ksh93/data/signals.c 2012-02-06 11:16:53.970131637 +0100 ++++ src/cmd/ksh93/data/signals.c 2012-02-06 10:16:54.000000000 +0000 @@ -18,6 +18,9 @@ * * ***********************************************************************/ @@ -11,8 +11,8 @@ #if defined(SIGCLD) && !defined(SIGCHLD) # define SIGCHLD SIGCLD --- src/cmd/ksh93/sh/xec.c -+++ src/cmd/ksh93/sh/xec.c 2007-12-21 13:28:04.000000000 +0100 -@@ -2894,6 +2894,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons ++++ src/cmd/ksh93/sh/xec.c 2007-12-21 12:28:04.000000000 +0000 +@@ -3834,6 +3834,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_DFL); signal(SIGTTOU,SIG_DFL); @@ -20,7 +20,7 @@ } #endif /* SIGTSTP */ #ifdef JOBS -@@ -2931,6 +2932,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons +@@ -3871,6 +3872,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_IGN); signal(SIGTTOU,SIG_IGN); @@ -30,7 +30,7 @@ } #endif /* SIGTSTP */ if(spawnpid>0) -@@ -3011,6 +3015,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons +@@ -3951,6 +3955,7 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_DFL); signal(SIGTTOU,SIG_DFL); @@ -38,7 +38,7 @@ jobwasset++; } #endif /* SIGTSTP */ -@@ -3069,6 +3074,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons +@@ -4013,6 +4018,9 @@ static pid_t sh_ntfork(Shell_t *shp,cons { signal(SIGTTIN,SIG_IGN); signal(SIGTTOU,SIG_IGN); diff --git a/ksh93-suid_exec.dif b/ksh93-suid_exec.dif index 9297cdc..0d9bf6f 100644 --- a/ksh93-suid_exec.dif +++ b/ksh93-suid_exec.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/data/msg.c -+++ src/cmd/ksh93/data/msg.c 2007-04-02 14:59:18.748709295 +0000 -@@ -180,7 +180,11 @@ ++++ src/cmd/ksh93/data/msg.c 2007-04-02 14:59:19.000000000 +0000 +@@ -205,7 +205,11 @@ const char e_bash_profile[] = "$HOME/.ba const char e_crondir[] = "/var/spool/cron"; const char e_prohibited[] = "login setuid/setgid shells prohibited"; #if SHOPT_SUID_EXEC @@ -13,7 +13,7 @@ const char hist_fname[] = "/.sh_history"; const char e_dot[] = "."; --- src/cmd/ksh93/sh/suid_exec.c -+++ src/cmd/ksh93/sh/suid_exec.c 2012-02-03 08:36:40.097933528 +0000 ++++ src/cmd/ksh93/sh/suid_exec.c 2012-02-03 08:36:40.000000000 +0000 @@ -62,10 +62,24 @@ #define FDVERIFY 12 /* used to validate /tmp process */ #undef BLKSIZE diff --git a/ksh93-test.dif b/ksh93-test.dif index d2add27..cbd3723 100644 --- a/ksh93-test.dif +++ b/ksh93-test.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/bltins/test.c -+++ src/cmd/ksh93/bltins/test.c 2011-05-20 13:45:24.547925980 +0000 -@@ -46,12 +46,12 @@ ++++ src/cmd/ksh93/bltins/test.c 2011-05-20 13:45:25.000000000 +0000 +@@ -47,12 +47,12 @@ #ifdef S_ISSOCK # if _pipe_socketpair # if _socketpair_shutdown_mode @@ -16,8 +16,8 @@ # endif # define isasock(f,p) (test_stat(f,p)>=0&&S_ISSOCK((p)->st_mode)) #else -@@ -86,7 +86,7 @@ static int test_strmatch(Shell_t *shp,co - int match[2*(MATCH_MAX+1)],n; +@@ -87,7 +87,7 @@ static int test_strmatch(Shell_t *shp,co + regoff_t match[2*(MATCH_MAX+1)],n; register int c, m=0; register const char *cp=pat; - while(c = *cp++) @@ -25,7 +25,7 @@ { if(c=='(') m++; -@@ -460,7 +460,7 @@ int test_unop(Shell_t *shp,register int +@@ -463,7 +463,7 @@ int test_unop(Shell_t *shp,register int int test_binop(Shell_t *shp,register int op,const char *left,const char *right) { diff --git a/ksh93-uname.dif b/ksh93-uname.dif index c0b2cea..6e0c8af 100644 --- a/ksh93-uname.dif +++ b/ksh93-uname.dif @@ -1,6 +1,6 @@ --- src/lib/libcmd/date.c +++ src/lib/libcmd/date.c 2007-03-30 10:51:14.000000000 +0000 -@@ -217,10 +217,19 @@ settime(void* context, const char* cmd, +@@ -226,10 +226,19 @@ settime(Shbltin_t* context, const char* if (!adjust && !network) return tmxsettime(now); argv = args; @@ -20,7 +20,7 @@ if (streq(astconf("UNIVERSE", NiL, NiL), "att")) { tmxfmt(buf, sizeof(buf), "%m%d%H" "%M%Y.%S", now); -@@ -235,6 +244,7 @@ settime(void* context, const char* cmd, +@@ -244,6 +253,7 @@ settime(Shbltin_t* context, const char* if (tm_info.flags & TM_UTC) *argv++ = "-u"; } @@ -52,7 +52,7 @@ #endif #if defined(__STDPP__directive) && defined(__STDPP__hide) -@@ -269,6 +272,9 @@ b_uname(int argc, char** argv, void* con +@@ -269,6 +272,9 @@ b_uname(int argc, char** argv, Shbltin_t { case 'a': flags |= OPT_all|((1L<st.var_local = shp->var_tree; if(!fun) { diff --git a/ksh93-vi.dif b/ksh93-vi.dif index 5ecd74d..04d676b 100644 --- a/ksh93-vi.dif +++ b/ksh93-vi.dif @@ -1,5 +1,5 @@ --- src/cmd/ksh93/edit/vi.c -+++ src/cmd/ksh93/edit/vi.c 2007-03-28 18:41:47.032501418 +0200 ++++ src/cmd/ksh93/edit/vi.c 2007-03-28 16:41:47.000000000 +0000 @@ -401,6 +401,8 @@ int ed_viread(void *context, int fd, reg if(!yankbuf) @@ -18,7 +18,7 @@ *yankbuf = 0; } -@@ -1075,7 +1079,7 @@ static void cdelete(Vi_t *vp,register in +@@ -1137,7 +1141,7 @@ static void cdelete(Vi_t *vp,register in /*** save characters to be deleted ***/ @@ -27,7 +27,7 @@ { i = cp[nchars]; cp[nchars] = 0; -@@ -2047,6 +2051,9 @@ static void save_last(register Vi_t* vp) +@@ -2169,6 +2173,9 @@ static void save_last(register Vi_t* vp) { register int i; @@ -37,7 +37,7 @@ if( (i = cur_virt - first_virt + 1) > 0 ) { /*** save last thing user typed ***/ -@@ -2292,6 +2299,11 @@ static int textmod(register Vi_t *vp,reg +@@ -2417,6 +2424,11 @@ static int textmod(register Vi_t *vp,reg p = yankbuf; } @@ -49,7 +49,7 @@ addin: switch( c ) { -@@ -2564,6 +2576,8 @@ yankeol: +@@ -2687,6 +2699,8 @@ yankeol: vp->lastmotion = c; if( c == 'y' ) { diff --git a/ksh93-vm.dif b/ksh93-vm.dif index c8d96af..6fb3d75 100644 --- a/ksh93-vm.dif +++ b/ksh93-vm.dif @@ -1,6 +1,6 @@ --- src/lib/libast/vmalloc/vmhdr.h -+++ src/lib/libast/vmalloc/vmhdr.h 2012-01-19 09:45:13.651645599 +0000 -@@ -149,6 +149,9 @@ extern void _vmmessage _ARG_((const cha ++++ src/lib/libast/vmalloc/vmhdr.h 2012-01-19 09:45:14.000000000 +0000 +@@ -152,6 +152,9 @@ extern void _vmmessage _ARG_((const cha #endif /*DEBUG*/ #define VMPAGESIZE 8192 @@ -11,8 +11,8 @@ #define GETPAGESIZE(x) ((x) ? (x) : ((x)=getpagesize()) ) #else --- src/lib/libast/vmalloc/vmmopen.c -+++ src/lib/libast/vmalloc/vmmopen.c 2012-01-20 11:13:11.743644776 +0000 -@@ -58,8 +58,10 @@ void _STUB_vmmapopen(){} ++++ src/lib/libast/vmalloc/vmmopen.c 2012-01-20 11:13:12.000000000 +0000 +@@ -63,8 +63,10 @@ void _STUB_vmmapopen(){} /* magic word signaling file/segment is ready */ #define MM_MAGIC ((unsigned int)(('P'<<24) | ('&'<<16) | ('N'<<8) | ('8')) ) @@ -23,7 +23,7 @@ /* macros to get the data section and size */ #define MMHEAD(file) ROUND(sizeof(Mmvm_t)+strlen(file), ALIGN) -@@ -162,10 +164,18 @@ static int mminit(Mmdisc_t* mmdc) +@@ -166,10 +168,18 @@ static int mminit(Mmdisc_t* mmdc) if(mmdc->mmvm) /* already done this */ return 0; diff --git a/ksh93-vmleak.dif b/ksh93-vmleak.dif deleted file mode 100644 index fa49074..0000000 --- a/ksh93-vmleak.dif +++ /dev/null @@ -1,44 +0,0 @@ ---- src/cmd/ksh93/sh/init.c -+++ src/cmd/ksh93/sh/init.c 2012-03-14 12:40:34.986162029 +0000 -@@ -508,24 +508,26 @@ 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; -+ Namfun_t *xp; - ip->ifsnp = 0; -- if(!val) -- { -- fp = nv_stack(np, NIL(Namfun_t*)); -- if(fp && !fp->nofree) -- { -- free((void*)fp); -- fp = 0; -- } -- } -- if(val != np->nvalue.cp) -- nv_putv(np, val, flags, fp); -- if(!val) -+ if(val) - { -- if(fp) -- fp->next = np->nvfun; -- np->nvfun = fp; -+ if(val != np->nvalue.cp) -+ nv_putv(np, val, flags, fp); -+ return; - } -+ 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); -+ if(fp && !fp->nofree) -+ { -+ free((void*)fp); -+ fp = NIL(Namfun_t*); -+ } -+ nv_putv(np, NIL(char*), flags, fp); -+ if(fp) -+ fp->next = np->nvfun; -+ np->nvfun = fp; - } - - /* diff --git a/ksh93-zerofill.dif b/ksh93-zerofill.dif index e04ed92..4f1d624 100644 --- a/ksh93-zerofill.dif +++ b/ksh93-zerofill.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/bltins/typeset.c -+++ src/cmd/ksh93/bltins/typeset.c 2012-10-19 16:56:48.561818559 +0200 -@@ -746,6 +746,7 @@ ++++ src/cmd/ksh93/bltins/typeset.c 2012-10-19 14:56:49.000000000 +0000 +@@ -756,6 +756,7 @@ static int setall(char **argv,regist } if (tp->aflag == '-') { @@ -8,7 +8,7 @@ if((flag&NV_EXPORT) && (strchr(name,'.') || nv_isvtree(np))) errormsg(SH_DICT,ERROR_exit(1),e_badexport,name); #if SHOPT_BSH -@@ -764,6 +765,9 @@ +@@ -774,6 +775,9 @@ static int setall(char **argv,regist else if(!(flag&NV_LJUST)) newflag &= ~NV_LJUST; } @@ -18,12 +18,3 @@ } else { -@@ -1222,7 +1226,7 @@ - if(shp->subshell) - np=sh_assignok(np,0); - } -- if(!nv_isnull(np)) -+ if(!nv_isnull(np) || nv_size(np) || nv_isattr(np,~(NV_MINIMAL|NV_NOFREE))) - _nv_unset(np,0); - if(troot==shp->var_tree && shp->st.real_fun && (dp=shp->var_tree->walk) && dp==shp->st.real_fun->sdict) - nv_delete(np,dp,NV_NOFREE); diff --git a/ksh93.dif b/ksh93.dif index e7be209..60cade9 100644 --- a/ksh93.dif +++ b/ksh93.dif @@ -1,6 +1,6 @@ --- src/cmd/ksh93/bltins/print.c +++ src/cmd/ksh93/bltins/print.c 2008-05-05 11:20:21.000000000 +0000 -@@ -86,7 +86,11 @@ static char* nullarg[] = { 0, 0 }; +@@ -105,7 +105,11 @@ static char* nullarg[] = { 0, 0 }; { static char bsd_univ; struct print prdata; @@ -13,7 +13,7 @@ prdata.raw = prdata.echon = 0; prdata.sh = context->shp; NOT_USED(argc); -@@ -99,7 +103,52 @@ static char* nullarg[] = { 0, 0 }; +@@ -118,7 +122,52 @@ static char* nullarg[] = { 0, 0 }; prdata.sh->universe = 1; } if(!bsd_univ) @@ -68,7 +68,7 @@ while(argv[1] && *argv[1]=='-') --- src/cmd/ksh93/data/msg.c +++ src/cmd/ksh93/data/msg.c 2007-12-20 18:01:26.000000000 +0000 -@@ -199,7 +199,7 @@ const char e_bash_login[] = "$HOME/.bash +@@ -202,7 +202,7 @@ const char e_bash_login[] = "$HOME/.bash const char e_bash_logout[] = "$HOME/.bash_logout"; const char e_bash_profile[] = "$HOME/.bash_profile"; #endif @@ -79,7 +79,7 @@ const char e_suidexec[] = "/etc/suid_exec"; --- src/cmd/ksh93/data/variables.c +++ src/cmd/ksh93/data/variables.c 2008-09-18 17:22:24.000000000 +0000 -@@ -68,7 +68,7 @@ const struct shtable2 shtab_variables[] +@@ -69,7 +69,7 @@ const struct shtable2 shtab_variables[] "OPTARG", 0, (char*)0, "OPTIND", NV_NOFREE|NV_INTEGER, (char*)0, "PS4", 0, (char*)0, @@ -112,7 +112,7 @@ except possibly the last, --- src/cmd/ksh93/sh/main.c +++ src/cmd/ksh93/sh/main.c 2007-12-20 18:01:26.000000000 +0000 -@@ -130,9 +130,9 @@ int sh_source(Shell_t *shp, Sfio_t *iop, +@@ -113,9 +113,9 @@ int sh_source(Shell_t *shp, Sfio_t *iop, } #ifdef S_ISSOCK @@ -124,7 +124,7 @@ #endif int sh_main(int ac, char *av[], Shinit_f userinit) -@@ -199,7 +199,7 @@ int sh_main(int ac, char *av[], Shinit_f +@@ -179,7 +179,7 @@ int sh_main(int ac, char *av[], Shinit_f } if(!sh_isoption(SH_RC) && (sh_isoption(SH_BASH) && !sh_isoption(SH_POSIX) #if SHOPT_REMOTE @@ -134,8 +134,8 @@ )) sh_onoption(SH_RC); --- src/cmd/ksh93/sh/xec.c -+++ src/cmd/ksh93/sh/xec.c 2012-01-26 12:07:46.463645375 +0000 -@@ -922,7 +922,7 @@ int sh_exec(register const Shnode_t *t, ++++ src/cmd/ksh93/sh/xec.c 2012-01-26 12:07:46.000000000 +0000 +@@ -1015,7 +1015,7 @@ int sh_exec(register const Shnode_t *t, { case TCOM: { @@ -144,7 +144,7 @@ char *trap; Namval_t *np, *nq, *last_table; struct ionod *io; -@@ -1027,7 +1027,7 @@ int sh_exec(register const Shnode_t *t, +@@ -1131,7 +1131,7 @@ int sh_exec(register const Shnode_t *t, comn = com[argn-1]; } io = t->tre.treio; @@ -165,7 +165,7 @@ unset var typeset -b var --- src/cmd/ksh93/tests/bracket.sh -+++ src/cmd/ksh93/tests/bracket.sh 2012-02-09 14:11:32.365933854 +0000 ++++ src/cmd/ksh93/tests/bracket.sh 2012-02-09 14:11:32.000000000 +0000 @@ -221,6 +221,10 @@ done [[ abcdcdabcde == {5}(ab|cd)e ]] || err_exit 'abcdcdabcd == {5}(ab|cd)e' ) || err_exit 'errors with {..}(...) patterns' @@ -187,7 +187,7 @@ [[ -L "$file"/ ]] && err_exit '-L with file/ not working' --- src/cmd/ksh93/tests/builtins.sh +++ src/cmd/ksh93/tests/builtins.sh 2009-07-09 13:14:50.000000000 +0000 -@@ -332,7 +332,7 @@ wait $pid1 +@@ -344,7 +344,7 @@ wait $pid1 (( $? == 1 )) || err_exit "wait not saving exit value" wait $pid2 (( $? == 127 )) || err_exit "subshell job known to parent" @@ -197,88 +197,88 @@ for v in ${v//,/ } do v=${v#*:} --- src/cmd/ksh93/tests/coprocess.sh -+++ src/cmd/ksh93/tests/coprocess.sh 2012-02-09 13:39:13.794169756 +0000 -@@ -107,15 +107,15 @@ ${SHELL-ksh} |& - cop=$! - exp=Done - print -p $'print hello | cat\nprint '$exp --read -t 5 -p --read -t 5 -p -+read -t 50 -p -+read -t 50 -p - got=$REPLY - if [[ $got != $exp ]] - then err_exit "${SHELL-ksh} coprocess io failed -- got '$got', expected '$exp'" - fi - exec 5<&p 6>&p - exec 5<&- 6>&- --{ sleep 4; kill $cop; } 2>/dev/null & -+{ sleep 10; kill $cop; } 2>/dev/null & - spy=$! - if wait $cop 2>/dev/null - then kill $spy 2>/dev/null -@@ -128,10 +128,10 @@ echo line1 | grep 'line2' - echo line2 | grep 'line1' - } |& - SECONDS=0 count=0 --while read -p -t 10 line -+while read -p -t 100 line - do ((count++)) - done --if (( SECONDS > 8 )) -+if (( SECONDS > 80 )) - then err_exit "read -p hanging (SECONDS=$SECONDS count=$count)" - fi - wait $! -@@ -154,7 +154,7 @@ e=12345 - wait $! ++++ src/cmd/ksh93/tests/coprocess.sh 2013-02-01 15:22:31.000000000 +0000 +@@ -113,15 +113,15 @@ do + cop=$! + exp=Done + print -p $'print hello | '$cat$'\nprint '$exp +- read -t 5 -p +- read -t 5 -p ++ read -t 50 -p ++ read -t 50 -p + got=$REPLY + if [[ $got != $exp ]] + then err_exit "${SHELL-ksh} $cat coprocess io failed -- got '$got', expected '$exp'" + fi + exec 5<&p 6>&p + exec 5<&- 6>&- +- { sleep 4; kill $cop; } 2>/dev/null & ++ { sleep 10; kill $cop; } 2>/dev/null & + spy=$! + if wait $cop 2>/dev/null + then kill $spy 2>/dev/null +@@ -134,10 +134,10 @@ do + echo line2 | grep 'line1' + } |& + SECONDS=0 count=0 +- while read -p -t 10 line ++ while read -p -t 100 line + do ((count++)) done - print --) 2>/dev/null | read -t 10 r -+) 2>/dev/null | read -t 100 r - [[ $r == $e ]] || err_exit "coprocess timing bug -- expected $e, got '$r'" - r= - ( -@@ -166,8 +166,9 @@ r= - wait $! +- if (( SECONDS > 8 )) ++ if (( SECONDS > 80 )) + then err_exit "$cat coprocess read -p hanging (SECONDS=$SECONDS count=$count)" + fi + wait $! +@@ -160,7 +160,7 @@ do + wait $! + done + print +- ) 2>/dev/null | read -t 10 r ++ ) 2>/dev/null | read -t 100 r + [[ $r == $e ]] || err_exit "$cat coprocess timing bug -- expected $e, got '$r'" + + r= +@@ -173,8 +173,9 @@ do + wait $! + done + print $r +- ) 2>/dev/null | read -t 10 r ++ ) 2>/dev/null | read -t 100 r + [[ $r == $e ]] || err_exit "$cat coprocess command substitution bug -- expected $e, got '$r'" ++ kill $(jobs -p) 2>/dev/null + + ( + $cat |& +@@ -212,7 +213,7 @@ do done - print $r --) 2>/dev/null | read -t 10 r -+) 2>/dev/null | read -t 100 r - [[ $r == $e ]] || err_exit "coprocess command substitution bug -- expected $e, got '$r'" -+kill $(jobs -p) 2>/dev/null - - ( - /bin/cat |& -@@ -205,7 +206,7 @@ do if ( trap - $sig ) 2> /dev/null - done - - trap 'sleep_pid=; kill $pid; err_exit "coprocess 1 hung"' TERM --{ sleep 5; kill $$; } & -+{ sleep 10; kill $$; } & - sleep_pid=$! - builtin cat - cat |& -@@ -220,7 +221,7 @@ trap - TERM - [[ $sleep_pid ]] && kill $sleep_pid - - trap 'sleep_pid=; kill $pid; err_exit "coprocess 2 hung"' TERM --{ sleep 5; kill $$; } & -+{ sleep 10; kill $$; } & - sleep_pid=$! - cat |& - pid=$! -@@ -232,7 +233,7 @@ trap - TERM - [[ $sleep_pid ]] && kill $sleep_pid - - trap 'sleep_pid=; kill $pid; err_exit "coprocess 3 hung"' TERM --{ sleep 5; kill $$; } & -+{ sleep 10; kill $$; } & - sleep_pid=$! - cat |& - pid=$! + + trap 'sleep_pid=; kill $pid; err_exit "$cat coprocess 1 hung"' TERM +- { sleep 5; kill $$; } & ++ { sleep 10; kill $$; } & + sleep_pid=$! + $cat |& + pid=$! +@@ -226,7 +227,7 @@ do + [[ $sleep_pid ]] && kill $sleep_pid + + trap 'sleep_pid=; kill $pid; err_exit "$cat coprocess 2 hung"' TERM +- { sleep 5; kill $$; } & ++ { sleep 10; kill $$; } & + sleep_pid=$! + $cat |& + pid=$! +@@ -238,7 +239,7 @@ do + [[ $sleep_pid ]] && kill $sleep_pid + + trap 'sleep_pid=; kill $pid; err_exit "$cat coprocess 3 hung"' TERM +- { sleep 5; kill $$; } & ++ { sleep 10; kill $$; } & + sleep_pid=$! + $cat |& + pid=$! --- src/cmd/ksh93/tests/locale.sh -+++ src/cmd/ksh93/tests/locale.sh 2011-05-24 16:46:02.000000000 +0200 ++++ src/cmd/ksh93/tests/locale.sh 2011-05-24 14:46:02.000000000 +0000 @@ -62,7 +62,7 @@ done # this locale is supported by ast on all platforms # EU for { decimal_point="," thousands_sep="." } @@ -319,7 +319,7 @@ ") got=$* --- src/cmd/ksh93/tests/options.sh -+++ src/cmd/ksh93/tests/options.sh 2012-01-16 16:50:59.135145199 +0000 ++++ src/cmd/ksh93/tests/options.sh 2012-01-16 16:50:59.000000000 +0000 @@ -510,7 +510,7 @@ z=$($SHELL 2>&1 -uc 'print ${X2345678901 [[ $z == *X23456789012345:* ]] || err_exit "error message garbled with set -u got $z" @@ -341,7 +341,7 @@ PATH=$path --- src/cmd/ksh93/tests/pty.sh -+++ src/cmd/ksh93/tests/pty.sh 2012-03-15 11:51:40.018434039 +0000 ++++ src/cmd/ksh93/tests/pty.sh 2012-03-15 11:51:40.000000000 +0000 @@ -428,15 +428,16 @@ r echo repeat-3 # err_exit # @@ -362,7 +362,7 @@ 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 ++++ src/cmd/ksh93/tests/signal.sh 2011-05-20 13:25:48.000000000 +0000 @@ -285,10 +285,10 @@ then for exp in TERM VTALRM PIPE $SHELL <<- EOF foo() { return 0; } @@ -378,7 +378,7 @@ } 2>> /dev/null --- src/lib/libast/disc/memfatal.c +++ src/lib/libast/disc/memfatal.c 2009-07-09 13:30:39.000000000 +0000 -@@ -72,7 +72,7 @@ memfatal(void) +@@ -74,7 +74,7 @@ memfatal(void) { Vmdisc_t* disc; @@ -409,7 +409,7 @@ #include "FEATURE/lib" --- src/lib/libast/features/lib +++ src/lib/libast/features/lib 2007-12-20 18:01:26.000000000 +0000 -@@ -523,14 +523,19 @@ tst lib_utime_now note{ utime works with +@@ -538,14 +538,19 @@ tst lib_utime_now note{ utime works with }end tst cross{ @@ -438,7 +438,7 @@ --- src/lib/libast/misc/procopen.c +++ src/lib/libast/misc/procopen.c 2007-12-20 18:01:26.000000000 +0000 -@@ -598,7 +598,7 @@ procopen(const char* cmd, char** argv, c +@@ -599,7 +599,7 @@ procopen(const char* cmd, char** argv, c if (!fork()) { sfsprintf(path, sizeof(path), "%d", getppid()); @@ -448,7 +448,7 @@ } sleep(2); --- src/lib/libast/port/astwinsize.c -+++ src/lib/libast/port/astwinsize.c 2012-02-03 08:58:43.217934605 +0000 ++++ src/lib/libast/port/astwinsize.c 2012-02-03 08:58:43.000000000 +0000 @@ -29,6 +29,10 @@ #include #include @@ -482,9 +482,20 @@ #define S2F_type 2 #define S2F_scan 1 #ifndef elementsof +--- src/lib/libcmd/Mamfile ++++ src/lib/libcmd/Mamfile 2013-02-05 10:41:01.310073683 +0000 +@@ -897,7 +897,7 @@ exec - -e '/^b_[a-z_][a-z_0-9]*(/!d' \ + exec - -e 's/^b_//' \ + exec - -e 's/(.*//' \ + exec - -e 's/.*/CMDLIST(&)/' \ +-exec - | ++exec - cmdinit.c basename.c cat.c chgrp.c chmod.c chown.c cksum.c cmp.c comm.c cp.c cut.c dirname.c date.c expr.c fds.c fmt.c fold.c getconf.c head.c id.c join.c ln.c logname.c md5sum.c mkdir.c mkfifo.c mktemp.c mv.c paste.c pathchk.c pids.c rev.c rm.c rmdir.c stty.c sum.c sync.c tail.c tee.c tty.c uname.c uniq.c vmstate.c wc.c revlib.c wclib.c fts_fix.c lib.c | + exec - sort -u + exec - } > 1.${COTEMP}.h + exec - if cmp 2>/dev/null -s 1.${COTEMP}.h cmdlist.h --- src/lib/libcmd/chmod.c -+++ src/lib/libcmd/chmod.c 2011-05-20 13:28:57.511927049 +0000 -@@ -272,7 +272,7 @@ b_chmod(int argc, char** argv, void* con ++++ src/lib/libcmd/chmod.c 2011-05-20 13:28:58.000000000 +0000 +@@ -272,7 +272,7 @@ b_chmod(int argc, char** argv, Shbltin_t case FTS_SLNONE: if (chlink) { @@ -493,13 +504,3 @@ chmodf = lchmod; goto commit; #else ---- src/lib/libcmd/vmstate.c -+++ src/lib/libcmd/vmstate.c 2012-02-21 13:10:56.085934573 +0000 -@@ -50,6 +50,7 @@ USAGE_LICENSE - - #include - #include -+#include - - typedef struct State_s - { diff --git a/workaround-stupid-build-system.diff b/workaround-stupid-build-system.diff index 16cf59b..626e34b 100644 --- a/workaround-stupid-build-system.diff +++ b/workaround-stupid-build-system.diff @@ -20,7 +20,7 @@ setv YACC yacc --- src/cmd/INIT/iffe.sh +++ src/cmd/INIT/iffe.sh 2008-02-14 12:15:59.000000000 +0000 -@@ -1117,7 +1117,7 @@ case `(getopts '[-][123:xyz]' opt --xyz; +@@ -1170,7 +1170,7 @@ case `(getopts '[-][123:xyz]' opt --xyz; --*) echo $command: $1: unknown option >&2 exit 2 ;; @@ -85,7 +85,7 @@ } --- src/cmd/ksh93/Mamfile -+++ src/cmd/ksh93/Mamfile 2012-02-10 15:30:30.774546719 +0100 ++++ src/cmd/ksh93/Mamfile 2012-02-10 14:30:31.000000000 +0000 @@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS setv ARFLAGS rc setv AS as @@ -140,7 +140,7 @@ make shell prev libshell.a archive --- src/lib/libast/Mamfile -+++ src/lib/libast/Mamfile 2012-03-14 11:36:06.073934348 +0000 ++++ src/lib/libast/Mamfile 2013-02-05 15:08:23.757451837 +0000 @@ -5,7 +5,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS setv ARFLAGS rc setv AS as @@ -159,7 +159,7 @@ setv SILENT setv TAR tar setv YACC yacc -@@ -999,7 +999,7 @@ make lcgen +@@ -1003,7 +1003,7 @@ make lcgen make port/lcgen.c prev std/stdio.h implicit done port/lcgen.c @@ -168,8 +168,8 @@ done lcgen generated make port/lc.tab done port/lc.tab -@@ -7282,64 +7282,37 @@ done ${INSTALLROOT}/lib/file/magic gener - make ${INSTALLROOT}/include/ast/fmtmsg.h +@@ -7291,58 +7291,31 @@ exec - test '' = 'misc/magic.tab' || ${S + done ${INSTALLROOT}/lib/file/magic generated prev comp/fmtmsg.h prev ast_lib.h -exec - case ${mam_cc_HOSTTYPE} in @@ -189,9 +189,6 @@ exec - } -exec - ;; -exec - esac - prev ${INSTALLROOT}/include/prototyped.h implicit - done ${INSTALLROOT}/include/ast/fmtmsg.h generated - make ${INSTALLROOT}/include/ast/libgen.h prev comp/libgen.h prev ast_lib.h -exec - case ${mam_cc_HOSTTYPE} in @@ -211,9 +208,6 @@ exec - } -exec - ;; -exec - esac - prev ${INSTALLROOT}/include/prototyped.h implicit - done ${INSTALLROOT}/include/ast/libgen.h generated - make ${INSTALLROOT}/include/ast/syslog.h prev comp/syslog.h prev ast_lib.h -exec - case ${mam_cc_HOSTTYPE} in @@ -233,11 +227,11 @@ exec - } -exec - ;; -exec - esac - prev ast_namval.h implicit - prev ${INSTALLROOT}/include/prototyped.h implicit - done ${INSTALLROOT}/include/ast/syslog.h generated + done install virtual + make test + done test dontcare virtual --- src/lib/libcmd/Mamfile -+++ src/lib/libcmd/Mamfile 2012-02-06 10:06:34.179552617 +0000 ++++ src/lib/libcmd/Mamfile 2013-02-05 15:13:53.797951789 +0000 @@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS setv ARFLAGS rc setv AS as @@ -245,7 +239,7 @@ -setv CC cc +setv CC gcc setv mam_cc_FLAGS ${mam_cc_DLL} - setv CCFLAGS ${mam_cc_DEBUG} + 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 setv NMAKEFLAGS @@ -278,7 +272,7 @@ setv YACC yacc --- src/lib/libpp/Mamfile +++ src/lib/libpp/Mamfile 2012-01-24 18:31:22.000000000 +0000 -@@ -661,7 +661,7 @@ exec - . +@@ -663,7 +663,7 @@ exec - . exec - w exec - q exec - ! @@ -287,7 +281,7 @@ exec - ./${COTEMP}.exe > pp.yacc exec - rm -f 1.${COTEMP}.c ${COTEMP}.exe done pp.yacc generated -@@ -703,7 +703,7 @@ exec - . +@@ -705,7 +705,7 @@ exec - . exec - w exec - q exec - !