Dr. Werner Fink 2011-09-02 12:19:30 +00:00 committed by Git OBS Bridge
parent 27a8d31897
commit 1f0b1fbaae
31 changed files with 752 additions and 809 deletions

View File

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

3
INIT.2011-06-30.tar.bz2 Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,8 @@
--- lib/package/ast-ksh.pkg
+++ lib/package/ast-ksh.pkg 2011-07-05 16:29:57.891926052 +0000
@@ -1,4 +1,4 @@
-ast-ksh :PACKAGE: ksh93 libast libcmd libsum libdll
+ast-ksh :PACKAGE: msgcc ksh93 libpp libast libcmd libsum libdll
-ast-ksh :PACKAGE: ksh93 libast libcmd libcoshell libsum libdll
+ast-ksh :PACKAGE: msgcc ksh93 libpp libast libcmd libcoshell libsum libdll
:COVERS: ksh

View File

@ -1,3 +1,26 @@
-------------------------------------------------------------------
Tue Aug 30 16:44:06 UTC 2011 - werner@suse.de
- Implement a patch for both regressions reported here
mailman.research.att.com/pipermail/ast-developers/2011q3/000951.html
-------------------------------------------------------------------
Mon Aug 15 16:46:10 UTC 2011 - werner@suse.de
- Add patch from mailing list to avoid stupid crahs on empty job list.
-------------------------------------------------------------------
Fri Jul 22 14:56:27 UTC 2011 - werner@suse.de
- Fix a typo in the patch
-------------------------------------------------------------------
Fri Jul 22 11:29:02 UTC 2011 - werner@suse.de
- Add and modify a patch from David korn to be able to handle multi
byte characters at the boundary of the buffer used for parsing
here documents (bnc#705032)
-------------------------------------------------------------------
Thu Jul 7 12:48:24 UTC 2011 - werner@suse.de
@ -20,6 +43,53 @@ Mon Jul 4 15:19:20 UTC 2011 - werner@suse.de
- Avoid crash on unset of function within the same function
-------------------------------------------------------------------
Thu Jun 30 16:04:22 CEST 2011 - werner@suse.de
- Update to 2011-06-30 of ksh93u which includes our patches for
several problems (e.g. Shift.JIS, S390, bnc#697394):
11-06-22 The shell compiler now supports process substitution.
11-06-22 +Added code to support process substitution on systems that do
not supply the /dev/fd directory.
11-06-21 Fixed extraneous jobs Done messages when builin is at the end of a
pipeline.
11-06-20 Fixed two regression tests.
11-06-20 Fixed a bug introduced on last update.
11-06-14 A bug with pipefail in which the shell would wait for background
jobs to complete has been fixed.
11-06-09 A bug which caused the options.sh regression test to fail on OS390
Linux has been fixed. The bug could also have affected other systems.
11-06-07 A number of changes to support the still undocuments namespace option
have been added.
11-06-06 A bug in which command substitution of eval would hang when it had
standard error redirected to standard output has been fixed.
11-06-01 A bug in case statement fall through (;&) ignoring set -e was fixed.
11-06-01 A bug in which creating a left or right justified upper or lowercase
variable with an empty string has been fixed.
11-06-01 A bug in which the .paths directory wasn't read when a subshell was
executed before any other command has been fixed.
11-05-31 The shell now gives an error when a type variable is assigned to
an array instance when the array has been declared a compound variable
array.
11-05-31 A bug in which typeset -m of an array instance did not remove the
original instance has been fixed.
11-05-28 A bug in which typeset -m dest=src fails when src and are passed as
name references was fixed.
11-05-28 A bug in which typeset -m "c.board[1][i]=el", where el is a compound
variable core dumps has been fixed.
11-05-28 Two bugs in the display of arrays of compound variables with print -v
have been fixed.
11-05-27 A bug with command substitution with the shift jis locale has been
fixed.
11-05-25 A bug in which unset -f foo, called within function foo could cause
the shell to core dump has been fixed.
11-05-24 A bug in unsetting arrays of compound variables that could lead to
a core dump has been fixed.
11-05-24 A scoping bug in with typeset -m for variables passed as references
has been fixed.
11-05-09 A bug in which 'typeset +p array[$i]' in a subshell could cause an
exception has been fixed.
-------------------------------------------------------------------
Tue Jun 14 11:36:28 UTC 2011 - werner@suse.de
@ -57,6 +127,381 @@ Fri May 13 15:29:04 UTC 2011 - werner@suse.de
- Add workaround to enforce synchronization on here documents done
for forked sub shell or processes (bnc#690623)
-------------------------------------------------------------------
Thu May 05 15:44:33 CEST 2011 - werner@suse.de
- Update to 2011-05-05 of ksh93u which includes various fixes for
e.g. bnc#690623, bnc#661875, and bnc#636389, from RELEASE notes:
11-05-03 Two more scoping bug with name references and read -C were fixed.
11-05-03 A potential race condition which occurs when here-documents are
processed in asynchronous blocks has been eliminated.
11-05-02 Another scoping bug with name references defined in a function has
been fixed.
11-05-02 A bug in which the shell discards saved exit status of a job if it is
followed by a subshell execution has been fixed.
11-04-28 The shell now checks for numerical overflows with process ids.
11-04-28 Another scoping bug with compound variables defined by name references
inside a function has been fixed.
11-04-28 A bug which caused a core dump on 32 bit systems with the basic.sh
regression test has been fixed.
11-04-27 A scope binding error for name references has been fixed.
11-04-27 Assignment of compound variable to compound array element by name
is now working.
11-04-25 A bug in the references to two domensional compound arrays has
been fixed.
11-04-20 A bug in which a name reference to a multidimentional index array
index, nameref x=foo[3][4], did not work correctly has been fixed.
11-04-18 Changes were added to allow fixed size arrays of variable sized
objects when the SHOPT_FIXEDARRAY compile option defined on 10-09-28.
11-04-18 A bug in which name references to array elements could fail has
been fixed.
11-04-11 A bug in which readonly var, where var is exported could cause var
to be unset has been fixed.
11-04-06 A tokenizer bug in which ${x/{3}(\d)/ } would cause in infinite
loop has been fixed.
11-04-05 A bug in which ${!x.} could cause a core dump has been fixed.
11-04-04 A bug in which cleaning out the history file could terminate before
keeping all the recent history events has been fixed.
11-03-29 A bug in which ${#array[@]} was 1 rather than 0 after issuing
typeset array[7] has been fixed.
11-03-29 The subscript out or range message for fixed arrays has been fixed.
11-03-29 A bug in which suspend could cause a core dump has been fixed.
11-03-24 For the showme option added 09-09-09, commands beginning with a ;
inside an arithmetic for loop, no longer produce syntax errors.
11-03-18 A bug in _WINIX ~domain/user expansion has been fixed.
11-03-16 A bug in the pipefail option which could cause a script to hang
has been fixed.
11-03-12 The shell no longer treats ${##pattern} as a syntax error.
11-03-11 A bug in typeset -u on systems that don't supply the towctrans()
function has been fixed.
11-03-11 A bug in which a compound assignment of the form var[sub]=(...)
would evaluate sub for each assignment has been fixed.
11-03-07 A bug in which reassigning a compound variable to an associative
array index could incorrectly increase the count of the number
of elements has been fixed.
11-03-04 +The tilde expansion on windows has been modifed to handle user
names of the form domain/user so that ~domain/user now expands
to the home directory of that domain user.
11-03-03 A bug in which the width of the prompt was calculated incorectly
which cause the wrong line length for edit commands has been fixed.
11-03-02 A bug in which a global variables set from within a function inside
a subshell can leave side effects in parent shell has been fixed.
11-03-01 A bug in which whence -a could dump core when the first match
was due to : in PATH and the program was in the current directory.
11-02-28 A bug in emacs mode with SHOPT_EDPREDICT (added on 10-05-20) which
disabled prediction on a line starting with # when the cursor was not
at the end of line has been fixed.
11-02-28 The output format for compound variables with set has been fixed.
11-02-25 A bug which could lead to a core dump occurred when a shell script
without #! is invoked by name from a parent shell that has name
references defined and the script creates name references of the
same name.
11-02-21 The shell now fails with a syntax error when a here-document in a
command substition is not completed before the closing )
11-02-18 A bug in which the value of $0 in a function defined by name()
was changed to name has been fixed.
11-02-17 A bug in which the declaration typeset var[100] did not work
correctly has been fixed.
11-02-15 A bug in which [[ -v sh.match ]] did not work correctly has been
fixed.
11-02-08 A bug in which opening standard output after it has been closed with
exec 1>&- doesn't work has been fixed.
11-02-07 A bug on some systems for which a command subtitution could hang
has been fixed.
11-01-28 A bug in file name completion for files containing both multibyte
characters shell special characters has been fixed.
11-01-18 The .sh.match variable now shows elements that do not match as
as not set rather than an empty string.
11-01-18 A bug with typeset -m of an array into an element of an indexed
array has been fixed.
11-01-13 A bug in handling of arrays of compound variables inside ((...)) which
reported a syntax error been fixed.
11-01-10 A bug in arithmetic assignment operators of the form op= for array
variables when the same array was referenced on the left and the
right hand side with different indices has been fixed.
11-01-10 A bug in which the output of time was lost when { time...;} 2>&1
occured inside command substition has been fixed.
11-01-07 [[ -v sh.match[i] ]] was returning false when sh.match[i] was set.
11-01-05 Added and modified warning messages with sh -n.
11-01-02 Fixed bugs with typeset -l/-u/-M and arrays.
10-12-28 Fixed a bug with typeset -l/-u/-M values in arithmetric expressions.
10-12-26 Fixed a time parsing bug in sleep and localeconv() initialization.
10-12-23 Prevented the shell from generating a core dump when it sends itself
a termination signal because the last command terminated with that
signal. This prevents a core dump to be overwritten by the shell.
10-12-22 A bug in the expansion of ${A[@]} ${B[@]}, introduced in 10-12-01
when A="" B=B has been fixed.
10-12-21 +Use MS_3D in b_vpath() for setting win32 WoW mount defaults.
10-12-17 A bug in the expansion of ${var:i:j} which caused a core dump when
i > ${#var} has been fixed.
10-12-16 +sleep now treats . as decimal point even in locales that use comma.
10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer
mapping as provided with wctrans().
10-12-10 A bug in which typeset -l displayed namespaces as well as lower case
variables has been fixed.
10-12-06 A bug in which a pipeline could terminate prematurely for a pipeline
whose right hand side is a builtin, and whose left hand side ends in
a simple command that has standard output redirected has been fixed.
10-12-06 A bug in hexfloat assignments when the right hand side is a string
variable starting with 0x has been fixed.
10-12-01 A bug in the expansion of ${$1+"$@"} which causes the last positional
parameter to disappear when it is empty has been fixed.
10-12-01 A number of changes were made to reduce the startup time.
10-11-29 When wait is interrupted by a signal that is caught, it now exits
with a non-zero exit status.
10-11-29 An incorrect warning message was eliminated with the -n option for
arithmetic expressions with associative arrays.
10-11-29 Some changes were made to slightly reduces startup time.
10-11-24 A bug in which a name reference is make to arr[0] when arr is not
an array has been fixed.
10-11-23 If a type definition is made without a compound variable assignment it
produces an error message and no longer shows up as a defined type.
10-11-22 The handling of \ inside [...] for for shell and ~(E) patterns has
been fixed.
10-11-22 A patch was made to pfsh to handle an error case.
10-11-22 +Modified types defined in namespace so that they do not clash with
types in other namespaces. Types can be referenced using .namespace.typename.
10-11-22 A bug which caused functions addressed as .namespace.funct to not
work has been fixed.
10-11-22 A bug in which if nr was a name reference to an unset associative
array subscript, then ${!nr} did not output the subscript correctly
has been fixed.
10-11-18 A bug in which shcomp -n was not processing double quotes correctly
has been fixed.
10-11-18 Fixed a bug in which typeset -T foo; typeset -T could cause a
core dump.
10-11-17 Fixed a bug in which the error message for set -u could come out
garbeled.
10-11-17 Modified the parser so that typeset -a var=(...) no longer checks
the first index for aliases and reserved words.
10-11-17 A bug in which a subshell command consisted of only a for or until
command has been fixed.
10-11-16 Fixed a bug in which typeset -u would display namespace variables
as well as upper case variables.
10-11-16 A bug which could cause a core dump when unsetting a type variable
when there are references to type elements has been fixed.
10-11-15 A bug which could cause a core dump when unsetting a compound
array variable when there are references to array subscripts has
been fixed.
10-11-15 A bug in which using typeset -m to move an indexed array instance
to another array could cause the array to display incorrectly has
been fixed.
10-11-12 A bug in which the unset discipline function for a type is called
when the type is initialized has been fixed.
10-11-12 The sequences \< and \> are now preserved after patterns contaning
~(E) in ${var/pattern/string} expansions.
10-11-11 A bug in typeset -m when the variables were compound arrary instances
has been fixed.
10-11-10 A bug in output of a compound variable with types containing types
has been fixed.
10-11-10 Fixed ``name=value export [-p]'' to list environment.
10-11-09 shtests resets SIGPIPE to SIG_DFL for all tests.
10-11-09 Fixed a bug in expansion of $"..." when used in assignments.
10-11-09 Fixed a getaddrinfo() memory leak that didn't call freeaddrinfo()
after an interrupt.
10-11-08 Modified the behavior of set -u so that the shell terminates with
error message when when var is unset with ${!var} and ${#var}.
10-11-02 Fix a bug in which a signal received while in a subshell could be
ignored.
10-10-26 Fix a bug where terminal interrupt was ignored while in vi/emacs
edit search mode.
10-10-26 Fix $'a\0b'c to expand to 'ac'.
10-10-26 Provide user defined round() if not in <math.h>.
10-10-26 Fix bug where $((undefined_function(1))) dumped core.
10-10-22 Provide user defined iszero() if not in <math.h>.
10-10-22 Fixed a bug with BGX compile option that could cause the shell to hang.
10-10-22 Fixed a bug with user define math function on systems for which
char is unsigned.
10-10-21 A bug in which function autoloaded in a function leaves a file open
has been fixed.
10-10-20 Modified the behavior of set -u so that the shell terminates when
when var is unset with ${var op string} when op is #, % or /.
10-10-20 Fixed a bug with the AUDIT option in which the audit file was not
not close-on-exec.
10-10-20 +Made a number of changes and fixes for the NAMESPACE compile option
which as added on 10-06-09 but some problems still remain.
10-10-15 Fixed a bug in which arithmetic functions (added on 10-03-24) did
not work when the function definition was in the same compound
command in which the function was referenced.
10-10-13 A bug in which creating an associative array of compound variables
with no members as an element of a compound variable did not work
has been fixed.
10-10-08 A bug in which killing the last command in a function defined
with function name, terminated the calling script has been fixed.
10-10-08 A bug which could cause a core dump if IFS is unset inside a function
has been fixed.
10-10-07 +To reduce unwanted side effects, invoking typeset without the export
option and without an assignment now causes the variables to be unset
if the variable is inherited from the environment.
10-10-06 The closing brace for ${ command } is now a token no matter what
character follows it.
10-10-04 The change for $'...' expansion on 10-08-09 did not expand parameters
contained in the error message and this has been fixed.
10-10-04 A bug in which a declaration of indexed array (-a_ in a type
definition would be displayed as a compound indexed array (-C -a)
has been fixed.
10-09-30 The C99 math funtion ldexp has been added.
10-09-30 A bug with two dimensional arrays with expansion of the form
${ref[0..5]} where ref is a nameref to array[i] has been fixed.
10-09-29 A bug in which an eval with redirections invoked from a dot script
would not restore the file has been fixed.
10-09-29 A bug in which loading a function from FPATH could leave a file
descriptor open has been fixed.
10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being
evaluation. It allows fixed sized indexed arrays be to defined
using "typeset array[dim1][dim2]...[dimn]". Fixed sized arrays
are used the same way indexed arrays are. Currently, only fixed
arrays of fixed objects (float, int, and justifies objects) are
supported.
10-09-22 A bug which could cause an excpetion when a function with static
variables was redefined has been fixed.
10-09-21 A bug in the processing of (command&) which created a job in the
parent process has been fixed.
10-09-21 A for loop optimization bug with arithmetic expression evaluation
has been fixed.
10-09-21 A bug in which a recursive function containing a pipeline could
lead to an exception fixed after 8 levels of recursion has been
fixed.
10-09-18 A bug in which the count of elements in an array was wrong leading
to an excpetion has been fixed.
10-09-13 A bug which occured when both xtrace and showme options where
specified in which the xtrace option disabled showme has been fixed.
10-09-13 A bug in which creating a reference to an array variable with any
elements could cause subsequent array elements to be treated as
compound variables has been fixed.
10-09-09 A bug which caused ((c.ar[x][y])) to be treated as a syntax error
has been fixed.
10-09-08 A bug in the processing of references to multidimensional arrays
in arithmetic expressions has been fixed.
10-09-08 A bug in the handling of multi-dimensional arrays which caused
the number of elements in each dimension to be incorrect has
been fixed.
10-09-07 The change for messages on 10-08-09 did not handle message in
assignments and this has been fixed.
10-09-07 A bug in the indentation of compound variables in arrays when
output with print -v has been fixed.
10-09-07 A rare bug with indexed arrays when assigned a null string that could
cause a core dump has been fixed.
10-09-03 A number of changes were made for jobs pools.
10-08-31 typeset -p was modified to output name references after other
variables so that the output could be used as input.
10-08-31 A bug with typeset -p in which variables with attributes but
without attributes were not displayed correctly has been fixed.
10-08-27 +When running a subshell, the current pool is unset.
10-08-27 A bug in which jobs started from within for or while lists in
interactive shells could generate completion messages has been fixed.
10-08-25 Fixed a couple of bugs related to job pools.
10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of
those names are handled by the shell.
10-08-24 A bug in the running of a compiled dot script in which only the
first command was executed has been fixed.
10-08-23 A bug which sometimes caused a core dump with a confgire script
has been fixed.
10-08-20 A bug in command substitution which caused a configure script to
hang has been fixed.
10-08-19 Eliminated unnecessary ; from output of compound variable with
typeset -p.
10-08-17 Fixed a bug in command substitution in which under certain
circumstances a file whose size is a power of 2 plus one, and the last
character was not a new-line, could cause memory corruption.
10-08-13 +Added static discipline functions to type similar to C++ static
class functions.
10-08-11 A bug in time when applied to a pipeline in which the shell did
not wait for all elements of the pipeline to complete has been fixed.
10-08-11 Restored sh_fmtq() quoting to not quote NAME= in NAME=VALUE.
10-08-09 +Modified the expansion of message strings, $"...", so that they
are expanded each time they are referenced rather than expanding
them when the script is compiled or read in.
10-08-06 +The process id for jobs in job pools is now of the form poolname.n
where n is the jobid in that pool. Commands that accept job names
or numbers now understand names in this format.
10-08-05 A bug in which an assignment from within an arithmetic expression
inside a function would create a local variable has been fixed.
10-08-04 A bug in the expanding of variables whose names contain multibyte
characters has been fixed.
10-08-04 A bug which caused an exception when processing scripts compiled
with shcomp -n has been fixed.
10-08-02 Tests using very small buffer sizes uncovered a number of bug most
connected with here documents which have been fixed.
10-07-27 The format modifier , used for digit grouping with d and f formats
has been documented.
10-07-26 cd '' now produces and error rather than changing to the current
directory.
10-07-26 A bug in multi-byte locales which the last character of a
multi-byte character is a \ or pattern character which could occur
when the character was the last character of a command substitution
has been fixed.
10-07-23 Another bug in the processing of ${var:offset;len} in multi-byte
locales when len is larger than the number of characters has been
fixed.
10-07-23 Many coding changes have been made to eliminate most of the uses
of global variables in the shell code.
10-07-22 Fixed a bug in which discipline functions were not being invoked
when it was invoked as ref.discipline where ref was a name reference
to an array instance.
10-07-22 Fixed a bug in which discipline functions were not being invoked it
was invoked on a two dimensional array, i.e., arr[5][9].discipline.
10-07-19 Fixed a buffering problem which occured when running a script with
ssh and the parent ssh process is killed.
10-07-14 Modifed the parser to treat ((...)) inside [[...]] as ( (...) ) to
that it is a nested (...).
10-07-09 A bug in the handling of process substitution inside command
substitution as part of a pipeline has been fixed.
10-07-07 A bug in the output for compound variables containing
multi-dimensional arrays has been fixed.
10-07-06 ksh now recovers from changes made by bash to the history file without
loosing history commands.
10-06-25 A bug in which a large here document containing command substitutions
of a dynamically loaded function that contained a here document
could get truncated has been fixed.
10-06-24 If after executing a script found in FPATH, if a function, builtin,
or type name corresponding to that script is not defined, the shell
now outputs an error message and returns value 126.
10-06-23 Floating point functions that happened to return integer values
were being treated as if the function returned integers so that
integer division could be used instead of floating point division.
10-06-22 Fixed a bug in earlier ksh93u in which an arithmetic assignment to a
variable in the global scope would instead create a local variable if
the variable had an attribute but did not have a value.
10-06-18 Modified trap handling so that if the same signal is received when
executing the handler, it is deferred until the handler completes.
10-06-16 Fixed a bug in which ulimit -v was setting the the cpu limit
on Linux.
10-06-14 +The command 'typeset -T' now generates the list of type definitions
in a format that can be used as input to the shell.
10-06-09 Put in patch from Solaris for output quoting with %q.
10-06-09 +Made changes to the NAMESPACE compile option so that it now seems
to work. With this option, namespace <name> { command;} will
run command in the namespace .name so that all variables and
functions created by command are accessable outside the name
space via .name.var and .name.fun. Variables and functions that
are not in the namespace are not modifed when runnning command.
10-06-07 Change most internal interfaces to take Sh_t* argument.
10-06-03 +Types can be loaded on first reference by putting defintions in PFPATH.
10-06-03 +The shell is now able to parse commands which use type statements
before the typeset -T command to define the type executes.
10-06-03 A bug in the quoting for name reference declarations which did
not properly handle [ and ] in subscripts for associative arrays.
10-06-02 A bug in which a discipline function defined by a type instance to
override the default was not being registered has been fixed.
10-06-02 A bug in which read -C of an associative array of compound variables
was not working has been fixed.
10-06-02 A bug in which the error message for an unset parameter with set -u
did not contain the name of the variable has been fixed.
10-06-01 A bug in typeset -m for moving an indexed array instance to a variable
has been fixed.
10-06-01 A bug in which caused memory to be freed twice when unset was called
for an indexed array that had get or set disciplines has been fixed.
10-06-01 A bug in which the %b format of printf was not preserving NUL bytes
with \0 has been fixed.
10-06-01 A bug in the handling of name references to array variables in
arithmetic expressions has been fixed.
10-05-28 Fixed bugs in changing attributes for two dimensional arrays.
10-05-28 Eliminated a few unreferenced variables and a reference to
uninitialized memroy.
10-05-27 Rewrote the subshell code to avoid using pipes an many cases.
10-05-24 Fixed a bug which cause an exception when both -l and -s were
-------------------------------------------------------------------
Fri Mar 4 16:15:16 CET 2011 - werner@suse.de

View File

@ -36,13 +36,13 @@ Requires(post): update-alternatives
Requires(preun): update-alternatives
%endif
AutoReqProv: on
Version: 93t
Release: 202
Version: 93u
Release: 1
Summary: Korn Shell
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: INIT.2010-06-21.tar.bz2
Source1: ast-ksh.2010-06-21.tar.bz2
Source2: ast-msgcc.2010-06-21.tar.bz2
Source: INIT.2011-06-30.tar.bz2
Source1: ast-ksh.2011-06-30.tar.bz2
Source2: ast-msgcc.2011-06-30.tar.bz2
Source3: CPL
Source10: leak1.sh
Source11: leak2.sh
@ -64,21 +64,13 @@ Patch9: ksh93-compat.dif
Patch10: ksh93-suid_exec.dif
Patch11: ksh93-signals.dif
Patch12: ksh93-limits.dif
Patch13: ksh93-sigpipe.dif
Patch13: ksh93-unset-f.dif
Patch14: ksh93-ia64.dif
Patch15: ksh93-s390.dif
Patch16: ksh93-leak.dif
Patch17: ksh93-ifs.dif
Patch18: ksh93-fdfn.dif
Patch19: ksh93-fdleak.dif
Patch20: ksh93-argv0.dif
Patch21: ksh93-export.dif
Patch22: ksh93-eintr.dif
Patch23: ksh93-array.dif
Patch24: ksh93-pipe.dif
Patch25: ksh93-argv.dif
Patch26: ksh93-unset-f.dif
Patch27: ksh93-gcc.dif
Patch16: ksh93-gcc.dif
Patch17: ksh93-heredoc.dif
Patch18: ksh93-jobs.dif
Patch19: ksh93-reg.dif
Patch42: ksh-locale.patch
%global use_suid_exe 0
%global use_locale 0
@ -151,14 +143,6 @@ find share/ -type d -a -empty | xargs -r rm -vrf
%patch17
%patch18
%patch19
%patch20
%patch21
%patch22
%patch23
%patch24
%patch25
%patch26
%patch27
%build
AR="ar"
@ -405,6 +389,7 @@ find share/ -type d -a -empty | xargs -r rm -vrf
pushd ${test}
typeset -i failed=0
ln -sf ${root}/lib ${test}/../
rm -f pty.sh
${root}/bin/ksh.test shtests
${root}/bin/ksh.test %{S:10}
${root}/bin/ksh.test %{S:11}
@ -449,7 +434,9 @@ find share/ -type d -a -empty | xargs -r rm -vrf
mkdir -p %{buildroot}%{_mandir}
mkdir %{buildroot}%{_mandir}/man1
mkdir %{buildroot}%{_mandir}/man3
%if %use_locale
mkdir -p %{buildroot}%{_datadir}/locale
%endif
mkdir -p %{buildroot}%{_datadir}/ksh/fun
mkdir -p %{buildroot}%{_sysconfdir}/permissions.d
install bin/ksh %{buildroot}/%{_lib}/ast/bin/
@ -498,20 +485,14 @@ find share/ -type d -a -empty | xargs -r rm -vrf
install -m 0644 include/ast/* %{buildroot}%{_includedir}/ast/
popd
%if %use_locale
for msg in share/lib/locale/* ; do
test -d $msg || continue
mkdir -p %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES
cp -vp ${msg}/LC_MESSAGES/* %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES/
done
%else
for msg in share/locale/* ; do
test -d $msg || continue
mkdir -p %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES
cp -vp ${msg}/LC_MESSAGES/* %{buildroot}%{_datadir}/locale/${msg##*/}/LC_MESSAGES/
done
%endif
echo %%dir %{_datadir}/locale/C > ksh.lang
echo %%dir %{_datadir}/locale/C/LC_MESSAGES >> ksh.lang
%endif
find %{buildroot}/ -type f -o -type l | sed -r '
s:%{buildroot}::
s:(%{_datadir}/locale/)([^/_]+)(.*$):%%lang\(\2\) \1\2\3:

View File

@ -1,20 +0,0 @@
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-06-14 13:31:32.471925963 +0200
@@ -2914,7 +2914,7 @@ int sh_fun(Namval_t *np, Namval_t *nq, c
long mode;
char *prefix = shp->prefix;
int n=0;
- char *av[2];
+ char *av[3];
Fcin_t save;
fcsave(&save);
if((offset=staktell())>0)
@@ -2922,7 +2922,7 @@ int sh_fun(Namval_t *np, Namval_t *nq, c
shp->prefix = 0;
if(!argv)
{
- argv = av;
+ argv = av+1;
argv[1]=0;
}
argv[0] = nv_name(np);

View File

@ -1,10 +0,0 @@
--- src/cmd/ksh93/bltins/misc.c
+++ src/cmd/ksh93/bltins/misc.c 2011-02-22 13:03:35.783936889 +0000
@@ -273,7 +273,6 @@ int b_dot_cmd(register int n,char *ar
shp->st.self = &savst;
shp->topscope = (Shscope_t*)shp->st.self;
prevscope->save_tree = shp->var_tree;
- shp->st.cmdname = argv[0];
if(np)
shp->st.filename = np->nvalue.rp->fname;
nv_putval(SH_PATHNAMENOD, shp->st.filename ,NV_NOFREE);

View File

@ -1,62 +0,0 @@
--- src/cmd/ksh93/sh/array.c
+++ src/cmd/ksh93/sh/array.c 2011-05-20 12:42:14.555927664 +0000
@@ -410,7 +410,7 @@ static Namfun_t *array_clone(Namval_t *n
mq = 0;
if(nq=nv_opensub(np))
mq = nv_search(name,ap->table,NV_ADD);
- if(nq && (flags&NV_COMVAR) && nv_isvtree(nq))
+ if(nq && (((flags&NV_COMVAR) && nv_isvtree(nq)) || nv_isarray(nq)))
{
mq->nvalue.cp = 0;
if(!is_associative(ap))
@@ -458,6 +458,7 @@ static char *array_getval(Namval_t *np,
{
register Namarr_t *aq,*ap = (Namarr_t*)disc;
register Namval_t *mp;
+ register char *cp=0;
if((mp=array_find(np,ap,ARRAY_LOOKUP))!=np)
{
if(!mp && !is_associative(ap) && (aq=(Namarr_t*)ap->scope))
@@ -466,7 +467,12 @@ static char *array_getval(Namval_t *np,
if((mp=array_find(np,aq,ARRAY_LOOKUP))==np)
return(nv_getv(np,&aq->hdr));
}
- return(mp?nv_getval(mp):0);
+ if(mp)
+ {
+ cp = nv_getval(mp);
+ nv_offattr(mp,NV_EXPORT);
+ }
+ return(cp);
}
return(nv_getv(np,&ap->hdr));
}
@@ -667,7 +673,7 @@ static struct index_array *array_grow(Na
ap->header.hdr.dsize = sizeof(*ap) + i;
i = 0;
ap->header.fun = 0;
- if(nv_isnull(np) && nv_isattr(np,NV_NOFREE))
+ if((nv_isnull(np)|| np->nvalue.cp==Empty) && nv_isattr(np,NV_NOFREE))
{
i = ARRAY_TREE;
nv_offattr(np,NV_NOFREE);
@@ -1236,7 +1242,7 @@ void *nv_associative(register Namval_t *
for(;ap->cur=ap->pos; ap->pos=ap->nextpos)
{
ap->nextpos = (Namval_t*)dtnext(ap->header.table,ap->pos);
- if(ap->cur->nvalue.cp)
+ if(!nv_isnull(ap->cur))
{
if((ap->header.nelem&ARRAY_NOCHILD) && nv_isattr(ap->cur,NV_CHILD))
continue;
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-06-14 13:31:32.471925963 +0200
@@ -680,7 +680,7 @@ static int set_instance(Shell_t *shp,Nam
char *sp=0,*cp;
Namarr_t *ap;
Namval_t *np;
- if(!nv_isattr(nq,NV_MINIMAL|NV_EXPORT) && (np=(Namval_t*)nq->nvenv) && nv_isarray(np))
+ if(!nv_isattr(nq,NV_MINIMAL|NV_EXPORT|NV_ARRAY) && (np=(Namval_t*)nq->nvenv) && nv_isarray(np))
nq = np;
cp = nv_name(nq);
memset(nr,0,sizeof(*nr));

View File

@ -1,91 +0,0 @@
--- src/cmd/ksh93/sh/io.c
+++ src/cmd/ksh93/sh/io.c 2011-05-03 15:15:18.283926707 +0200
@@ -403,6 +403,7 @@
shp->sftable[2] = sfstderr;
sfnotify(sftrack);
sh_iostream(shp,0);
+ sh_iostream(shp,1);
/* all write steams are in the same pool and share outbuff */
shp->outpool = sfopen(NIL(Sfio_t*),NIL(char*),"sw"); /* pool identifier */
shp->outbuff = (char*)malloc(IOBSIZE+4);
@@ -608,7 +609,8 @@
}
if(sp)
shp->sftable[f1] = 0;
- sh_close(f1);
+ if(shp->fdstatus[f1]!=IOCLOSE)
+ sh_close(f1);
}
return(f2);
}
@@ -1022,6 +1024,8 @@
memset(ap, 0, ARGVAL);
if(iof&IOPUT)
ap->argflag = ARG_RAW;
+ else if(shp->subshell)
+ sh_subtmpfile(shp);
ap->argchn.ap = (struct argnod*)fname;
ap = sh_argprocsub(shp,ap);
fname = ap->argval;
@@ -2148,13 +2152,18 @@
static ssize_t subread(Sfio_t* sp,void* buff,register size_t size,Sfdisc_t* handle)
{
register struct subfile *disp = (struct subfile*)handle;
+ ssize_t n;
NOT_USED(sp);
+ sfseek(disp->oldsp,disp->offset,SEEK_SET);
if(disp->left == 0)
return(0);
if(size > disp->left)
size = disp->left;
disp->left -= size;
- return(sfread(disp->oldsp,buff,size));
+ n = sfread(disp->oldsp,buff,size);
+ if(size>0)
+ disp->offset += size;
+ return(n);
}
/*
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-05-03 15:02:23.411926136 +0200
@@ -53,6 +53,7 @@
#define SH_NTFORK SH_TIMING
#define NV_BLTPFSH NV_ARRAY
+#define HERE_MEM 0x1000
#if _lib_nice
extern int nice(int);
@@ -2606,6 +2607,7 @@
pid_t sh_fork(int flags, int *jobid)
{
+ Sfio_t* aux_heredocs = NIL(Sfio_t*);
register pid_t parent;
register int sig;
#if SHOPT_FASTPIPE
@@ -2625,7 +2627,23 @@
sh.trapnote &= ~SH_SIGTERM;
job_fork(-1);
sh.savesig = -1;
+ if (sh.heredocs)
+ {
+ aux_heredocs = sftmp(HERE_MEM);
+ if (aux_heredocs)
+ {
+ sfseek(sh.heredocs,(off_t)0,SEEK_SET);
+ sfmove(sh.heredocs,aux_heredocs,(Sfoff_t)(-1),-1);
+ sfsync(aux_heredocs);
+ }
+ }
while(_sh_fork(parent=fork(),flags,jobid) < 0);
+ if (aux_heredocs)
+ {
+ if (!parent)
+ sfswap(aux_heredocs,sh.heredocs);
+ sfclose(aux_heredocs);
+ }
sh_stats(STAT_FORKS);
sig = sh.savesig;
sh.savesig = 0;

View File

@ -1,11 +0,0 @@
--- src/cmd/ksh93/sh/subshell.c
+++ src/cmd/ksh93/sh/subshell.c 2011-03-04 15:13:49.867926146 +0000
@@ -235,7 +235,7 @@ Namval_t *sh_assignok(register Namval_t
if(!sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD)
return(np);
/* don't bother to save if in newer scope */
- if(sp->var!=shp->var_tree && shp->last_root==shp->var_tree)
+ if(sp->var!=shp->var_tree && sp->var!=shp->var_base && shp->last_root==shp->var_tree)
return(np);
if((ap=nv_arrayptr(np)) && (mp=nv_opensub(np)))
{

View File

@ -1,10 +0,0 @@
--- src/cmd/ksh93/sh/path.c
+++ src/cmd/ksh93/sh/path.c 2010-10-19 10:57:53.556425877 +0000
@@ -747,6 +747,7 @@ int path_search(register const char *nam
return(1);
}
funload(shp,fno,name);
+ sh_close(fno);
return(1);
}
*stakptr(PATH_OFFSET) = 0;

View File

@ -1,10 +0,0 @@
--- src/cmd/ksh93/edit/history.c
+++ src/cmd/ksh93/edit/history.c 2010-10-21 10:35:05.567927921 +0000
@@ -394,6 +394,7 @@ retry:
}
if(fd>=0)
{
+ fcntl(fd,F_SETFD,FD_CLOEXEC);
hp->tty = strdup(ttyname(2));
hp->auditfp = sfnew((Sfio_t*)0,NULL,-1,fd,SF_WRITE);
}

81
ksh93-heredoc.dif Normal file
View File

@ -0,0 +1,81 @@
|Subject: here doc bug with locales
--- src/cmd/ksh93/include/fcin.h Tue Aug 3 11:43:29 2010
+++ src/cmd/ksh93/include/fcin.h Wed Jul 20 14:52:54 2011
@@ -35,6 +35,8 @@
#define fcpeek(n) ((int)_Fcin.fcptr[n])
#define fcseek(n) ((char*)(_Fcin.fcptr+=(n)))
#define fcfirst() ((char*)_Fcin.fcbuff)
+#define fclast() ((char*)_Fcin.fclast)
+#define fcleft() (_Fcin.fclast-_Fcin.fcptr)
#define fcsopen(s) (_Fcin._fcfile=(Sfio_t*)0,_Fcin.fclen=1,_Fcin.fcbuff=_Fcin.fcptr=(unsigned char*)(s))
#define fctell() (_Fcin.fcoff + (_Fcin.fcptr-_Fcin.fcbuff))
#define fcsave(x) (*(x) = _Fcin)
--- src/cmd/ksh93/sh/lex.c Wed Apr 6 12:05:19 2011
+++ src/cmd/ksh93/sh/lex.c Wed Jul 20 14:59:04 2011
@@ -1564,7 +1564,10 @@ static int comsub(register Lex_t *lp, in
{
if(first==lp->lexd.first)
- fcseek(cp+1-fcseek(0));
+ {
+ const char *tp = fcseek(0);
+ fcseek(cp+1-tp);
+ }
count++;
lp->lexd.paren = 0;
fcgetc(c);
@@ -1817,18 +1820,41 @@ static int here_copy(Lex_t *lp,register
if(n!=S_NL)
{
/* skip over regular characters */
+#if SHOPT_MULTIBYTE
+ do
+ {
+ if(fcleft()< MB_LEN_MAX && mbsize(fcseek(0))<0)
+ {
+ n = S_EOF;
+ LEN = -fcleft();
+ break;
+ }
+ }
+#endif /* SHOPT_MULTIBYTE */
while((n=STATE(state,c))==0);
}
if(n==S_EOF || !(c=fcget()))
{
- if(!lp->lexd.dolparen && (c=(fcseek(0)-1)-bufp))
+ if(LEN < 0)
+ c = fclast()-bufp;
+ else
+ c= (fcseek(0)-1)-bufp;
+ if(!lp->lexd.dolparen && c)
{
if(n==S_ESC)
c--;
if(!lp->lexd.dolparen && (c=sfwrite(sp,bufp,c))>0)
iop->iosize += c;
}
- if((c=lexfill(lp))<=0)
+ if(LEN < 0)
+ {
+ n = LEN;
+ c = fcmbget(&LEN);
+ LEN += n;
+ }
+ else
+ c = lexfill(lp);
+ if(c<0)
break;
if(n==S_ESC)
{
@@ -1844,7 +1870,9 @@ static int here_copy(Lex_t *lp,register
sfputc(sp,'\\');
}
}
- bufp = fcseek(-1);
+ if (LEN < 1)
+ LEN = 1;
+ bufp = fcseek(-LEN);
}
else
fcseek(-LEN);

View File

@ -1,41 +0,0 @@
---
src/cmd/ksh93/sh/init.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
--- src/cmd/ksh93/sh/init.c
+++ src/cmd/ksh93/sh/init.c 2010-10-08 12:43:27.123926224 +0000
@@ -456,6 +456,8 @@ static void put_cdpath(register Namval_t
}
#endif /* _hdr_locale */
+static const void* ifs_hdr;
+
/* Trap for IFS assignment and invalidates state table */
static void put_ifs(register Namval_t* np,const char *val,int flags,Namfun_t *fp)
{
@@ -464,9 +466,14 @@ static void put_ifs(register Namval_t* n
ip->ifsnp = 0;
if(!val)
{
- fp = nv_stack(np, NIL(Namfun_t*));
- if(fp && !fp->nofree)
- free((void*)fp);
+ Namfun_t *xp = nv_stack(np, NIL(Namfun_t*));
+ if(xp)
+ {
+ if(xp == ifs_hdr)
+ xp->nofree = 1;
+ if(xp->nofree == 0)
+ free((void*)xp);
+ }
}
if(val != np->nvalue.cp)
nv_putv(np, val, flags, fp);
@@ -1597,6 +1604,7 @@ static Init_t *nv_init(Shell_t *shp)
ip->LANG_init.nofree = 1;
#endif /* _hdr_locale */
nv_stack(IFSNOD, &ip->IFS_init.hdr);
+ ifs_hdr = (IFSNOD)->nvfun;
nv_stack(PATHNOD, &ip->PATH_init);
nv_stack(FPATHNOD, &ip->FPATH_init);
nv_stack(CDPNOD, &ip->CDPATH_init);

19
ksh93-jobs.dif Normal file
View File

@ -0,0 +1,19 @@
--- src/cmd/ksh93/sh/jobs.c
+++ src/cmd/ksh93/sh/jobs.c 2011-08-15 18:43:23.005726321 +0200
@@ -1103,7 +1103,7 @@ static struct process *job_bystring(regi
int job_kill(register struct process *pw,register int sig)
{
- Shell_t *shp = pw->p_shp;
+ Shell_t *shp;
register pid_t pid;
register int r;
const char *msg;
@@ -1116,6 +1116,7 @@ int job_kill(register struct process *pw
errno = ECHILD;
if(pw==0)
goto error;
+ shp = pw->p_shp;
pid = pw->p_pid;
#if SHOPT_COSHELL
if(pw->p_cojob)

View File

@ -1,11 +0,0 @@
--- src/cmd/ksh93/sh/nvdisc.c
+++ src/cmd/ksh93/sh/nvdisc.c 2010-06-29 14:07:19.578925435 +0000
@@ -1347,7 +1347,7 @@ Dt_t *nv_dict(Namval_t* np)
Namval_t *nv_mount(Namval_t *np, const char *name, Dt_t *dict)
{
Namval_t *mp, *pp=0;
- struct table *tp = newof((struct table*)0, struct table,1,0);
+ struct table *tp;
if(name)
{
if(nv_istable(np))

View File

@ -1,5 +1,5 @@
--- src/lib/libast/comp/conf.sh
+++ src/lib/libast/comp/conf.sh 2007-09-13 10:39:15.000000000 +0000
+++ src/lib/libast/comp/conf.sh 2010-08-17 17:45:16.129814168 +0200
@@ -143,7 +143,7 @@ main()
return 1;
#else
@ -45,7 +45,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
#undef conf
@@ -1031,7 +1043,7 @@ do eval name=\"'$'CONF_name_$key\"
@@ -1032,7 +1044,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}
@@ -1091,7 +1103,11 @@ do eval name=\"'$'CONF_name_$key\"
@@ -1092,7 +1104,11 @@ do eval name=\"'$'CONF_name_$key\"
${head}
#include <stdio.h>
#include <sys/types.h>
@ -66,9 +66,9 @@
#include <unistd.h>$systeminfo$headers
${tail}
int
@@ -1105,7 +1121,11 @@ main()
*) cat > $tmp.c <<!
@@ -1107,7 +1123,11 @@ main()
${head}
#include <stdio.h>
#include <sys/types.h>
+#include <sys/uio.h>
#include <limits.h>
@ -78,7 +78,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
${script}
@@ -1249,7 +1269,11 @@ printf("#endif\n");
@@ -1254,7 +1274,11 @@ printf("#endif\n");
*) cat > $tmp.c <<!
${head}
#include <sys/types.h>
@ -90,7 +90,7 @@
#include <unistd.h>$systeminfo$headers
${tail}
${script}
@@ -1322,7 +1346,7 @@ ${script}
@@ -1333,7 +1357,7 @@ ${script}
*[lLuU])
case $LL_suffix in
??) case $conf_limit in
@ -99,7 +99,7 @@
conf_limit=${conf_limit}L
;;
esac
@@ -1357,7 +1381,7 @@ ${script}
@@ -1368,7 +1392,7 @@ ${script}
*[lLuU])
case $LL_suffix in
??) case $conf_minmax in
@ -108,7 +108,7 @@
conf_minmax=${conf_minmax}L
;;
esac
@@ -1533,7 +1557,11 @@ esac
@@ -1545,7 +1569,11 @@ esac
cat <<!
${head}
#include <sys/types.h>

View File

@ -1,188 +0,0 @@
--- src/cmd/ksh93/include/defs.h
+++ src/cmd/ksh93/include/defs.h 2011-06-10 17:37:22.852426230 +0200
@@ -154,7 +154,7 @@ struct limits
pid_t bckpid; /* background process id */ \
pid_t cpid; \
pid_t pipepid; \
- int32_t ppid; /* parent process id of shell */ \
+ pid_t ppid; /* parent process id of shell */ \
int topfd; \
int sigmax; /* maximum number of signals */ \
int savesig; \
--- src/cmd/ksh93/sh/io.c
+++ src/cmd/ksh93/sh/io.c 2011-06-10 18:13:02.511926423 +0200
@@ -1076,15 +1076,18 @@ int sh_redirect(Shell_t *shp,struct iono
message = e_file;
goto fail;
}
- if(shp->subshell && dupfd==1 && (sfset(sfstdout,0,0)&SF_STRING))
+ if(shp->subshell && dupfd==1)
{
if(sfset(sfstdout,0,0)&SF_STRING)
sh_subtmpfile(shp);
- shp->subdup |= 1<< fn;
+ if(shp->comsub==1)
+ shp->subdup |= 1<< fn;
dupfd = sffileno(sfstdout);
}
else if(shp->sftable[dupfd])
sfsync(shp->sftable[dupfd]);
+ if(dupfd!=1 && fn < 10)
+ shp->subdup &= ~(1<<fn);
}
else if(fd=='-' && fname[1]==0)
{
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-06-10 18:09:32.396425650 +0200
@@ -86,10 +86,11 @@ struct funenv
* temp file.
*/
static int subpipe[3] = {-1};
-static int subdup;
+static int subdup,tsetio,usepipe;
static void iousepipe(Shell_t *shp)
{
int i;
+ usepipe++;
fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
subpipe[2] = fcntl(1,F_DUPFD,10);
shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
@@ -112,6 +113,7 @@ static void iounpipe(Shell_t *shp)
{
int n;
char buff[SF_BUFSIZE];
+ usepipe = 0;
close(1);
fcntl(subpipe[2], F_DUPFD, 1);
shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
@@ -135,6 +137,7 @@ static void iounpipe(Shell_t *shp)
}
sh_close(subpipe[0]);
subpipe[0] = -1;
+ tsetio = 0;
}
/*
@@ -533,8 +536,10 @@ int sh_eval(register Sfio_t *iop, int mo
static Sfio_t *io_save;
volatile int traceon=0, lineno=0;
int binscript=shp->binscript;
+ char comsub = shp->comsub;
io_save = iop; /* preserve correct value across longjmp */
shp->binscript = 0;
+ shp->comsub = 0;
#define SH_TOPFUN 0x8000 /* this is a temporary tksh hack */
if (mode & SH_TOPFUN)
{
@@ -573,6 +578,7 @@ int sh_eval(register Sfio_t *iop, int mo
break;
}
sh_popcontext(&buff);
+ shp->comsub = comsub;
shp->binscript = binscript;
if(traceon)
sh_onoption(SH_XTRACE);
@@ -1245,13 +1251,16 @@ int sh_exec(register const Shnode_t *t,
{
register pid_t parent;
int no_fork,jobid;
- int pipes[2];
+ int pipes[3];
if(shp->subshell)
{
sh_subtmpfile(shp);
- subpipe[0] = -1;
- if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK) && sh_pipe(subpipe)>=0)
- iousepipe(shp);
+ if(!usepipe)
+ {
+ subpipe[0] = -1;
+ if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK) && sh_pipe(subpipe)>=0)
+ iousepipe(shp);
+ }
if((type&(FAMP|TFORK))==(FAMP|TFORK))
sh_subfork();
}
@@ -1291,7 +1300,10 @@ int sh_exec(register const Shnode_t *t,
#endif /* SHOPT_BGX */
nv_getval(RANDNOD);
if(type&FCOOP)
+ {
+ pipes[2] = 0;
coproc_init(shp,pipes);
+ }
#if SHOPT_AMP
if((type&(FAMP|FINT)) == (FAMP|FINT))
parent = sh_ntfork(shp,t,com,&jobid,ntflag);
@@ -1353,6 +1365,8 @@ int sh_exec(register const Shnode_t *t,
shp->pipepid = parent;
else
job_wait(parent);
+ if(usepipe && tsetio && subdup)
+ iounpipe(shp);
if(!sh_isoption(SH_MONITOR))
{
shp->trapnote &= ~SH_SIGIGNORE;
@@ -1496,6 +1510,8 @@ int sh_exec(register const Shnode_t *t,
jmpval = sigsetjmp(buff.buff,0);
if(jmpval==0)
{
+ if(shp->comsub==1)
+ tsetio = 1;
sh_redirect(shp,t->fork.forkio,execflg);
(t->fork.forktre)->tre.tretyp |= t->tre.tretyp&FSHOWME;
sh_exec(t->fork.forktre,flags&~simple);
@@ -1523,6 +1539,8 @@ int sh_exec(register const Shnode_t *t,
if(type || !sh_isoption(SH_PIPEFAIL))
shp->exitval = type;
}
+ if(shp->comsub==1 && subpipe[0]>=0)
+ iounpipe(shp);
shp->pipepid = 0;
shp->st.ioset = 0;
if(simple && was_errexit)
@@ -1580,14 +1598,22 @@ int sh_exec(register const Shnode_t *t,
* All elements of the pipe are started by the parent.
* The last element executes in current environment
*/
- int pvo[2]; /* old pipe for multi-stage */
- int pvn[2]; /* current set up pipe */
+ int pvo[3]; /* old pipe for multi-stage */
+ int pvn[3]; /* current set up pipe */
int savepipe = pipejob;
int showme = t->tre.tretyp&FSHOWME;
pid_t savepgid = job.curpgid;
job.curpgid = 0;
if(shp->subshell)
+ {
sh_subtmpfile(shp);
+ if(!usepipe)
+ {
+ subpipe[0] = -1;
+ if(shp->comsub==1 && !(shp->fdstatus[1]&IONOSEEK) && sh_pipe(subpipe)>=0)
+ iousepipe(shp);
+ }
+ }
shp->inpipe = pvo;
shp->outpipe = pvn;
pvo[1] = -1;
@@ -2543,7 +2569,10 @@ pid_t _sh_fork(register pid_t parent,int
if(jobid)
*jobid = myjob;
if(shp->comsub==1 && subpipe[0]>=0)
- iounpipe(shp);
+ {
+ if(!tsetio || !subdup)
+ iounpipe(shp);
+ }
return(parent);
}
#if !_std_malloc
@@ -2602,6 +2631,7 @@ pid_t _sh_fork(register pid_t parent,int
if(sig>0)
sh_fault(sig);
sh_sigcheck();
+ usepipe=0;
return(0);
}

View File

@ -1,14 +1,12 @@
--- src/cmd/ksh93/sh/main.c
+++ src/cmd/ksh93/sh/main.c 2008-09-11 17:10:58.130673081 +0200
@@ -210,17 +210,39 @@ int sh_main(int ac, char *av[], Shinit_f
}
job_init(shp,sh_isoption(SH_LOGIN_SHELL));
if(sh_isoption(SH_LOGIN_SHELL))
- {
+++ 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
{
/* system profile */
sh_source(shp, iop, e_sysprofile);
+ }
+ /* make sure PWD is set up correctly */
+ path_pwd(1);
+ path_pwd(shp,1);
+#if SHOPT_SYSRC
+ if(!sh_isoption(SH_NOEXEC))
+ {
@ -34,26 +32,26 @@
+ {
if(!sh_isoption(SH_NOUSRPROFILE) && !sh_isoption(SH_PRIVILEGED))
{
char **files = shp->login_files;
char **files = shp->gd->login_files;
while ((name = *files++) && !sh_source(shp, iop, sh_mactry(shp,name)));
}
}
- /* make sure PWD is set up correctly */
- path_pwd(1);
- path_pwd(shp,1);
if(!sh_isoption(SH_NOEXEC))
{
if(!sh_isoption(SH_NOUSRPROFILE) && !sh_isoption(SH_PRIVILEGED) && sh_isoption(SH_RC))
@@ -228,9 +250,6 @@ int sh_main(int ac, char *av[], Shinit_f
@@ -234,9 +258,6 @@ int sh_main(int ac, char *av[], Shinit_f
#if SHOPT_BASH
if(sh_isoption(SH_BASH) && !sh_isoption(SH_POSIX))
{
-#if SHOPT_SYSRC
- sh_source(shp, iop, e_bash_sysrc);
-#endif
sh_source(shp, iop, shp->rcfile ? shp->rcfile : sh_mactry(shp,(char*)e_bash_rc));
sh_source(shp, iop, shp->gd->rcfile ? shp->gd->rcfile : sh_mactry(shp,(char*)e_bash_rc));
}
else
@@ -238,10 +257,6 @@ int sh_main(int ac, char *av[], Shinit_f
@@ -244,10 +265,6 @@ int sh_main(int ac, char *av[], Shinit_f
{
if(name = sh_mactry(shp,nv_getval(ENVNOD)))
name = *name ? strdup(name) : (char*)0;

39
ksh93-reg.dif Normal file
View File

@ -0,0 +1,39 @@
--- src/cmd/ksh93/edit/edit.c
+++ src/cmd/ksh93/edit/edit.c 2011-08-30 16:07:02.059926160 +0000
@@ -1668,7 +1668,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=='#')
@@ -1746,8 +1746,13 @@ int ed_histgen(Edit_t *ep,const char *pa
mplast->next = mp;
mplast->next = 0;
}
- ep->hlist = (Histmatch_t**)argv;
- ep->hfirst = ep->hlist[0];
+ if (argv)
+ {
+ ep->hlist = (Histmatch_t**)argv;
+ ep->hfirst = ep->hlist[0];
+ }
+ else
+ ep->hfirst = 0;
return(ep->hmax=ac);
}
--- src/cmd/ksh93/sh/name.c
+++ src/cmd/ksh93/sh/name.c 2011-08-30 15:55:30.900426385 +0000
@@ -967,7 +967,8 @@ Namval_t *nv_create(const char *name, D
if(c=='.' && (cp[1]==0 || cp[1]=='=' || cp[1]=='+'))
{
nv_local = 1;
- nv_onattr(np,nofree);
+ if (np)
+ nv_onattr(np,nofree);
return(np);
}
if(cp[-1]=='.')

View File

@ -8,7 +8,7 @@
#include <errno.h>
#include <ccode.h>
#include "FEATURE/options"
@@ -56,8 +57,20 @@ static char CURSOR_UP[20] = { ESC, '[',
@@ -57,8 +58,20 @@ static char KILL_LINE[20] = { ESC, '[',
#if SHOPT_MULTIBYTE
@ -51,7 +51,7 @@
# define gencpy(a,b) ed_gencpy(a,b)
# define genncpy(a,b,n) ed_genncpy(a,b,n)
# define genlen(str) ed_genlen(str)
@@ -1473,11 +1477,19 @@ static void setcursor(register Emacs_t *
@@ -1559,11 +1563,19 @@ static void setcursor(register Emacs_t *
#if SHOPT_MULTIBYTE
static int print(register int c)
{
@ -106,8 +106,8 @@
static int _isalph(int);
static int _ismetach(int);
--- src/cmd/ksh93/sh/io.c
+++ src/cmd/ksh93/sh/io.c 2010-06-28 16:09:09.174925785 +0200
@@ -1367,6 +1367,7 @@ static int io_heredoc(Shell_t *shp,regis
+++ 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
if(traceon)
sfprintf(sfstderr,"< %s\n",name);
sfputr(outfile,name,'\n');
@ -116,110 +116,8 @@
else
{
--- src/cmd/ksh93/sh/macro.c
+++ src/cmd/ksh93/sh/macro.c 2011-06-10 08:20:29.451926367 +0000
@@ -51,6 +51,8 @@
#if !SHOPT_MULTIBYTE
#define mbchar(p) (*(unsigned char*)p++)
+#else
+#define mb2wc(w,p,n) (*ast.mb_towc)(&w,(char*)p,n)
#endif
static int _c_;
@@ -494,7 +496,7 @@ static void copyto(register Mac_t *mp,in
int i;
unsigned char mb[8];
- n = wctomb((char*)mb, c);
+ n = mbconv((char*)mb, c);
for(i=0;i<n;i++)
sfputc(stkp,mb[i]);
}
@@ -1908,6 +1910,9 @@ static void comsubst(Mac_t *mp,register
struct _mac_ savemac;
int savtop = stktell(stkp);
char lastc, *savptr = stkfreeze(stkp,0);
+#if SHOPT_MULTIBYTE
+ wchar_t lastw;
+#endif
int was_history = sh_isstate(SH_HISTORY);
int was_verbose = sh_isstate(SH_VERBOSE);
int was_interactive = sh_isstate(SH_INTERACTIVE);
@@ -2025,6 +2030,9 @@ static void comsubst(Mac_t *mp,register
stkset(stkp,savptr,savtop);
newlines = 0;
lastc = 0;
+#if SHOPT_MULTIBYTE
+ lastw = 0;
+#endif
sfsetbuf(sp,(void*)sp,0);
bufsize = sfvalue(sp);
/* read command substitution output and put on stack or here-doc */
@@ -2075,6 +2083,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
mac_copy(mp,&lastc,1);
lastc = 0;
}
@@ -2083,8 +2102,22 @@ static void comsubst(Mac_t *mp,register
str[c] = 0;
else
{
+ ssize_t len = 1;
+
/* can't write past buffer so save last character */
- lastc = str[--c];
+#if SHOPT_MULTIBYTE
+ if ((len = mbsize(str))>1)
+ {
+ len = mb2wc(lastw,str,len);
+ if (len < 0)
+ {
+ lastw = 0;
+ len = 1;
+ }
+ }
+#endif
+ c -= len;
+ lastc = str[c];
str[c] = 0;
}
mac_copy(mp,str,c);
@@ -2102,7 +2135,21 @@ static void comsubst(Mac_t *mp,register
sfnputc(stkp,'\n',newlines);
}
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
mac_copy(mp,&lastc,1);
+ lastc = 0;
+ }
sfclose(sp);
return;
}
@@ -2173,13 +2220,13 @@ static void mac_copy(register Mac_t *mp,
+++ 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,
if(mp->pattern)
{
char *sp = "&|()";
@ -347,15 +245,17 @@
#define STUB 1
--- src/lib/libast/features/wchar
+++ src/lib/libast/features/wchar 2007-12-20 17:50:28.000000000 +0000
@@ -1,5 +1,6 @@
set prototyped
@@ -7,7 +7,8 @@ cat{
#define _AST_WCHAR_H 1
}end
-lib mbstowcs,wctomb,wcrtomb,wcslen,wcstombs,wcwidth stdlib.h stdio.h wchar.h
+lib mbstowcs,wctomb,wcrtomb,wcslen,wcstombs,wcscpy,wcwidth stdlib.h stdio.h wchar.h wctype.h
+lib iswprint,iswalpha,iswalnum,iswdigit,iswcntrl stdlib.h stdio.h ctype.h wctype.h
lib towlower,towupper stdlib.h stdio.h wchar.h
typ mbstate_t stdlib.h stdio.h wchar.h
nxt wchar
@@ -31,6 +32,12 @@ cat <<!
@@ -64,6 +65,12 @@ cat <<!
#undef putwc
#undef putwchar
#undef ungetwc
@ -368,7 +268,7 @@
#define fgetwc _ast_fgetwc
#define fgetws _ast_fgetws
@@ -81,6 +88,12 @@ cat <<!
@@ -114,6 +121,12 @@ cat <<!
#if !_lib_wcstombs
extern size_t wcstombs(char*, const wchar_t*, size_t);
#endif
@ -382,18 +282,19 @@
extern int fwprintf(FILE*, const wchar_t*, ...);
extern int fwscanf(FILE*, const wchar_t*, ...);
--- src/lib/libast/include/ast.h
+++ src/lib/libast/include/ast.h 2010-06-25 12:35:11.542927316 +0200
@@ -186,14 +186,23 @@ typedef struct
#define mbcoll() (ast.mb_xfrm!=0)
+++ src/lib/libast/include/ast.h 2010-08-17 15:09:21.000000000 +0000
@@ -185,8 +185,6 @@ typedef struct
#define mbwide() (mbmax()>1)
#define mb2wc(w,p,n) (*ast.mb_towc)(&w,(char*)p,n)
-#define mbchar(p) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
-#define mbnchar(p,n) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),n))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
#define mbinit() (mbwide()?(*ast.mb_towc)((wchar_t*)0,(char*)0,mbmax()):0)
#define mbsize(p) (mbwide()?(*ast.mb_len)((char*)(p),mbmax()):((p),1))
#define mbconv(s,w) (ast.mb_conv?(*ast.mb_conv)(s,w):((*(s)=(w)),1))
#define mbwidth(w) (ast.mb_width&&((ast.tmp_int=(*ast.mb_width)(w))>=0||(w)>UCHAR_MAX)?ast.tmp_int:1)
#define mbnsize(p,n) (mbwide()?(*ast.mb_len)((char*)(p),n):((p),1))
@@ -195,6 +193,17 @@ typedef struct
#define mbxfrm(t,f,n) (mbcoll()?(*ast.mb_xfrm)((char*)(t),(char*)(f),n):0)
#define mbalpha(w) (ast.mb_alpha?(*ast.mb_alpha)(w):isalpha((w)&0xff))
+#define mbchar(p) (mbwide() ? \
+ (((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0) ? \
@ -420,13 +321,13 @@
#include <stk.h>
--- src/lib/libcmd/Mamfile
+++ src/lib/libcmd/Mamfile 2007-12-20 18:51:50.000000000 +0100
@@ -496,7 +496,7 @@ make cat.o
+++ src/lib/libcmd/Mamfile 2011-05-20 13:40:30.643926303 +0000
@@ -508,7 +508,7 @@ make cat.o
prev cat.c
meta cat.o %.c>%.o ${PACKAGEROOT}/src/lib/libcmd/cat.c cat
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-2010 AT&T Intellectual Property][-license?http://www.opensource.org/licenses/cpl1.0.txt][--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-2010 AT&T Intellectual Property][-license?http://www.opensource.org/licenses/cpl1.0.txt][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -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-2011 AT&T Intellectual Property][-license?http://www.opensource.org/licenses/cpl1.0.txt][--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-2011 AT&T Intellectual Property][-license?http://www.opensource.org/licenses/cpl1.0.txt][--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

@ -9,25 +9,6 @@
#include "shtable.h"
#include "fault.h"
--- src/cmd/ksh93/sh/jobs.c
+++ src/cmd/ksh93/sh/jobs.c 2010-03-03 14:17:34.812626467 +0100
@@ -279,7 +279,7 @@ int job_reap(register int sig)
}
pid = waitpid((pid_t)-1,&wstat,flags);
sh_offstate(SH_TTYWAIT);
-
+#ifdef WCONTINUED
/*
* some systems (linux 2.6) may return EINVAL
* when there are no continued children
@@ -287,6 +287,7 @@ int job_reap(register int sig)
if (pid<0 && errno==EINVAL && (flags&WCONTINUED))
pid = waitpid((pid_t)-1,&wstat,flags&=~WCONTINUED);
+#endif
sh_sigcheck();
if(pid<0 && errno==EINTR && (sig||job.savesig))
continue;
--- 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

View File

@ -1,30 +0,0 @@
--- src/cmd/ksh93/sh/fault.c
+++ src/cmd/ksh93/sh/fault.c 2010-06-28 14:04:13.858925163 +0000
@@ -418,8 +418,25 @@ void sh_chktrap(void)
if(trap=sh.st.trapcom[sig])
{
Sfio_t *fp;
- if(sig==SIGPIPE && (fp=sfpool((Sfio_t*)0,sh.outpool,SF_WRITE)) && sferror(fp))
- sfclose(fp);
+ if(sig==SIGPIPE) {
+ sh.lastsig=SIGPIPE;
+#if 0
+ if ((fp=sfpool((Sfio_t*)0,sh.outpool,SF_WRITE)) && sferror(fp))
+ sfclose(fp);
+#else
+ int fd;
+ for(fd = 0; fd < sh.lim.open_max; fd++)
+ {
+ if (sh.fdstatus[fd] == IOCLOSE)
+ continue;
+ if ((sh.fdstatus[fd]&IOWRITE) == 0)
+ continue;
+ if (sferror(sh.sftable[fd]) == 0)
+ continue;
+ sh_close(fd);
+ }
+#endif
+ }
sh.oldexit = SH_EXITSIG|sig;
sh_trap(trap,0);
}

View File

@ -1,6 +1,6 @@
--- src/cmd/ksh93/bltins/test.c
+++ src/cmd/ksh93/bltins/test.c 2007-01-12 12:19:48.000000000 +0000
@@ -59,12 +59,12 @@ typedef unsigned long Time_t;
+++ src/cmd/ksh93/bltins/test.c 2011-05-20 13:45:24.547925980 +0000
@@ -46,12 +46,12 @@
#ifdef S_ISSOCK
# if _pipe_socketpair
# if _socketpair_shutdown_mode
@ -16,7 +16,7 @@
# endif
# define isasock(f,p) (test_stat(f,p)>=0&&S_ISSOCK((p)->st_mode))
#else
@@ -99,7 +99,7 @@ static int test_strmatch(const char *str
@@ -86,7 +86,7 @@ static int test_strmatch(Shell_t *shp,co
int match[2*(MATCH_MAX+1)],n;
register int c, m=0;
register const char *cp=pat;
@ -25,9 +25,9 @@
{
if(c=='(')
m++;
@@ -436,7 +436,7 @@ int test_unop(register int op,register c
@@ -460,7 +460,7 @@ int test_unop(Shell_t *shp,register int
int test_binop(register int op,const char *left,const char *right)
int test_binop(Shell_t *shp,register int op,const char *left,const char *right)
{
- register double lnum,rnum;
+ register double lnum = 0, rnum = 0;

View File

@ -1,7 +1,7 @@
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c 2011-07-04 15:09:52.252426415 +0000
@@ -2780,7 +2780,8 @@ int sh_funscope(int argn, char *argv[],i
jmpval = sigsetjmp(buff.buff,0);
+++ 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
shp->st.var_local = shp->var_tree;
if(!fun)
{
- shp->st.filename = fp->node->nvalue.rp->fname;

176
ksh93.dif
View File

@ -1,14 +1,3 @@
--- src/cmd/ksh93/sh.1
+++ src/cmd/ksh93/sh.1 2008-09-22 12:11:56.000000000 +0000
@@ -201,7 +201,7 @@ separated by
.BR \(bv .
The standard output of each command but the last
is connected by a
-.IR pipe (2)
+.IR socketpair (2)
to the standard input of the next command.
Each command,
except possibly the last,
--- 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 };
@ -79,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
@@ -186,7 +186,7 @@ const char e_bash_login[] = "$HOME/.bash
@@ -199,7 +199,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
@ -110,41 +99,32 @@
option UCB $?
}end
--- src/cmd/ksh93/sh/io.c
+++ src/cmd/ksh93/sh/io.c 2008-09-11 15:16:16.000000000 +0000
@@ -641,6 +641,7 @@ int sh_close(register int fd)
#ifdef O_SERVICE
+#ifdef O_SERVICE
static int
onintr(struct addrinfo* addr, void* handle)
{
@@ -656,6 +657,7 @@ onintr(struct addrinfo* addr, void* hand
sh_chktrap();
return 0;
}
+#endif
#endif
--- src/cmd/ksh93/sh.1
+++ src/cmd/ksh93/sh.1 2008-09-22 12:11:56.000000000 +0000
@@ -200,7 +200,7 @@ separated by
.BR \(bv .
The standard output of each command but the last
is connected by a
-.IR pipe (2)
+.IR socketpair (2)
to the standard input of the next command.
Each command,
except possibly the last,
--- src/cmd/ksh93/sh/lex.c
+++ src/cmd/ksh93/sh/lex.c 2010-04-08 07:13:26.070925225 +0000
@@ -1082,11 +1082,13 @@ int sh_lex(Lex_t* lp)
}
/* backward compatibility */
{
+ register const char * cp;
if(lp->lexd.warn)
errormsg(SH_DICT,ERROR_warn(0),e_lexnested,shp->inlineno);
+++ src/cmd/ksh93/sh/lex.c 2010-08-17 14:49:14.000000000 +0000
@@ -1136,7 +1136,11 @@ int sh_lex(Lex_t* lp)
if(!(state=lp->lexd.first))
state = fcfirst();
- fcseek(state-fcseek(0));
+ cp = fcseek(0);
+ fcseek(state-cp);
if(lp->arg)
{
lp->arg = (struct argnod*)stkfreeze(stkp,1);
else
- fcseek(state-fcseek(0));
+ {
+ register const char * cp;
+ cp = fcseek(0);
+ fcseek(state-cp);
+ }
lp->lexd.paren = 1;
}
return(lp->token=LPAREN);
--- 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,
@ -159,7 +139,7 @@
#endif
int sh_main(int ac, char *av[], Shinit_f userinit)
@@ -198,7 +198,7 @@ int sh_main(int ac, char *av[], Shinit_f
@@ -199,7 +199,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
@ -205,10 +185,19 @@
for v in ${v//,/ }
do v=${v#*:}
--- src/cmd/ksh93/tests/locale.sh
+++ src/cmd/ksh93/tests/locale.sh 2009-12-09 13:01:41.000000000 +0000
@@ -135,11 +135,11 @@ set -- $($SHELL -c "
+++ src/cmd/ksh93/tests/locale.sh 2011-05-24 16:46:02.000000000 +0200
@@ -62,7 +62,7 @@ done
# this locale is supported by ast on all platforms
# EU for { decimal_point="," thousands_sep="." }
-locale=C_EU.UTF-8
+locale=de_DE.UTF-8
export LC_ALL=C
@@ -111,11 +111,11 @@ set -- $($SHELL -c "
unset LC_CTYPE
export LANG=$utf_8
export LANG=$locale
export LC_ALL=C
- command wc -C < $tmp/two_euro_chars.txt
+ command wc -m < $tmp/two_euro_chars.txt
@ -221,6 +210,21 @@
")
got=$*
[[ $got == $exp ]] || err_exit "command wc LC_ALL default failed -- expected '$exp', got '$got'"
@@ -124,11 +124,11 @@ set -- $($SHELL -c "
then unset LC_CTYPE
export LANG=$locale
export LC_ALL=C
- wc -C < $tmp/two_euro_chars.txt
+ wc -m < $tmp/two_euro_chars.txt
unset LC_ALL
- wc -C < $tmp/two_euro_chars.txt
+ wc -m < $tmp/two_euro_chars.txt
export LC_ALL=C
- wc -C < $tmp/two_euro_chars.txt
+ wc -m < $tmp/two_euro_chars.txt
fi
")
got=$*
--- src/cmd/ksh93/tests/path.sh
+++ src/cmd/ksh93/tests/path.sh 2008-09-11 16:02:46.000000000 +0000
@@ -269,7 +269,7 @@ builtin getconf
@ -233,30 +237,20 @@
PATH=$path
--- src/cmd/ksh93/tests/signal.sh
+++ src/cmd/ksh93/tests/signal.sh 2010-03-05 13:01:05.944126021 +0000
@@ -286,9 +286,9 @@ yes=$(whence -p yes)
do { $SHELL <<- EOF
foo() { return 0; }
trap foo EXIT
- { sleep 2; kill -$exp \$\$; sleep 3; kill -0 \$\$ && kill -KILL \$\$; } &
+ { sleep 2; kill -$exp \$\$; sleep 8; kill -0 \$\$ && kill -KILL \$\$; } &
$yes | while read yes; do
- (/bin/date; sleep .1)
+ (/bin/date; sleep .01)
done > /dev/null
EOF
} 2>> /dev/null
--- src/cmd/ksh93/tests/timetype.sh
+++ src/cmd/ksh93/tests/timetype.sh 2011-05-25 07:45:35.763926377 +0000
@@ -58,7 +58,7 @@
[[ ${tt[0]} == *+00:00 ]] || err_exit 'tt[0] is not yesterday'
[[ ${tt[1]} == *+00:00 ]] || err_exit 'tt[1] is not today'
[[ ${tt[2]} == *+00:00 ]] || err_exit 'tt[2] is not tomorrow'
-[[ ${tt[3]} == *+14:00 ]] || err_exit 'tt[0] is not 2pm'
+[[ ${tt[3]} == *+14:00 ]] || err_exit 'tt[3] is not 2pm'
unset tt
Time_t tt=('2008-08-11+00:00:00,yesterday' '2008-08-11+00:00:00,today' '2008-08-11+00:00:00,tomorrow')
tt[3]=9am
+++ src/cmd/ksh93/tests/signal.sh 2011-05-20 13:25:48.196426330 +0000
@@ -285,10 +285,10 @@ then for exp in TERM VTALRM PIPE
$SHELL <<- EOF
foo() { return 0; }
trap foo EXIT
- { sleep 2; kill -$exp \$\$; sleep 3; kill -0 \$\$ && kill -KILL \$\$; } &
+ { sleep 2; kill -$exp \$\$; sleep 8; kill -0 \$\$ && kill -KILL \$\$; } &
$yes |
while read yes
- do (/bin/date; sleep .1)
+ do (/bin/date; sleep .01)
done > /dev/null
EOF
} 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)
@ -290,7 +284,7 @@
#include "FEATURE/lib"
--- src/lib/libast/features/lib
+++ src/lib/libast/features/lib 2007-12-20 18:01:26.000000000 +0000
@@ -517,14 +517,19 @@ tst lib_utime_now note{ utime works with
@@ -523,14 +523,19 @@ tst lib_utime_now note{ utime works with
}end
tst cross{
@ -319,7 +313,7 @@
--- src/lib/libast/misc/procopen.c
+++ src/lib/libast/misc/procopen.c 2007-12-20 18:01:26.000000000 +0000
@@ -537,7 +537,7 @@ procopen(const char* cmd, char** argv, c
@@ -598,7 +598,7 @@ procopen(const char* cmd, char** argv, c
if (!fork())
{
sfsprintf(path, sizeof(path), "%d", getppid());
@ -340,31 +334,13 @@
#define S2F_scan 1
#ifndef elementsof
--- src/lib/libcmd/chmod.c
+++ src/lib/libcmd/chmod.c 2007-12-20 18:02:37.000000000 +0000
@@ -162,7 +162,7 @@ b_chmod(int argc, char** argv, void* con
int notify = 0;
int ignore = 0;
int show = 0;
+++ 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
case FTS_SLNONE:
if (chlink)
{
-#if _lib_lchmod
+#if !defined(__linux__) && _lib_lchmod
int chlink = 0;
#endif
struct stat st;
@@ -186,7 +186,7 @@ b_chmod(int argc, char** argv, void* con
force = 1;
continue;
case 'h':
-#if _lib_lchmod
+#if !defined(__linux__) && _lib_lchmod
chlink = 1;
#endif
continue;
@@ -249,7 +249,7 @@ b_chmod(int argc, char** argv, void* con
}
}
chmodf =
-#if _lib_lchmod
+#if !defined(__linux__) && _lib_lchmod
chlink ? lchmod :
#endif
chmod;
chmodf = lchmod;
goto commit;
#else

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
@@ -1083,7 +1083,7 @@ case `(getopts '[-][123:xyz]' opt --xyz;
@@ -1097,7 +1097,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 2008-09-11 14:45:18.000000000 +0000
+++ src/cmd/ksh93/Mamfile 2011-05-20 13:34:19.740425655 +0000
@@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
@ -104,7 +104,7 @@
setv SILENT
setv TAR tar
setv YACC yacc
@@ -1394,7 +1394,7 @@ prev +ljobs
@@ -1421,7 +1421,7 @@ prev +ljobs
prev +li
prev ${mam_libsocket}
prev ${mam_libsecdb}
@ -113,7 +113,7 @@
done ksh generated
make shcomp
make shcomp.o
@@ -1418,7 +1418,7 @@ prev ${mam_libsocket}
@@ -1445,7 +1445,7 @@ prev ${mam_libsocket}
prev ${mam_libsecdb}
setv CC.DLL -UCC.DLL
setv SH_DICT -DSH_DICT="\"libshell\""
@ -123,7 +123,7 @@
make suid_exec
make suid_exec.o
--- src/lib/libast/Mamfile
+++ src/lib/libast/Mamfile 2010-06-28 15:41:28.482925307 +0200
+++ src/lib/libast/Mamfile 2010-08-17 15:00:56.000000000 +0000
@@ -5,7 +5,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS
setv ARFLAGS -cr
setv AS as
@ -142,7 +142,7 @@
setv SILENT
setv TAR tar
setv YACC yacc
@@ -961,7 +961,7 @@ make lcgen
@@ -995,7 +995,7 @@ make lcgen
make port/lcgen.c
prev std/stdio.h implicit
done port/lcgen.c
@ -151,8 +151,8 @@
done lcgen generated
make port/lc.tab
done port/lc.tab
@@ -7165,58 +7165,31 @@ exec - test '' = 'misc/magic.tab' || ${S
done ${INSTALLROOT}/lib/file/magic generated
@@ -7258,64 +7258,37 @@ done ${INSTALLROOT}/lib/file/magic gener
make ${INSTALLROOT}/include/ast/fmtmsg.h
prev comp/fmtmsg.h
prev ast_lib.h
-exec - case ${mam_cc_HOSTTYPE} in
@ -173,6 +173,9 @@
-exec - ;;
-exec - esac
+exec - }
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
@ -193,6 +196,9 @@
-exec - ;;
-exec - esac
+exec - }
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
@ -213,9 +219,9 @@
-exec - ;;
-exec - esac
+exec - }
make ${INSTALLROOT}/include/ast/prototyped.h
prev ${INSTALLROOT}/include/ast
exec - echo "#include <../prototyped.h>" > 1.${COTEMP}.x
prev ast_namval.h implicit
prev ${INSTALLROOT}/include/prototyped.h implicit
done ${INSTALLROOT}/include/ast/syslog.h generated
--- src/lib/libcmd/Mamfile
+++ src/lib/libcmd/Mamfile 2008-02-14 12:08:37.000000000 +0000
@@ -7,7 +7,7 @@ setv AR ${mam_cc_AR} ${mam_cc_AR_ARFLAGS