Dr. Werner Fink 2013-02-05 17:51:33 +00:00 committed by Git OBS Bridge
parent 88e8772d9e
commit 1644ebabb5
36 changed files with 774 additions and 780 deletions

View File

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

3
INIT.2012-08-01.tar.bz2 Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,3 +1,230 @@
-------------------------------------------------------------------
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 <tab> 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 <CR> 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; <nl> 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 <<< $(<file) was not processed
correctly has been fixed.
12-05-15 The default value for -L, -R, and -Z when the size was not set was
incorrectly defaulting to 1 and has been fixed.
12-05-15 A bug in which a subshell of the form (name=value exec ...) could
coredump when name is an environment variable and xtrace is on has
been fixed.
12-05-15 Fixed a .paths bug in which only the first BUILTIN_LIB assignment worked.
12-05-14 Arithmetic expressions and subexpressions that are not floating point
now treat -0 as 0, so that $((-0)) is 0 and $((-0.0)) is -0.
12-05-11 'unset .sh' now fails with readonly message instead of coredump.
12-05-11 A bug which left an associative array arr containing one element in
the wrong state after expanding with ${arr[@]} has been fixed.
12-05-10 A bug in which typeset -f did not display options that called getopts
has been fixed.
12-05-08 Fixed a number of potential bugs uncovered by valgrind.
12-05-08 A bug in which typeset -b -Z10 var did not initialize var to the
empty string has been fixed.
12-05-07 A bug in which the exit value of an interactive shell could be
affected by the evaluation of the PS1 prompt has been fixed.
12-05-04 A bug in which x=() was not unsetting the old value of x before
creating an empty compound variable has been fixed.
12-05-01 A bug in vi edit mode in which after <ESC>^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 bar<ESC>0i<ESC>l 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 <tab> 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

View File

@ -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 <cmdlist.h>
#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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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,'\\');
}
}

View File

@ -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 <math.h>"
case $_hdr_ieeefp in
1) echo "#include <ieeefp.h>" ;;
@ -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)

View File

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

View File

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

View File

@ -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 <<!
${head}
#include <sys/types.h>
@ -21,7 +21,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
#undef conf
@@ -813,7 +817,11 @@ unsigned int conf[] = {
@@ -829,7 +833,11 @@ unsigned int conf[] = {
cat <<!
${head}
#include <sys/types.h>
@ -33,7 +33,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
#undef conf
@@ -854,7 +862,11 @@ done
@@ -870,7 +878,11 @@ done
cat <<!
${head}
#include <sys/types.h>
@ -45,7 +45,7 @@
#include <unistd.h>$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 <stdio.h>
#include <sys/types.h>
@ -66,7 +66,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
int
@@ -1107,7 +1123,11 @@ main()
@@ -1123,7 +1139,11 @@ main()
${head}
#include <stdio.h>
#include <sys/types.h>
@ -78,7 +78,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
${script}
@@ -1254,7 +1274,11 @@ printf("#endif\n");
@@ -1270,7 +1290,11 @@ printf("#endif\n");
*) cat > $tmp.c <<!
${head}
#include <sys/types.h>
@ -90,7 +90,7 @@
#include <unistd.h>$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 <<!
${head}
#include <sys/types.h>

View File

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

View File

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

View File

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

View File

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

View File

@ -1,11 +1,11 @@
--- src/cmd/ksh93/bltins/read.c
+++ src/cmd/ksh93/bltins/read.c 2008-12-17 14:01:01.000000000 +0000
@@ -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))

View File

@ -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,72 @@
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-05 16:41:12.997452597 +0000
@@ -2026,6 +2026,9 @@ static void comsubst(Mac_t *mp,register
struct _mac_ savemac;
int savtop = stktell(stkp);
char lastc=0, *savptr = stkfreeze(stkp,0);
+#if SHOPT_MULTIBYTE
+ 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 +2209,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 +2231,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)
+ {
+ 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 +2262,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 +2373,13 @@ static void mac_copy(register Mac_t *mp,
if(mp->pattern)
{
char *sp = "&|()";
@ -135,7 +199,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 +208,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 +218,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 +309,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 +319,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 <<!
@@ -68,6 +69,12 @@ cat <<!
#undef putwc
#undef putwchar
#undef ungetwc
@ -268,7 +332,7 @@
#define fgetwc _ast_fgetwc
#define fgetws _ast_fgetws
@@ -114,6 +121,12 @@ cat <<!
@@ -118,6 +125,12 @@ cat <<!
#if !_lib_wcstombs
extern size_t wcstombs(char*, const wchar_t*, size_t);
#endif
@ -321,13 +385,13 @@
#include <stk.h>
--- 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 <gsf@research.att.com>][-author?David Korn <dgk@research.att.com>][-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 <gsf@research.att.com>][-author?David Korn <dgk@research.att.com>][-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 <gsf@research.att.com>][-author?David Korn <dgk@research.att.com>][-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 <gsf@research.att.com>][-author?David Korn <dgk@research.att.com>][-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

View File

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

View File

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

View File

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

View File

@ -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<<OPT_ALL)-1);
@ -62,7 +62,7 @@
continue;
case 'b':
flags |= OPT_base;
@@ -325,7 +331,11 @@ b_uname(int argc, char** argv, void* con
@@ -325,7 +331,11 @@ b_uname(int argc, char** argv, Shbltin_t
sethost = opt_info.arg;
continue;
case ':':
@ -74,7 +74,7 @@
if (!streq(argv[0], s) && (!eaccess(s, X_OK) || !eaccess(s+=4, X_OK)))
{
argv[0] = s;
@@ -394,13 +404,49 @@ b_uname(int argc, char** argv, void* con
@@ -394,13 +404,49 @@ b_uname(int argc, char** argv, Shbltin_t
output(OPT_machine, ut.machine, "machine");
if (flags & OPT_processor)
{

View File

@ -1,6 +1,6 @@
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-07-04 15:42:20.779925941 +0000
@@ -3294,7 +3294,8 @@ int sh_funscope(int argn, char *argv[],i
+++ src/cmd/ksh93/sh/xec.c 2011-07-04 15:42:21.000000000 +0000
@@ -3387,7 +3387,8 @@ int sh_funscope(int argn, char *argv[],i
shp->st.var_local = shp->var_tree;
if(!fun)
{

View File

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

View File

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

View File

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

View File

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

155
ksh93.dif
View File

@ -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} |&
+++ 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
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'"
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 &
- { 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'
@@ -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
- 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)"
- if (( SECONDS > 8 ))
+ if (( SECONDS > 80 ))
then err_exit "$cat coprocess read -p hanging (SECONDS=$SECONDS count=$count)"
fi
wait $!
@@ -154,7 +154,7 @@ e=12345
@@ -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 "coprocess timing bug -- expected $e, got '$r'"
- ) 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=
(
@@ -166,8 +166,9 @@ 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 "coprocess command substitution bug -- expected $e, got '$r'"
+kill $(jobs -p) 2>/dev/null
- ) 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
(
/bin/cat |&
@@ -205,7 +206,7 @@ do if ( trap - $sig ) 2> /dev/null
$cat |&
@@ -212,7 +213,7 @@ do
done
trap 'sleep_pid=; kill $pid; err_exit "coprocess 1 hung"' TERM
-{ sleep 5; kill $$; } &
+{ sleep 10; kill $$; } &
trap 'sleep_pid=; kill $pid; err_exit "$cat 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 |&
$cat |&
pid=$!
@@ -232,7 +233,7 @@ trap - TERM
@@ -226,7 +227,7 @@ do
[[ $sleep_pid ]] && kill $sleep_pid
trap 'sleep_pid=; kill $pid; err_exit "coprocess 3 hung"' TERM
-{ sleep 5; kill $$; } &
+{ sleep 10; kill $$; } &
trap 'sleep_pid=; kill $pid; err_exit "$cat coprocess 2 hung"' TERM
- { sleep 5; kill $$; } &
+ { sleep 10; kill $$; } &
sleep_pid=$!
cat |&
$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 <ast.h>
#include <ast_tty.h>
@ -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 <cmd.h>
#include <vmalloc.h>
+#include <sfdisc.h>
typedef struct State_s
{

View File

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