This closes PR pkg/25314.
Changes:
* Made various changes to hopefully improve the clarity.
Added COMPATIBILITY, HISTORY, and NOTES sections.
* Made changes to how the shell handles terminating `\' characters
w/ the `-c' and `-t' flags. This is a simple extension of the
same behaviour exhibited when the shell is interactive or when it
executes a command file, the only difference being that where a
terminating `\' character causes the shell to read the next line
of input in an interactive shell or command file, w/ the `-c' and
`-t' flags the shell terminates w/o executing the command line.
* Allow parameter substitution w/ the `-c' and `-t' flags. This
feature is not documented. For example, invoking the shell as
follows allows parameter substitution to take place:
% osh -t one two three
echo $0 $1 $2 $3
-t one two three
* The shell now ignores SIGINT and SIGQUIT when the `-c' or `-t' flag
is used. Thus, asynchronous commands invoked in this way ignore
interrupts as they should.
* Ignore SIGINT and SIGQUIT for all commands started from asynchronous
subshells. For example, `( sleep 300; some_command ) >outfile&' now
ignores `^C' and `^\' as it should.
* Don't ignore SIGINT and SIGQUIT for asynchronous commands started
in command files. If a command file is terminated by one of these
signals, the asynchronous commands should also terminate.
* Reverted a change made to termination reporting in osh-040216 that
was not actually compatible w/ the V6 shell.
* Always terminate the shell when read(2) fails.
This fixes a possible infinite loop.
* Fixed a bug in the parser that caused syntactically incorrect
subshell commands not to be detected as such when preceded by
redirection arguments (e.g., `<infile >outfile ( | )').
This bug was introduced in osh-040216.
* Fixed possible buffer overflows in substparm(); added a new error
message, "Too many characters", and made other changes necessary to
properly deal w/ the new error condition. This problem had been
present since at least osh-020214.
* Made some changes to how globbing is handled by the shell.
Specifically, glob(3) should only be called when an argument contains
unquoted occurrences of any of the glob characters `*', `?', or `['.
Previously, it was being called for every argument of an external
command. This change improves run-time performance slightly as
judged by time(1) and information returned by getrusage(2).
* The above-mentioned change also allows the following compatibility
feature. Added globbing compatibility when the shell is compiled
w/ -DCLONE so that when no matches are found a diagnostic,
"No match", is printed.
have it be automatically included by bsd.pkg.mk if USE_PKGINSTALL is set
to "YES". This enforces the requirement that bsd.pkg.install.mk be
included at the end of a package Makefile. Idea suggested by Julio M.
Merino Vidal <jmmv at menta.net>.
as shells/osh.
Osh is a re-implementation of the old and obsolete shell version,
which was in standard use up to UNIX 6th Edition and was supplied
as osh with UNIX 7th Edition. Its command language is a sparse
subset of those of modern shells and is mostly common both to sh(1)
and csh(1).
This pkgsrc entry is based on the FreeBSD ports entry for osh.