---------------------------
2016-12-21 Peter Stephenson <p.w.stephenson@ntlworld.com>
* unposted: Config/version.mk, Etc/FAQ.yo, NEWS, README:
release 5.3.1:
2016-12-18 Baptiste Daroussin <bapt@FreeBSD.org>
* 40210: Completion/Unix/Command/_sysctl: Add support modern
FreeBSD and drop support for FreeBSD < 5
2016-12-18 Baptiste Daroussin <bapt@gandi.net>
* 40209: Completion/BSD/Command/_chflags: Fix typo in chflags
completion
2016-12-16 Daniel Shahaf <d.s@daniel.shahaf.name>
* 40149: Functions/VCS_Info/Backends/VCS_INFO_get_data_git:
vcs_info git: Avoid a fork.
* 40203: Test/B03print.ztst: Resolve 'printf --' question from
grandparent commit (thanks Chet).
2016-12-15 Barton E. Schaefer <schaefer@zsh.org>
* 40198: Test/V10private.ztst: output of B02typeset differs when
(( UID == 0 )) so do not attempt to redo that test in that case
2016-12-14 Barton E. Schaefer <schaefer@zsh.org>
* 40179: Src/builtin.c: fix handling of "printf -" and "printf --"
* unposted: Test/B03print.ztst: regression for 40179 / 37467
2016-12-12 Peter Stephenson <p.w.stephenson@ntlworld.com>
* unposted: Config/version.mk: update to 5.3-dev-0 to avoid
clash with installed 5.3.
changes:
patch 06:
Out-of-range negative offsets to popd can cause the shell to crash attempting
to free an invalid memory block.
patch 07:
When performing filename completion, bash dequotes the directory name being
completed, which can result in match failures and potential unwanted
expansion.
patch 08:
Under certain circumstances, bash will evaluate arithmetic expressions as
part of reading an expression token even when evaluation is suppressed. This
happens while evaluating a conditional expression and skipping over the
failed branch of the expression.
patch 09:
Depending on compiler optimizations and behavior, the `read' builtin may not
save partial input when a timeout occurs.
patch 10:
Depending on compiler optimizations and behavior, the `read' builtin may not
save partial input when a timeout occurs.
patch 11:
Subshells begun to run command and process substitutions may attempt to
set the terminal's process group to an incorrect value if they receive
a fatal signal. This depends on the behavior of the process that starts
the shell.
MASTER_SITES= site1 \
site2
style continuation lines to be simple repeated
MASTER_SITES+= site1
MASTER_SITES+= site2
lines. As previewed on tech-pkg. With thanks to rillig for fixing pkglint
accordingly.
Changelog:
Changes from 5.2 to 5.3
-----------------------
It is possible to enable character width support for Unicode 9 by
configuring with `--enable-unicode9'; this compiles in some additional
tables. At some point this support may move into a module, in which
case the configure option will be changed to cause the module to be
permanently loaded. This option is not useful unless your terminal also
supports Unicode 9.
The new word modifier ':P' computes the physical path of the argument.
It is different from the existing ':a' modifier which always resolves
'/before/here/../after' to '/before/after', and differs from the
existing ':A' modifier which resolves symlinks only after 'here/..' is
removed, even when /before/here is itself a symbolic link. It is
recommended to review uses of ':A' and, if appropriate, convert them
to ':P' as soon as compatibility with 5.2 is no longer a requirement.
The output of "typeset -p" uses "export" commands or the "-g" option
for parameters that are not local to the current scope. Previously,
all output was in the form of "typeset" commands, never using "-g".
vi-repeat-change can repeat user-defined widgets if the widget calls
zle -f vichange.
The parameter $registers now makes the contents of vi register buffers
available to user-defined widgets.
New vi-up-case and vi-down-case builtin widgets bound to gU/gu (or U/u
in visual mode) for doing case conversion.
A new select-word-match function provides vim-style text objects with
configurable word boundaries using the existing match-words-by-style
mechanism.
Support for the conditional expression [[ -v var ]] to test if a
variable is set for compatibility with other shells.
The print and printf builtins have a new option -v to assign the output
to a variable. This is for bash compatibility but with the additional
feature that, for an array, a separate element is used each time the
format is reused.
New x: syntax in completion match specifications make it possible to
disable match specifications hardcoded in completion functions.
- Fix type of read in prompt confirmation (eg. rmstar) (David Kaspar)
- Fix out of bounds read (Brooks Davis)
- Don't play pointer tricks that are undefined in modern c (Brooks Davis)
- Use `` instead $() for solaris, bleh.
This is a terse description of the new features added to bash-4.4 since
the release of bash-4.3. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. There is now a settable configuration #define that will cause the shell
to exit if the shell is running setuid without the -p option and setuid
to the real uid fails.
b. Command and process substitutions now turn off the `-v' option when
executing, as other shells seem to do.
c. The default value for the `checkhash' shell option may now be set at
compile time with a #define.
d. The `mapfile' builtin now has a -d option to use an arbitrary character
as the record delimiter, and a -t option to strip the delimiter as
supplied with -d.
e. The maximum number of nested recursive calls to `eval' is now settable in
config-top.h; the default is no limit.
f. The `-p' option to declare and similar builtins will display attributes for
named variables even when those variables have not been assigned values
(which are technically unset).
g. The maximum number of nested recursive calls to `source' is now settable
in config-top.h; the default is no limit.
h. All builtin commands recognize the `--help' option and print a usage
summary.
i. Bash does not allow function names containing `/' and `=' to be exported.
j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
k. The shell now allows `time ; othercommand' to time null commands.
l. There is a new `--enable-function-import' configuration option to allow
importing shell functions from the environment; import is enabled by
default.
m. `printf -v var ""' will now set `var' to the empty string, as if `var=""'
had been executed.
n. GLOBIGNORE, the pattern substitution word expansion, and programmable
completion match filtering now honor the value of the `nocasematch' option.
o. There is a new ${parameter@spec} family of operators to transform the
value of `parameter'.
p. Bash no longer attempts to perform compound assignment if a variable on the
rhs of an assignment statement argument to `declare' has the form of a
compound assignment (e.g., w='(word)' ; declare foo=$w); compound
assignments are accepted if the variable was already declared as an array,
but with a warning.
q. The declare builtin no longer displays array variables using the compound
assignment syntax with quotes; that will generate warnings when re-used as
input, and isn't necessary.
r. Executing the rhs of && and || will no longer cause the shell to fork if
it's not necessary.
s. The `local' builtin takes a new argument: `-', which will cause it to save
and the single-letter shell options and restore their previous values at
function return.
t. `complete' and `compgen' have a new `-o nosort' option, which forces
readline to not sort the completion matches.
u. Bash now allows waiting for the most recent process substitution, since it
appears as $!.
v. The `unset' builtin now unsets a scalar variable if it is subscripted with
a `0', analogous to the ${var[0]} expansion.
w. `set -i' is no longer valid, as in other shells.
x. BASH_SUBSHELL is now updated for process substitution and group commands
in pipelines, and is available with the same value when running any exit
trap.
y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or
not bash is being run in a GNU Emacs shell window.
z. Bash now treats SIGINT received when running a non-builtin command in a
loop the way it has traditionally treated running a builtin command:
running any trap handler and breaking out of the loop.
aa. New variable: EXECIGNORE; a colon-separate list of patterns that will
cause matching filenames to be ignored when searching for commands.
bb. Aliases whose value ends in a shell metacharacter now expand in a way to
allow them to be `pasted' to the next token, which can potentially change
the meaning of a command (e.g., turning `&' into `&&').
cc. `make install' now installs the example loadable builtins and a set of
bash headers to use when developing new loadable builtins.
dd. `enable -f' now attempts to call functions named BUILTIN_builtin_load when
loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows
loadable builtins to run initialization and cleanup code.
ee. There is a new BASH_LOADABLES_PATH variable containing a list of directories
where the `enable -f' command looks for shared objects containing loadable
builtins.
ff. The `complete_fullquote' option to `shopt' changes filename completion to
quote all shell metacharacters in filenames and directory names.
gg. The `kill' builtin now has a `-L' option, equivalent to `-l', for
compatibility with Linux standalone versions of kill.
hh. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial
environment.
ii. inherit_errexit: a new `shopt' option that, when set, causes command
substitutions to inherit the -e option. By default, those subshells disable
-e. It's enabled as part of turning on posix mode.
jj. New prompt string: PS0. Expanded and displayed by interactive shells after
reading a complete command but before executing it.
kk. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to
SIG_DFL when the shell is started, so they are set to SIG_DFL in child
processes.
ll. Posix-mode shells now allow double quotes to quote the history expansion
character.
mm. OLDPWD can be inherited from the environment if it names a directory.
nn. Shells running as root no longer inherit PS4 from the environment, closing
a security hole involving PS4 expansion performing command substitution.
oo. If executing an implicit `cd' when the `autocd' option is set, bash will
now invoke a function named `cd' if one exists before executing the `cd'
builtin.
pp. Value conversions (arithmetic expansions, case modification, etc.) now
happen when assigning elements of an array using compound assignment.
qq. There is a new option settable in config-top.h that makes multiple
directory arguments to `cd' a fatal error.
rr. Bash now uses mktemp() when creating internal temporary files; it produces
a warning at build time on many Linux systems.
2. New Features in Readline
a. The history truncation code now uses the same error recovery mechansim as
the history writing code, and restores the old version of the history file
on error. The error recovery mechanism handles symlinked history files.
b. There is a new bindable variable, `enable-bracketed-paste', which enables
support for a terminal's bracketed paste mode.
c. The editing mode indicators can now be strings and are user-settable
(new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
variables). Mode strings can contain invisible character sequences.
Setting mode strings to null strings restores the defaults.
d. Prompt expansion adds the mode string to the last line of a multi-line
prompt (one with embedded newlines).
e. There is a new bindable variable, `colored-completion-prefix', which, if
set, causes the common prefix of a set of possible completions to be
displayed in color.
f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
mode yank-pop.
g. The redisplay code underwent several efficiency improvements for multibyte
locales.
h. The insert-char function attempts to batch-insert all pending typeahead
that maps to self-insert, as long as it is coming from the terminal.
i. rl_callback_sigcleanup: a new application function that can clean up and
unset any state set by readline's callback mode. Intended to be used
after a signal.
j. If an incremental search string has its last character removed with DEL, the
resulting empty search string no longer matches the previous line.
k. If readline reads a history file that begins with `#' (or the value of
the history comment character) and has enabled history timestamps, the
history entries are assumed to be delimited by timestamps. This allows
multi-line history entries.
l. Readline now throws an error if it parses a key binding without a
terminating `:' or whitespace.
m. The default binding for ^W in vi mode now uses word boundaries specified
by Posix (vi-unix-word-rubout is bindable command name).
n. rl_clear_visible_line: new application-callable function; clears all
screen lines occupied by the current visible readline line.
o. rl_tty_set_echoing: application-callable function that controls whether
or not readline thinks it is echoing terminal output.
p. Handle >| and strings of digits preceding and following redirection
specifications as single tokens when tokenizing the line for history
expansion.
q. Fixed a bug with displaying completions when the prefix display length
is greater than the length of the completions to be displayed.
r. The :p history modifier now applies to the entire line, so any expansion
specifying :p causes the line to be printed instead of expanded.
s. New application-callable function: rl_pending_signal(): returns the signal
number of any signal readline has caught but not yet handled.
t. New application-settable variable: rl_persistent_signal_handlers: if set
to a non-zero value, readline will enable the readline-6.2 signal handler
behavior in callback mode: handlers are installed when
rl_callback_handler_install is called and removed removed when a complete
line has been read.
xonsh is a Python-ish, BASHwards-looking shell language and command prompt. The
language is a superset of Python 3.4+ with additional shell primitives. xonsh
(pronounced conch) is meant for the daily use of experts and novices alike.
(and __EXTENSIONS__ for strict STDC). Also needs -lm.
Fix testing to work prior to [stage-]install. No revbump needed.
okay'd by jperkin@
NB there are still some corner cases not working on some SunOS, but
on illumos SunOS 5.11 this actually goes a real long way over stock sh/ksh!
Changelog:
posh (0.12.5) unstable; urgency=medium
* Patch from John Salmon to correct fencepost error in PWD
initialization. closes: #777427.
* Suppress linemarker generation when building signal table, as
gcc 5 gets crazy. closes: #778069.
* Blindly assume that signal handlers return void.
* Switch to dh.
-- Clint Adams <clint@debian.org> Sun, 07 Jun 2015 14:54:36 -0400
pkgsrc-users.
Also added copyright notices and installation of the license to make the
package compilant with it's license.
Changelog:
Changes that improve compatibility w/ the Sixth Edition (V6) UNIX
Thompson shell are marked w/ a `C:' in the details below.
-------------------------------------------------------------------------------
[osh-current] (development):
* Work In Progress ( see http://v6shell.org/src/current/ )
-------------------------------------------------------------------------------
[osh-20160108] (latest):
README:
* Updated supported systems to include FreeBSD 10.2,
Mac OS X 10.11 (El Capitan), NetBSD 7.0, OpenBSD 5.[78],
and Debian 8.2 (jessie).
Makefile:
* Changed `-W' to `-Wextra' (same warning, newer name). From gcc(1) -
This option used to be called -W. The older name is still supported,
but the newer name is more descriptive.
DEDICATIONS:
* Updated the URL for dmr's home page at Bell Labs.
*.h:
* Added a sh6-related comment to the top of the header files
since they are used by sh6 and its external utilities.
examples/dot.oshrc:
* Redirected diagnostics from leaks(1) (Mac OS X) to /dev/null.
-------------------------------------------------------------------------------
[osh-20150115]:
if.c, osh.c, strtoint.[hc], util.c:
* Changed the strtoint() function to convert string into a
long instead of an int, and ensured that numbers which might
be considered to have an octal form (valid or invalid) are
not treated as if they are decimal integers. For example:
`if 0[0-9] -eq [0-9]' and `if [0-9] -eq 0[0-9]' and similar
are always false, resulting in an error.
if.c, util.c:
* Changed how the built-in & external if(1) commands call
the strtoint() function.
err.h, strtoint.c:
* Changed the "not an integer" diagnostic for the strtoint()
function to "bad integer".
err.h, if.c, util.c:
* Changed the "not a digit" diagnostic for the built-in & external
if(1) commands to "bad digit".
err.h:
* Changed the order of the definitions for diagnostics to make finding
the "... expected" ones for if(1) a bit easier.
-------------------------------------------------------------------------------
[osh-20141024]:
README:
* Added OS X 10.10 (Yosemite) to supported systems.
* Added Debian 7.7 (wheezy) to supported systems.
examples/*.osh.login:
* Changed /usr/X11 to /opt/X11 in *PATH.
examples/dot.oshrc:
* Updated the sh6i alias to make it trap and untrap the 1 (HUP),
2 (INT), 3 (QUIT), 13 (PIPE), 14 (ALRM), 15 (TERM), 18 (TSTP),
21 (TTIN), and 22 (TTOU) signals accordingly for better behavior.
-------------------------------------------------------------------------------
[osh-20140820]:
* See CHANGES6 .
-------------------------------------------------------------------------------
[osh-20140410]:
Makefile:
* Changed MOXARCH to OSXCFLAGS & OSXLDFLAGS to play better w/ MacPorts.
Makefile.config:
* Added comment to celebrate 12 years of osh via osh-current.
osh.1:
* Added missing (+) to version in Special commands.
osh.c:
* Enable `.' and `source' special built-in command execution
to succeed when the user invokes the shell as `osh -c string'.
EG:
% osh -c '. file [arg1 ...]' [arg1 ...]
or:
% osh -c 'source file [arg1 ...]' [arg1 ...]
.
-------------------------------------------------------------------------------
[osh-20131109]:
osh.1:
* Changed `LICENSE' to LICENSE to match the other manual pages.
examples/FILEPREP:
* Changed `sigign' invocation to `trap'.
examples/dot.oshrc:
* Added two useful pwd-related aliases: `ocpwd' and `opwd'
* Added a `now' and a `sysinfo' alias.
-------------------------------------------------------------------------------
[osh-20130331]:
*sh.[ch]:
* Removed the deprecated $n and $s parameters.
Now, the user can `set' and `unset' n and s as shell variables.
The following command line is a simple way to replace
all instances of $n w/ $# and $s w/ $? in file:
% <file(rm -f file;sed 's/$n/$#/g;s/$s/$?/g'>file)
.
osh:
* Added code to print diagnostics w/ line numbers when possible.
When reporting error(s), if a diagnostic is to be printed, the
shell gets the line number of the file where the error happened,
adjusts the diagnostic (adding the name of the file and the line
number if the standard input from which the shell reads and
interprets commands lines is seekable), and prints it. EG:
% echo R* ; osh R* ; head -1 R*
README
osh: README: 1: syntax error
Welcome to Osh (V6Shell) - osh-20130331 !
.
* Renamed the `sigign' special built-in command to `trap'
to make osh signal-trapping behavior more sh-like. Granted,
trap is a misnomer since osh only ignores signals for now.
osh.1:
* Removed the documentation for the $n and $s parameters.
* Changed the documentation for `sigign' to `trap' as needed.
examples/*:
* Made stty(1) invocation conditional in .../etc.osh.login .
* Escaped $1 when setting hcount alias in .../dot.oshrc .
-------------------------------------------------------------------------------
[osh-20120604]:
* New file: Makefile.config (included from Makefile)
* New files: strtoint.[ch] (string to integer converter)
* New files: tests/* (regression test suite for osh/sh6)
Makefile:
* Added a "check" target to run the tests w/ osh and sh6.
* Added a "check-newlog" target to generate new test logs
for the osh and sh6 tests.
defs.h:
* Limited maximum PATHMAX definition to 1024.
pexec.c:
* Changed errno to ENAMETOOLONG for each `path too long' error.
osh:
C: Added missing `Command line overflow' diagnostic.
* Added $# (as a synonym for $n) parameter.
* Added $? (as a synonym for $s) parameter.
* Deprecated $n and $s parameters in favor of $# and $?.
$n and $s parameters will be removed after this release.
* Added simple shell variables. This allows the user to `set' and
`unset' shell variables. For compatibility, these variables are
limited to uppercase and lowercase ASCII alpha names that are
one character in length. For example: $A $B $C and $a $b $c
and so forth.
* Changed quoting to allow $ substitution within double (") quotes.
For example: "$$", "$*", "$1", and so forth. This makes parameter
and variable substitution much more flexible.
* Added `.' as a synonym for `source'.
* Enabled PATH search when opening file for `.' and `source'.
* Changed `setenv' built-in command usage and behavior. Now, name
requires value argument. Updated osh.1 manual page accordingly.
if:
* Added new operators to the built-in `if' command for osh
and to the external `if' command for sh6. Updated the if.1
manual page accordingly. The new operators include: <, >,
-eq, -ne, -gt, -ge, -lt, -le
osh.1:
* Flagged $n and $s parameters as deprecated.
* Added `set' and `unset' documentation to the
"Special commands" subsection.
* Added a new "Variable substitution (+)" subsection.
* Documented `.' as a synonym for `source', and added relevant
PATH search documentation.
* Simplified "SECURITY" section a bit.
* Updated "Quoting" subsection to describe double (") quotes handling.
examples/*:
* Made various changes to reflect current and future osh behavior.
-------------------------------------------------------------------------------
[osh-20120102]:
mkconfig:
* Changed _XOPEN_SOURCE definition from 600 to 600L .
err.h:
* Added DEBUG_ALIAS, DEBUG_GLOB, and DEBUG_PROC definitions
(undefined by default) for printf debugging in osh.c and
util.c if/when needed.
osh.c:
* Changed exit status for alias and unalias so that they exit w/ a
false (1) status when there are no aliases to print, set, or unset.
Otherwise, they exit w/ a true (0) status when there is no error.
* Added 'version' as special built-in command.
osh.1:
* Adjusted $v description in "Parameter substitution" subsection.
* Added version description to "Special commands" subsection.
* Added uname(1) to "SEE ALSO" section.
examples/dot.oshrc:
* Replaced the 'version' alias w/ alias 'v1' 'version'
to invoke the 'version' special built-in command.
-------------------------------------------------------------------------------
[osh-20111129-p1]:
examples/dot.oshrc:
* Re-added missing ';s/ \$//' that git ident removed from version alias.
This removes trailing ' $' as shown in example 1 and 2 below:
% : example 1 ; version
osh-20111129 (NetBSD 5.1 amd64) $
% : example 2 ; version
osh-20111129-p1 (NetBSD 5.1 amd64)
-------------------------------------------------------------------------------
[osh-20111129]:
mkconfig, v.c:
* Added useful build system info from `uname -srm'.
examples/dot.*:
* Removed code to replace osh w/ sh6 when invoked as
`osh [-i | -l] sh6'. Use sh6i alias instead.
* Changed sh6i alias for sake of simplicity.
* Removed sh6l alias.
* Changed from using kill(1) to kill current ssh-agent process
to using ssh-agent(1) and its `-k' flag instead.
* Added handy new v and version aliases. For example:
% v ; : Same as doing % echo $v
osh-20111129
% version
osh-20111129 (NetBSD 5.1 amd64)
-------------------------------------------------------------------------------
[osh-20111027]:
* New file: DEDICATIONS (in memory of Dennis M. Ritchie (dmr))
AUTHORS:
* Added reference to DEDICATIONS file.
LICENSE:
* Added two more OpenBSD license references.
mkconfig:
* Fixed a problem w/ the mkconfig script on OpenBSD, where which(1)
used to send a "newgrp: Command not found." diagnostic to standard
output, not standard error. It looks like the noted OpenBSD which(1)
problem has since been fixed though.
osh:
* Fixed a globbing problem caused by an unsigned-integer overflow.
* Added $# (as a synonym for $n) and $* parameters.
* Added a new, command-aliasing feature.
osh.1:
* Added `alias' and `unalias' documentation to the
"Special commands" subsection.
* Added a new "Aliases (+)" subsection.
* Added a new "Metacharacters" subsection.
*.1:
* Changed the visual style of the manual pages, regarding bold, italic,
and `literal' text. The intent was to make for easier reading.
if:
* Added `:' as if(1) special command. It is useful when debugging
scripts and helps when documenting them.
examples/dot.*:
* Documented by example how to turn alias arguments into a no-op.
* Added ssh-agent support. This allows the same ssh-agent process
to be used for shared ssh key(s) across multiple concurrent
login sessions. It also kills the ssh-agent process on
logout when appropriate.
NEWS:
Changes from 5.1.1 to 5.2
-------------------------
The new module zsh/param/private can be loaded to allow the shell
to define parameters that are private to a function scope (i.e. are
not propagated to nested functions called within this function).
The parameter flag ${(P)...} is now more useful when it appears in
a nested expansion. For example,
typeset -A assoc=(one un two deux three trois)
name=assoc
print ${${(P)name}[one]}
now prints "un". In previous versions of the shell the value of the
substitution was fully expanded on return from ${(P)name}, making
associative array subscripting difficult. As a side effect, flags
for formatting appearing in the inner substitution now affect the
substitution of the name (into "assoc" in this case), which is not
normally useful: flags that should apply to the value must be in the
outer substitution.
The GLOB_STAR_SHORT option allows the pattern **/* to be shortened to
just ** if no / follows. so **.c searches recursively for a file whose
name has the suffix ".c".
The effect of the WARN_CREATE_GLOBAL option has been significantly
extended, so expect it to cause additional warning messages about
parameters created globally within function scope.
README:
Incompatibilities between 5.1 and 5.2
-------------------------------------
The behaviour of the parameter flag (P) has changed when it appears
in a nested parameter group, in order to make it more useful in
such cases. A (P) in the outermost parameter group behaves as
before. See NEWS for more.
Existing SHA1 digests verified, all found to be the same on the
machine holding the existing distfiles (morden). Existing SHA1
digests retained for now as an audit trail.
Changelog:
Changes from 5.1 to 5.1.1
-------------------------
5.1.1 is primarily a bug fix release; however, a few minor features were
added.
The ZLE variables YANK_ACTIVE, YANK_START and YANK_END have been added
and are useful for managing highlighting.
The zsh-specific pattern match range tests have been supplemented with
[:INCOMPLETE:] and [:INVALID:] to help detect the state of partially
read multibyte character strings.
their time compiling, and 50% spinning in shell scripts. If you'd rather
spend your power bill on useful gcc cycles though, you might desire to use a
different shell for running build scripts - like pdksh, which is conveniently
available at bootstrap time.
But what if pdksh does this to you?
pdksh -c 'f=`pdksh -c set | wc -l`; f=$((f+1)); while ((f < 100000)); do f=$((f+1)); eval "v_${f}=0"; echo "$f"; done'|tail -1
13106
segmentation fault (core dumped) pdksh -c
Well that's annoying, isn't it.
% echo $(((13106*10+7)/8))
16383
... that's a magical number. Coincidence? Well, no.
tp->nfree = 8*nsize/10; /* table can get 80% full */
This particularly ugly overflow happens because tp->size is a short. When
texpand() does:
p = &ntblp[hash(tblp->name) & (tp->size-1)];
tp->size-1 will, given enough variables (80% of 2^15), type coerce into a
sign-extended 32-bit value of:
info registers $ecx
ecx 0xffff7fff -32769
That hash() function does more or less what you guess, it's a 32 bit unsigned
value. The chances of the final pointer pointing inside the valid allocated
block of memory are very low indeed.
The least-change solution is to change tp->size to a 32 bit value. I've left
it signed because that matches, for example, the size parameter passed to
texpand(). But really this code would be more correct with a liberal
sprinkling of "unsigned", and perhaps a bit of "size_t".
This change allows ffmpeg's configure script, as interpreted by pdksh, to
produce more usable output than a core file.
Bump PKGREVISION for code change.
OmniOS is an Illumos distro which falls under the SunOS variant for us.
Include mk/bsd.prefs.mk before the shells/tcsh/Makefile so the
OS_VARIANT variable is available for testing.
Reviewed by agc@ wiz@
pkgsrc changes:
removed patch:
patch-Completion_Unix_Command__du
patch-Completion_Unix_Command__sort
patch-Src_builtin.c
patch-Test_B03print.ztst
quote from zsh-5.1/ChangeLog:
* 36120: Completion/Unix/Command/_sort: Fix syntax error
* 35467: Completion/Unix/Command/_du: complete files for non-GNU du
* 35412: Src/builtin.c, Test/B03print.ztst: fix for - flag
when formating strings with printf that was broken in 34841
separate a patch ( $ mv patches/patch-ac files/patch-ac )
zsh-5.1/NEWS:
Changes from 5.0.8 to 5.1
-------------------------
The builtins declare, export, local, readonly and typeset
now have corresponding reserved words. When used in
this form, the builtin syntax is extended so that assignments
following the reserved word are treated similarly to
assignments that appear at the start of the command line.
For example,
local scalar=`echo one word` array=(several words)
creates a local "scalar" containing the text "one word"
and an array "array" containing the words "several"
"words".
- The print builtin has new options -x and -X to expand tabs.
- Several new command completions and numerous updates to others.
- Options to "fc" to segregate internal and shared history.
- All emulations including "sh" use multibyte by default; several
repairs to multibyte handling.
- ZLE supports "bracketed paste" mode to avoid interpreting pasted
newlines as accept-line. Pastes can be highlighted for visibility
and to make it more obvious whether accept-line has occurred.
- Improved (though still not perfect) POSIX compatibility for getopts
builtin when POSIX_BUILTINS is set.
- New setopt APPEND_CREATE for POSIX-compatible NO_CLOBBER behavior.
- Completion of date values now displays in a calendar format when
the complist module is available. Controllable by zstyle.
- New parameter UNDO_LIMIT_NO for more control over ZLE undo repeat.
- Several repairs/improvements to the contributed narrow-to-region
ZLE function.
- Many changes to child-process and signal handling to eliminate race
conditions and avoid deadlocks on descriptor and memory management.
- New builtin sysopen in zsh/system module for detailed control of
file descriptor modes.
zsh-5.1/README:
Incompatibilites between 5.0.8 and 5.1
--------------------------------------
The default behaviour when text is pasted into an X Windows terminal has
changed significantly (unless you are using a very old terminal emulator
that doesn't support this mode). Now, the new "bracketed paste mode"
treats all the pasted text as literal characters. This means, in
particular, that a newline is simply inserted as a visible newline; you
need to hit Return on the keyboard to execute the pasted text in one go.
See the description of zle_bracketed_paste in the zshparams manual for
more. "unset zle_bracketed_paste" restores the previous behaviour.
As noted in NEWS, the builtins declare, export, float, integer, local,
readonly and typeset now have corresponding reserved words that provide
true assignment semantics instead of an approximation by means of normal
command line arguments. It is hoped that this additional consistency
provides a more natural interface. However, compatbility with older
versions of zsh can be obtained by turning off the reserved word
interface, exposing the builtin interface:
disable -r declare export float integer local readonly typeset
This is also necessary in the unusual eventuality that the builtins are
to be overridden by shell functions, since reserved words take
precedence over functions.
- non-GNU du wouldn't complete filenames (taken from upstream)
- sort completion threw a syntax error on NetBSD (reported upstream)
Bump PKGREVISION to 1.
[tg] OpenBSD sync: handle integer base out of band like ksh93 does
[tg] Protect standard code (predefined aliases, internal code, aliases and functions in dot.mkshrc) from being overridden by aliases and, in some cases, shell functions (i.e. permit overriding but ignore it)
[tg] Implement GNU bash's enable for dot.mkshrc using magic aliases to redirect the builtins to external utilities; this differs from GNU bash in that enable takes precedence over functions
[tg] Move unaliasing an identifier when defining a POSIX-style function with the same name into lksh, as compatibility kludge
[tg] Korn shell style functions now have locally scoped shell options
[tg, iSKUNK] Change some ASCII-isms to be EBCDIC-aware or pluggable
[tg, Ypnose] Mention lksh build instructions on manpage and website
[tg] Overhaul signal handling; support new POSIX NSIG_MAX, add sysconf(_SC_NSIG) as a later TODO item
[tg] Fix signal bounds (1 <= signum < NSIG)
[tg] Improve manual pages, especially wrt. standards compliance
[tg, iSKUNK] Initial EBCDIC work for dot.mkshrc
[tg, iSKUNK] Add list of z/OS signals to Build.sh
[tg] Work around the sh(1) backslash-newline problem by moving the code triggering it out of *.opt and into the consumers
[colona] Bind another well-known ANSI Del key in the Emacs mode
[tg] Fix ${foo/*/x} pattern checks, spotted by izabera
[carstenh] Fix error output of cd function in dot.mkshrc
[tg] read partial returns in -N and timeout cases
[tg] Fix $LINENO inside PS1; spotted by carstenh
[tg] Ensure correct padding of at least 2 spaces in print_columns
[tg] Note issues with nested complex parameter expansions and follow-up bugfixes to expect
[OpenBSD] Some language fixes in documentation; comments
[tg] Reimplement multi-line command history (Debian #783978) + fixes
[Martijn Dekker] Fix command -v for "shell reserved words"
[tg] In dot.mkshrc make use of latest feature: local options
[tg] Fix ""$@ to emit a word
[tg] Change cat(1) hack to look first and not ignore builtin
[KO Myung-Hun] Begin porting mksh to OS/2
[komh, tg] Some generic minor bugfixes from OS/2 porting
[tg] Document mknod(8) isn’t normally part of mksh(1)
[tg] Quote arguments to : in build/test scripts as well
[tg] Add cat(1) hack for printf(1)-as-builtin: always prefer external
[tg] Explicitly use binary mode for any and all file I/O in stock mksh
[Ilya Zakharevich] Use termio, not termios(4), on OS/2
[tg] Set edchars to sane BSD defaults if any are NUL
[tg] Implement support for PC scancodes in Vi and Emacs editing mode
[komh] OS/2 uses ; as PATH separator plus support drive letters
{perl>=5.16.6,p5-ExtUtils-ParseXS>=3.15}:../../devel/p5-ExtUtils-ParseXS
since pkgsrc enforces the newest perl version anyway, so they
should always pick perl, but sometimes (pkg_add) don't due to the
design of the {,} syntax.
No effective change for the above reason.
Ok joerg
Changelog:
2014-09-26 Herbert Xu <herbert@gondor.apana.org.au>
* Small optimisation of command -pv change.
* Set command -p path to /usr/sbin:/usr/bin:/sbin:/bin.
* Change "characters" for printf precision to "bytes".
* Release 0.5.8.
2014-09-26 Jonathan Nieder <jrnieder@gmail.com>
* Clarify "trap '' signals" syntax in manual page.
2014-09-26 Adam Buchbinder <adam.buchbinder@gmail.com>
* Clarify that 0 and EXIT are both acceptable for exit traps.
2014-09-26 Harald van Dijk <harald@gigawatt.nl>
* command: allow combining -p with -v.
* getjob: Fix off-by-one error for multiple of four job numbers
2013-08-23 Herbert Xu <herbert@gondor.apana.org.au>
* Propagate EXP_QPAT in subevalvar.
* Initialise OPTIND after importing environment.
* Fixed argument parsing crash in test.
2013-03-12 Peter Rosin <peda@lysator.liu.se>
* Add newline when tracing in poplocalvars.
2013-01-10 Jérémie Courrèges-Anglas <jca+dash@wxcvbn.org>
* Markup fixes in manual for mandoc 1.12.1.
2012-12-03 Harald van Dijk <harald@gigawatt.nl>
* Use PRIdMAX instead of %j in printf.
2012-07-20 Kimo Rosenbaum <kimor79@yahoo.com>
* Fix typo for wait in manual.
2012-06-09 Christoph Mathys <eraserix@gmail.com>
* Add support for ulimit -r.
2012-03-11 Jim Meyering <meyering@redhat.com>
* Avoid overflow for very long variable name.
$ perl -le 'print "v"x(2**31+1) ."=1"' | dash
2012-02-25 Herbert Xu <herbert@gondor.apana.org.au>
* Sanitise environment variable names on entry.
2011-08-17 David S. Miller <davem@davemloft.net>
* Allow building without LINEO support.
* Add top-level autogen.sh.
2011-07-26 Harald van Dijk <harald@gigawatt.nl>
* Avoid imaxdiv when only one of the results is wanted.
2010-07-09 maximilian attems <max@stro.at>
* Fix klibc DEBUG compilation.
2011-07-09 Herbert Xu <herbert@gondor.apana.org.au>
* Merge SKIPFUNC/SKIPFILE and only clear SKIPFUNC when leaving dotcmd.
* Include bugfix,
ac26fafa03/
Changelog:
Changes from 5.0.7 to 5.0.8
---------------------------
- Global aliases can be created for syntactic tokens such as command
separators (";", "&", "|", "&&", "||"), redirection operators, etc.
Use at your own risk! The POSIX_ALIASES option is interpreted more
strictly to prevent expansion of these and other alias names containing
quotes, glob metacharacters, parameter references, etc.
- There have been various further improvements to builtin handling
with the POSIX_BUILTINS option (off by default) for compatibility with
the POSIX standard.
- 'whence -v' is now more informative, and 'whence -S' shows you
how a full chain of symbolic links resolves to a command.
- The 'p' parameter flag now allows an argument to be specified
as a reference to a variable, e.g. ${(ps.$sep.)foo} to split $foo
on a string given by $sep.
- The option FORCE_FLOAT now forces variables, not just constants,
to floating point in arithmetic expressions.
- The type of an assignment in arithmetic expressions, e.g. the
type seen by the variable res in $(( res = a = b )), is now
more logical and C-like.
- The default binding of 'u' in vi command mode has changed to undo
multiple changes when invoked repeatedly. '^R' is now bound to redo
changes. To revert to toggling of the last edit use:
bindkey -a u vi-undo-change
- Compatibility with Vim has been improved for vi editing mode. Most
notably, Vim style text objects are supported and the region can be
manipulated with vi commands in the same manner as Vim's visual mode.
- Elements of the watch variable may now be patterns.
- The logic for retrying history locking has been improved.
- Some rationalisations have been made to the zsh/db/gdbm module that
should make it more useful and predictable in operation.
Upstream changes:
R50f is a required security and bugfix release:
[tg] Add a patch marker for vendor patch versioning to mksh.1
[tg] SECURITY: make unset HISTFILE actually work
[tg] Document some more issues with the current history code
[tg] Remove some unused code
[tg] RCSID-only sync with OpenBSD, for bogus and irrelevant changes
[tg] Also disable field splitting for alias 'local=\typeset'
[tg] Fix read -n-1 to not be identical to read -N-1
[tg] Several fixes and improvements to lksh(1) and mksh(1) manpages
[tg] More code (int size_t), comment and testsuite fixes
[tg] Make dot.mkshrc more robust (LP#1441853)
[tg] Fix issues with IFS='\' read, found by edualbus
[enh, tg] Fix integer overflows related to file descriptor parsing, found by Pawel Wylecial (LP#1440685); reduce memory usage for I/O redirs
[tg] Document in the manpage how to set ±U according to the current locale settings via LANG/LC_* parameters (cf. Debian #782225)
[igli, tg] Some code cleanup and restructuring
[tg, oksh] Handle number parsing and storing more carefully
R50e is a required bugfix release:
[tg] Add more tests detailing behaviour difference from GNU bash
[tg] Introduce a memory leak for x=<< fixing use of freed memory instead, bug tracked as LP#1380389 still live
[tg] Add x+=<< parallel to x=<<
[tg, ormaaj, jilles] POSIX "command" loses builtin special-ness
[tg] Fix LP#1381965 and LP#1381993 (more field splitting)
[jilles] Update location of FreeBSD testsuite for test(1)
[Martin Natano] Remove dead NULL elements from Emacs keybindings
[tg, Stéphane Chazelas, Geoff Clare] Change several testcases for $*/$@ expansion with/without quotes to expected-fail, with even more to come ☹
[tg] Fix miscalculating required memory for encoding the double-quoted parts of a here document or here string delimiter, leading to a buffer overflow; discovered by zacts from IRC
[RT] Rename a function conflicting with a MacRelix system header
[tg] Use size_t (and ssize_t) consistently, stop using ptrdiff_t; fixes some arithmetics and S/390 bugs
[tg] Remove old workarounds for Clang 3.2 scan-build
[tg] Remove all Clang/Coverity assertions, making room for new checks
[tg] Fix NSIG generation on Debian sid gcc-snapshot
[tg] Make a testcase not fail in a corner case
[tg] Fix issues detected by GCC’s new sanitisers: data type of a value to be shifted constantly must be unsigned (what not, in C…); shebang check array accesses are always unsigned char
[tg] Be even more explicit wrt. POSIX in the manpage
[tg] Fix shebang / file magic decoding
[tg] More int → bool conversion
[tg] Let Build.sh be run by GNU bash 1.12.1 (Slackware 1.01)
[Stéphane Chazelas, tg] Fix here string parsing issue
[tg] Point out more future changes in the manpage
[tg] Call setgid(2), setegid(2), setuid(2) before seteuid(2)
[tg] Fix spurious empty line after ENOENT “whence -v”, found by Ypnose
[tg] Optimise dot.mkshrc and modernise it a bit
[tg] Use MAXPATHLEN from <sys/param.h> for PATH_MAX fallback
[tg] Some code cleanup and warnings fixes
[tg] Add options -a argv0 and -c to exec
[jsg] Prevent use-after-free when hitting multiple errors unwinding
[tg] Fix use of $* and $@ in scalar context: within [[ … ]] and after case (spotted by Stéphane Chazelas) and in here documents (spotted by tg@); fix here document expansion
[tg] Unbreak when $@ shares double quotes with others
[tg] Fix set -x in PS4 expansion infinite loop
---------------- (from debian/changelog)
posh (0.12.4) unstable; urgency=medium
* Correct misspelling of "--". closes: #774004.
* Patch from Chris Lamb to make the build reproducible.
closes: #777395.
* Patch from John Salmon to use memmove instead of memcpy in
debunk(). closes: #777493.
-- Clint Adams <clint@debian.org> Sun, 26 Apr 2015 14:20:19 -0400