2020-09-28 12:39:31 by Michael Baeuerle | Files touched by this commit (1) |
Log message:
shells/bosh: Specify minimum required version of smake tool dependency
This is required because devel/smake/Makefile.common must be recent enough.
|
2020-08-26 16:11:04 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
shells/bosh: Update to 20200812
New features with AN-2020-07-18:
- Bourne Shell: A new symlink from /opt/schily/xpg4/bin/bosh to
/opt/schily/xpg4/bin/sh is created when "smake install" is called.
This helps people to call "bosh" in strict POSIX mode using the
command line name "bosh" by putting /opt/schily/xpg4/bin in PATH
before /opt/schily/bin, where the bosh implements better backwards
cmpatibility to the Bourne Shell by default than a strictly POSIX
compliant bosh would do. /opt/schily/xpg4/bin/bosh behaves the same
as "/opt/schily/bin/bosh -o posix".
Thanks to Koichi Nakashima for reporting.
New features with AN-2020-08-12:
- autoconf: added a new test for the existence of <sys/auxv.h>
- autoconf: added new tests for Linux getauxval() and FreeBSD elf_aux_info()
- libschily: getexecpath.c now uses getauxval() on Linux and elf_aux_info()
on FreeBSD. This was needed since readlink("/proc/curproc/file") on
FreeBSD returns random values for hardlinked files, making it impossible
to use the result in order to find out which behavior variant of a
fat binary is requested.
- Bourne Shell: Several #ifdef SIG* have been added to make it compile
on older UNIX versions.
Thanks to a hint from Albert Wik.
|
2020-07-17 13:25:35 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
shells/bosh: Update to 20200701
Take maintainership.
Changelog from AN-2020-07-01:
- Bourne Shell: A command like
bosh -c 'var=$({ echo value >&3; } 3>&1); echo $var'
Did not print "value" as expected, but rather bosh: 3: bad file number
This is related to the fact that curly brackets do not have an
own binary node type in the parsed output and the recursive parser
from the $(cmd) execution needs to reconstruct the text form
of a command tree. As a result, the command has been translated
into:
bosh -c 'var=$( echo value >&3 3>&1); echo $var'
and this caused the observed problem.
Note that this basic problem may not be finally fixed, so please
report in case that other commands with curly brackets together
with $(cmd) cause problems.
Thanks to Koichi Nakashima for reporting.
- Bourne Shell: Added a unit test for the bug above.
|
2020-03-20 12:58:37 by Nia Alarie | Files touched by this commit (640) |
Log message:
*: Convert broken sourceforge HOMEPAGEs back to http
|
2020-03-04 12:42:23 by Michael Baeuerle | Files touched by this commit (2) | |
Log message:
bosh: Update to 20200211
New features with AN-2020-02-11:
- Bourne Shell: now also using GETOPT_PLUS_FL
- Bourne Shell: A new variable ${.sh.path} returns the absolute path
of the binary associated to the exec() for this shell.
- Bourne Shell: The definition of NUMBUFLEN was moved from print.c to
defs.h to allow others to write into numbuf, knowing it's length.
- Bourne Shell: The archive sh/dotfiles.tar.bz2 now contains an updated
.shrc file that makes use of the new shell variable ${.sh.path}
- Bourne Shell: "for i in; do cmd ...; done" is now valid syntax even
though this is useless, since bosh did already accept:
"for i in $emptyvar ; do cmd ...; done"
But this is in the POSIX standard and other recent shells seem to
accept it.
Thanks to Robert Elz for reporting
- Bourne Shell: Added a new conformance test for the for loop
- Bourne Shell: The call "bosh -version" now prints 2020...
- Bourne Shell Missing features for POSIX compliance:
- Support for $'...' quoting (this is not needed for the current
version of POSIX but for the next POSIX
version that will be named SUSv8).
The development of SUSv8 will start in
late 2016.
We are now expecting the Bourne Shell to be fully POSIX compliant.
- libschily: new man pages starthandlecond.3 and unhandlecond.3
- libschily: handlecond.3 and raisecond.3 now correctly mention
handlecond() & raisecond() instead of handle()/raise(). The old names
from 1980 had to be renamed because os an unfriendly actt from the
C standard commitee.
Thanks to Eric Ackermann for reporting
as a side effect of a code review for SchilliX-ON
- libschily: various small fixes in various man pages from libschily.
Thanks to Eric Ackermann for reporting
as a side effect of a code review for SchilliX-ON
[...]
- Bourne Shell further TODO list:
- Finish loadable builtin support.
- POSIX does not allow us to implement ". -h", so we will
add a "source" builtin to be able to implement "source -h"
- The following builtins (that are available in bsh) are still missing in
the Bourne Shell:
err echo with output going to stderr
glob echo with '\0' instead of ' ' between args
env a builtin version of /usr/bin/env
The following bsh intrinsics are still missing in the Bourne Shell:
- the restricted bsh has restriction features that
are missing in the Bourne shell.
- source -h read file into history but do not execute
and probably more features not yet identified to be bsh unique.
|
2020-01-19 00:36:14 by Roland Illig | Files touched by this commit (3046) |
Log message:
all: migrate several HOMEPAGEs to https
pkglint --only "https instead of http" -r -F
With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.
This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
|
2020-01-10 13:38:22 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
shells/bosh: Update to 20191205
Based on Schily Tools Release 2019-12-05.
AN-2019-11-11:
- libschily: the new functions wcastoi wcastol wcastolb that have been
added with the previous release have been forgotten in the linker map
file.
AN-2019-12-05:
- include/schily/stdio.h: We no longer define getc_unlocked() on Solaris
in case that it is defined already. This was needed since Oracle
Solaris 11.4 compiles 64 bit by default and made stdio less opaque
than before - this result in the same bahavior as for 32 bit programs.
This means, we no longer need to use tricks to get fast access to
stdio.
Thanks to Rolf Dietze for reporting.
- libschily: the function getargs() and similar (from the option parser
group) fixed a bug that prevented the usability of the official method
to include the char '+' inside option names by quoting the character
in the option name used in the format string.
This bug has been fixed in order to be able to support "star -dump+ \
..."
- libshedit: because of the changes in Oracle Solaris 11.4, we need to
#undef FAST_GETC_PUTC in order to avoid to use getc_unlocked().
Thanks to Rolf Dietze for reporting.
- Bourne Shell/bsh: */hashcmd.c did not handle a malloc()ed string
correctly and could cause a memory leak with hash commands that
do not add new aliases.
We now create a copy using make()/makestr() before calling ab_push()
or ab_insert() and always free "name" at the end of the function
hashcmd()
- Bourne Shell: The man page now documents that the command
"set -o hashcmds"
inside the file $HOME/.shrc makes a # on the fist column of that
file and followed by a non-space character, no longer a comment..
It is thus recommended to have "set -o hashcmds" close to the.
bottom of the file $HOME/.shrc
|
2019-11-08 15:22:56 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
shells/bosh: Update to 20191025
Based on schilytools release from 2019-10-25.
Changelog
=========
- include/schily/wchar.h: Some fallback definitions for
mbsinit() mbrtowc() wcrtomb() have been moved to make them always
visible and not only in case that <wchar.h> exists.
- include/schily/wchar.h: Before, we checked for HAVE_ISWPRINT to catch
the HP-UX-10.20 case where wchar_t is in stdlib.h. Now we check
(SIZEOF_WCHAR == 0 || SIZEOF_WCHAR_T == 0) as this works on Ultrix as
well.
- libgetopt: The getopt() function now supports options in the form:
+o, ++long-option or +long-option
if the optstring starts with a '+'. A new exported variable
"optflags" has the bit "OPT_PLUS" set, in case that an \
actual option
starts with '+'.
If more than one of the flag characters ':', '+' or "()" are used,
"()" must be last.
- Bourne Shell: The testsuite no longer tries to check ISO-8859-1 strings
as we cannot set this up reliably on all platforms and as Mac OS does
not allow to create the related filenames.
- Bourne Shell: The getopts(1) builtin command now supports options in.
the form:
+o, ++long-option or +long-option
if the optstring starts with a '+'. The shell variable "$NAME" has
a leading '+' in case that an actual option starts with '+'.
Note that this makes getopts(1) in the Bourne Shell compatible at
shell script level to the extensions in the getopts(1) implementation
in ksh93 for:
-o/+o Short options with either a leading - or +
--long GNU style long options as aliases to short -o options
++long GNU style long options as aliases to short +o options
Our enhancements to support:
-long UNIX style long options as aliases to short -o options
+long UNIX style long options as aliases to short +o options
- Long options the have no related short option
Are not supported by ksh93.
|
2019-10-24 19:03:35 by Michael Baeuerle | Files touched by this commit (2) |
Log message:
shells/bosh: Update to 20191007
Based on SchilyTools Release from 2019-10-07.
Changelog
=========
- configure: Some shells report a syntax error with "< file (cmd)"
and need the redirection statement to be *after* the command. Our
changes to support the V7 shell by adding round braces caused ash
variants like "dash" to fail.
Thanks to Harald van Dijk for reporting
- cont/cc-config.sh: canged some :>some-file statements into
(:)>some-file. they have meen missed when introducing work arounds
for the V7 Shell on Ultrix that does not support I/O redirection
for builtin commands.
Thanks to Robert Clausecker for reporting
- libschily/comerr.c: If the environment COMERR_EXCODE has been set to
a value that starts with '0', the normal exit code mapping is switched
off, but all potential exit code values != 0 that follow the rule
(excode % 256) == 0
are mapped to -64. This helps to avoid unexpected behavior with
historic shells that still use the old waitpid() and modern
shells (using waitid() but in a backward compatible default mode)
where a program that terminates with
exit(256);
is evaluated in conditional statements as if the exit code was 0.
- Bourne Shell: Missing Makefile.dot added.
- Bourne Shell / bsh / ved: The dotdiles TAR archives are now again named
*/dotfiles.tar.bz2 as the change in the previous release caused
problems.
Thanks for Gabriele Balducci balducci@units.it and Robert Clausecker
for reporting
- Bourne Shell: Cstyle changes (long lines removed) in io.c & expand.c
- Bourne Shell: Fixed a bug that prevented to forward the special exit
cause (NOTFOUND or NOEXEC) to the vfork() parent process via.
struct siginfo.si_code in some cases. These values are added beyond
the POSIX CLD_* values in siginfo.si_code from the POSIX standard.
They are passed back from the vfork()ed child to the parent via the
shared memory from the vfork() implementation.
- Bourne Shell: introduced shared memory to be able to forward the
special exit cause (NOTFOUND or NOEXEC) to the parent even in case it
used fork() instead of vfork().
- Bourne Shell: Added support for a new automatic parameter "$/" to
complement the existing parameter "$?".
This is a result from a discussion in a POSIX teleconference from
April 2016.
This new parameter returns *decimal numbers* for a normal command
termination and *text* for abnormal command termination:
number<>Exit code from normal termination. This is a signed 32 bit
value from the exit() parameter on POSIX systems and a 8 bit
value on pre-POSIX systems like Linux.
signame>A signal name (see kill -l) if the command has been terminated
by a signal. This is the signal name with the leading "SIG"
stripped off.
NOEXEC<>The command was found but could not be executed, e.g. as
a result of missing permissions or because the name points
to a directory.
NOTFOUND The command could not be found.
Note that currently, the strings "NOEXEC" and "NOTFOUND" \
are passed
back reliably from vfork(2) childs or when the related state is already
known by the cache. In other cases, the reliability of $/ with respect
to "NOEXEC" and "NOTFOUND" has not yet been verified. It \
thus may
return 126 or 127 as with $?. The string values "NOEXEC" and \
"NOTFOUND"
cannot be passed back from a subshell, using only the waitid()
mechanism. To circumvent that problem, from fork()ed subshells,.
shared memory or non-fork()ed virtual subshells would work.
If you detect a complex command where you get 126 or 127 instead of
the exoected "NOEXEC" or "NOTFOUND", please send a report.
We for now choose to use shared memory as this is easier to implement.
Later versions will mosy likely implement virtual fork()less
subshells.
- Bourne Shell: minor Cstyle changes on word.c and macro.c
- Bourne Shell: New version date
|
2019-10-04 16:01:14 by Michael Baeuerle | Files touched by this commit (3) |
Log message:
bosh: 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
|