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.
Patch provided by Geoff C. Wing in PR 24918
ok'd by uebayasi@
New features between zsh versions 4.0 and 4.2
Configuration:
* upgraded to use autoconf post-2.50
* improved compatibility with other shells through shell options, builtin
arguments and improved builtin option parsing
Syntax and builtins:
* new printf builtin
* `+=' to append to parameters which works for scalars, arrays and (with
pairs) associative arrays.
* enhanced multiple parameter `for' loops: for key value in key1 value1 key2
value2 ... maintaining full compatibility with POSIX syntax.
* Suffix aliases allow the shell to run a command on a file by suffix, e.g
`alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'. Supplied function
zsh-mime-setup uses existing mailcap and mime.types files to set up suitable
aliases. Supplied function pick-web-browser is suitable for finding a browser
to show .html etc. files by suffix alias.
* new option `no_case_glob' for case-insensitive globbing.
Add-on modules and functions:
* zsh/datetime modules makes date formatting and seconds since EPOCH available
inside the shell.
* zsh/net/tcp module provides builtin interface to TCP through ztcp builtin.
Function suite for interactive and script use with expect-style pattern
matching.
* zsh/net/socket module provides zsocket builtin.
* zcalc calculator function with full line editing.
* builtin interface to pcre library
* zsh/zselect module provides zselect builtin as interface to select system call
Completion system:
* general improvements to command and context support, low-level functions,
display code.
* in verbose mode, matches with the same description are grouped
* highly configurable completions for values of specific parameters, specific
redirections for specific commands
* support for bash completion functions (typically zsh native functions are more
powerful where available)
* New completions provided for (some of these may be in later 4.0 releases):
valgrind, tidy, texinfo, infocmp, Java classes, larch, limit, locale
parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange (dch), email
addresses, file system types, Perforce, xsltproc. Plus many others.
Line editor:
* special parameters $PREDISPLAY, $POSTDISPLAY available in function widgets
to configure uneditable text (for narrowing)
* recursive editing
* supplied widgets read-from-minibuffer, replace-string use these features
(more intuitive prompting and argument reading than 4.0)
* access to killed text via $CUTBUFFER and $killring
* supplied highly configurable word widgets forward-word-match etc., can set
what constitutes a word interactively or in startup script (implement
bash-style behaviour, replacing previous bash-* word widgets)
* interface to incremental search via $LASTSEARCH
* better handling of keymaps in zle and widgets
* better support for output from user-defined widgets while zle is active
* tetris game which runs entirely in zle
* several other contributed widgets
Local internal improvements:
* disowned jobs are automatically restarted
* \u and \U print escapes for Unicode
* read -d allows a custom line ending.
* read -t .
* line numbers in error messages and $PS4 output are more consistent
* `=prog' expands only paths, no longer aliases for consistency
* job display in prompts; `jobs' command output can be piped
* prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
* rand48() function in zsh/mathfunc for better randomness in arithmetic
(if the corresponding math library function is present)
* $SECONDS parameter can be made floating point via `typeset -F SECONDS'
for better timing accuracy
* improvements to command line history mechanism
* job table is dynamically sized, preventing overflow (typically seen
previously in complex completions).
* many bugfixes
presence of some strings to decide how to build zsh. This is, of course,
a stupid thing to do, but we must not override config.status to "fix"
this build. This fixes PR 24483.
explicitly calls config.status to generate some Makefiles in certain
directories. This particular package has a need for executing the real
config.status, so we need to avoid overriding it automatically.
Nologinmsg is a slightly more functional replacement for /sbin/nologin.
It adds per-user messages, and group messages (of a form).
From the FreeBSD ports collection.
PR:
Submitted by:
Reviewed by:
Approved by:
Obtained from: FreeBSD ports collection
MFC after:
Changes since 20030621:
* A bug in which could cause memory corruption when a posix
function invoked another one has been fixed.
* A bug in which a file descriptor>2 could be closed before
executing a script has been fixed.
* A parsing error for <() and >() process subsitituions inside
command substitution has been fixed.
* A parsing error for patterns of the form {...}(...) when
used inside ${...} has been fixed.
* An error in which expanding an indexed array inside a compound
variable could cause a core dump has been fixed.
* A bug in which under on rare ocassions a job completion interrupt
could cause to core dump has been fixed.
* A bug in which process substitution embeded within command
substitution would generate a syntax error has been fixed.
This update does also fix the build problems on NetBSD-current reported
by Steven M. Bellovin in PR pkg/22422.
Use INSTALL_TARGET to install info files: this gives a proper
environment for USE_NEW_TEXINFO framework to work.
Fix makeinfo invocation for zsh-current via patch file so that
only _one_ info file is generated as PLIST seems to want it.
Changes since 20030422 (from the release notes):
A source and binary update. There are few small but significant patches
for ksh and nmake. nmake -l/+l library list generation is much improved.
IBM z-series { linux.s390, linux.s390-64 } and i-series { linux.ppc64 }
binary architectures have been added, and the ebcdic { mvs.390 } has
been updated after a long absence.