Log message:
pbosh: Switch to latest distfile.
Changelog
=========
Release 2019-03-29:
- Bourne Shell: local(1), export(1) and readonly(1) now all support to.
expand the '~' character in environment variables like e.g. PATH.
- Bourne Shell: Added unit tests for the tilde expansion and the related
changes.
Release 2019-04-29:
- libshedit/bsh/Bourne Shell: The TAB file name expansion now uses a new
expansion funtion that is not based on pattern matching but on strstr()
and thus is no longer fooled by file names that contain pattern matching
meta characters.
- Bourne Shell: "trap -- ..." now correctly handles "--" \
even if the next
argument is "-".
- Bourne Shell: trap now supports a new option -p that allows to restore
the whole trap state using the following commands:
old_traps=$(trap -p)
trap "some commands" INT QUIT
...
eval "$old_traps"
This is possible because "trap -p" outputs the state for all signals
and not only for those signals that are not in the default state.
The new trap interfase was agreed on in the 2019-04-11 POSIX
teleconference.
Bourne Shell: The exception for "while true; do date; done | uniq -c"
in job control handling that has been introduced in November 2015 has
been refined to prevent it from causing "(bosh)" to stop from SIGTTIN.
Thanks to Robert Elz <kre@munnari.OZ.AU> for reporting.
- Bourne Shell: A new #define JOB_DEBUG has been added.
- Bourne Shell: The command:
(trap '' SEGV; $SHELL -c 'kill -s SEGV $$; echo survived')
caused the shell not to print "survived" because a previous exception
for SIGSEGV from the 1977 Bourne Shell version had not been removed
for the POSIX variant of the shell. The problem occured because it
was possible to unignore an ignored (at startup) SIGSEGV.
Thanks to Robert Elz <kre@munnari.OZ.AU> for reporting.
- Bourne Shell: The code now uses SIG2STR_MAX for the size of the
sig2str() output buffer.
- Bourne Shell: the behavior related to SIGINT on the command line
in the case that the history editor is enabled has been changed to
match the behavior of ksh. The Bourne Shell now calls trap commands
for SIGINT when ^C is typed on the command line.
Note that the classical Bourne Shell behavior (which is still active
in case the history editor has been disabled via "set +o ved") is that
the trap command is called after ^C is followed by a CR if both are
typed on a PS1 prompt.
Note: The behavior for "trap" in this area is currently not specified
in POSIX.
- Bourne Shell: After jobcontrol has been introduced into the Bourne
Shell: When in jobcontrol mode, the shell could no longer get
signals at the same time as foreground jobs because when using
jobcontrol, the shell is in a different process group than the
foreground job.
The Bourne Shell now derives the information about a delivered signal
from the waitid() return data and thus is now able to work the same
way as it has been designed in 1977. This is the same way as ksh works.
If a foreground program catches such signals, the shell is still not
able to detect the signal, but it is now closer to the original
behavior from 1977.
- Bourne Shell: new version date 2019-04-17
Release 2019-05-28:
- Bourne Shell: Similar to what ksh88 does, scripts are now checked
before they are run. If there is a nul byte before a newline
in the first 256 bytes, a file is rejected as alien binary
instead of trying to interpret it as a script.
Release 2019-06-13:
- Bourne Shell: A new option "set -o globskipdot" has been added.
If set, the entries "." and ".." are skipped and not \
shown in globbing
results. If not set, the entries "." and ".." are always \
returned,
even when they are not part of the readdir(3) results.
- Bourne Shell: The option "set -o globskipdot" has been made the
new dfault behavior for "bosh", but not for "pbosh"
Note that this new shell option has been introduced as a result
of a related BUG discussion in the Austin Group telephone conference.
The background is to permit shell scripts to check whether a shell
grants to hide the "." and ".." for all filesystems.
Release 2019-07-15:
- Bourne Shell: If OPTIND is set to a new value, the getopt() internal
variable "_sp" is now reset to 1. This is needed in order to make sure
that a combined option string can be parsed correctly.
- Bourne Shell/libshedit/bsh: The TAB expander now again gives .. as a.
result if the pattern is ..
This is needed in order to let ..TAB result in ../ on the command
line editor.
Release 2019-09-22:
- Bourne Shell: The new function isbinary() that has been introduced
in May and that should prevent the shell from interpreting binary
files as shell scripts had a problem:
In case that a disconnected TCP/IP based remote login caused a SIGTERM
followed by the read() function on stdin returning EIO, the shell
could go into a complex endless loop as the failing read() with
"trapnote" set caused a longjmp() before the next prompt without first
clearing "trapnote". As a result, the shell did hang endlessly around
while just consuming CPU time.
The shell now avoids to call the read() routine inside isbinary()
when "trapnote" is set and this way is able to avoid the longjmp() on
error.
- Bourne Shell: Fixed some typos in comment
Thanks to Robert Clausecker for reporting
- Bourne Shell: print.c: Changed err++ for a BOOL typed variable
into err = TRUE.
Thanks to Robert Clausecker for reporting
- Bourne Shell, with obosh compilation type: Avoid an "unused" warning
with word.c
- Bourne Shell: defs.h now includes an "extern int optopt;" in order
to support Ultrix where this delcaration is missing in unistd.h.
Thanks to Robert Clausecker for reporting
- bsh/Bourne Shell: test.c Now using a
#if defined(S_IFPORT) && S_IFPORT != S_IFIFO
to work around a strange definition on Ultrix
Thanks to Robert Clausecker for reporting
- Bourne Shell: New version date
|
Log message:
pbosh: update to 20190311.
Update provided by Michael Bäuerle via pksrc-wip.
Changelog
=========
Release 2019-02-18:
- libgetopt: The undocumented variable "_sp" from SVr4 has been renamed
to "opt_sp" and (on platforms that support "#pragma \
weak") there
is a weak reference _sp to that new variable, giving backwards
compatibility.
The reason for doing this is to make sure that people on Illumos
or Oracle Solaris, who still have an outdated version of getopt()
in their local libc, do not try to link the Bourne Shell only
against their old getopt(). If they did this, they would not get
the documented enhanced getopt() features from the Bourne Shell.
- Bourne Shell: The shell now uses "opt_sp" as the name for the
undocumented additional getopt() interface from AT&T. This has
been done to avoid being able to link the Bourne Shell on
Illumos or Oracle Solaris without using our libgetopt. If this
was done, we could not support UNIX/MULTICS style long options
and we could not support -help/--help, since the latter is
implemented via long options that are not an alias to short
options.
- Bourne Shell: added a new timestamp to the Bourne Shell version.
Release 2018-11-21:
- Bourne Shell: make it exit the whole shell with set -e after a command
substitution failed on the right side of a variable assignment
that has no command. This is required by POSIX.
- Bourne Shell: added a unit tests for the above case.
- Bourne Shell: New version date set to 2018-12-08 the this change.
Release 2019-01-22:
- bsh / Bourne Shell / star: the function hop_dirs() no longer checks
for p2 != NULL before calling *p2 = '/' as p2 has
been granted to be != NULL from a break with
strchr(p, '/') == NULL
Thanks to Pavel Raiskup for poiting to a related
Coverity message.
- Bourne Shell: Added a missing /* FALLTHROUGH */ comment..
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: added a range check for $OPTIND to tge getopts(1)
implementation
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Removed a nonsense variable in expand() that caused
Coverity not to understand that a directory was correctly
closed()
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Added a paranoia comparison to make Coverity quiet.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: avoid to call catpath() with a NULL pointer for path
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: check the write() return code in io.c
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Added a paranopia check for "test -o" to make Coperity
quiet.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Added (void) before fcntl() in hope to make Coverity
quiet.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Removed dead code from readwc()
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: Cstyle changes to xec.c
- Bourne Shell: "builtin -d ..." did access free()d memory.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: expand.c: added a check for fd == -1 to avoid calling
openat() with that fd.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
-Bourne Shell: func.c: added a check for fd == -1 to avoid calling
read()/close() with that fd.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: jobs.c: enlarged a buffer to be of same size as
numbuf[] to avoid a potential buffer overflow.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: print.c::prt_cntl() had a very old (AT&T) bug with
printing byte sequences that get an error with mbtowc() and it
did not print byte sequences correctly that refer to legal but
"nonprintable" multi byte characters.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: xec.c: the reserved word "time" could cause to
access uninitialized memory if the string in $TIMEFORMAT
contains the format %J
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
- Bourne Shell: xec.c: added a paranoia check on whether
findnam("funcname") returns NULL even though the \
existence of
a function with that name already has been verified via the
hash service.
Thanks to Pavel Raiskup for poiting to a related Coverity
message.
Release 2019-02-18:
- Bourne Shell: Another vfork() problem has been fixed. "trap cmd EXIT"
has incorrectly called "cmd" after a non-existing \
command was.
called by the shell. This was a result of the shared data from
vfork().
Thanks to Martijn Dekker for reporting.
- Bourne Shell: A unit test case for the above bug has been added.
- Bourne Shell: __growstak() now always uses realloc() on modern
platforms. This may speed up things up to 15%.
Thanks to Jan Engelhardt for reporting.
Release 2019-03-11:
- libgetopt/Bourne Shell: added an #ifndef __CYGWIN__ in order to avoid
overwriting non-standard definitions by standard
definitions on Cygwin for the global getopt()
variables.
Thanks to Heiko Ei[eszett]feldt for proposing this
fix.
- Bourne Shell: better comment in bltin.c
|