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
Changelog:
* Written in C++ now.
* Fix security issues
CVE-2014-2914
CVE-2014-2906 and CVE-2014-3856
CVE-2014-2905
CVE-2014-3219
* Many bugfixes.
* Many new features.
See http://fishshell.com/release_notes.html .
autojump is a faster way to navigate your filesystem. It works by
maintaining a database of the directories you use the most from
the command line.
Directories must be visited first before they can be jumped to.
git-sh is a customized bash shell suitable for git work.
The git-sh command starts an interactive bash shell tweaked for
heavy git interaction:
* All git commands available at top-level (checkout master = git
checkout master)
* All git aliases defined in the [alias] section of ~/.gitconfig
available at top-level.
* Shawn O. Pearce's excellent bash completion strapped onto all
core commands and git aliases.
* Custom prompt with current branch, repository, and work tree
dirty indicator.
* Customizable via /etc/gitshrc and ~/.gitshrc config files; for
creating aliases, changing the prompt, etc.
* Runs on top of normal bash (~/.bashrc) and readline (~/.inputrc)
configurations.
already in /bin. Otherwise, building and installing it naively clobbers
the native tcsh, which isn't what anyone wants.
I believe these platforms to be: NetBSD, OpenBSD, Solaris -- if anyone
can confirm that others (especially old ones I can't readily check)
don't have a native tcsh, please add.
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=104260
---------------------------
The MASTER_SITES for shells/mudsh is invalid. The email
address of the submitter of the port is no longer valid.
The app itself is a single perl script with no author in it.
---------------------------
Thanks wiz@ for review.
5.0.7
This is version 5.0.7 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.6.
Note in particular there is a security fix to disallow evaluation
of the initial values of integer variables imported from the
environment (they are instead treated as literal numbers). That
could allow local privilege escalation, under some specific and
atypical conditions where zsh is being invoked in privilege elevation
contexts when the environment has not been properly sanitized, such
as when zsh is invoked by sudo on systems where "env_reset" has
been disabled.
5.0.6
This is version 5.0.6 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.5.
R50d is a required bugfix release:
- [Goodbox] Fix NULL pointer dereference on “unset x; nameref x”
- [tg] Fix severe regression in field splitting (LP#1378208)
- [tg] Add a warning about not using tainted user input (including from
the environ(7)ment) in arithmetics, until Stéphane writes it up nicely
R50c is a security fix release:
- [tg] Know more rare signals when generating sys_signame[] replacement
- [tg] OpenBSD sync (mostly RCSID only)
- [tg] Document HISTSIZE limit; found by luigi_345 on IRC
- [zacts] Fix link to Debian .mkshrc
- [tg] Cease exporting $RANDOM (Debian #760857)
- [tg] Fix C99 compatibility
- [tg] Work around klibc bug causing a coredump (Debian #763842)
- [tg] Use issetugid(2) as additional check if we are FPRIVILEGED
- [tg] SECURITY: do not permit += from environment
- [tg] Fix more field splitting bugs reported by Stephane Chazelas and
mikeserv; document current status wrt. ambiguous ones as testcases too
Fixes CVE-2014-6278:
A combination of nested command substitutions and function importing
from the environment can cause bash to execute code appearing in
the environment variable value following the function definition.
Changelog:
R50b is a recommended bugfix release:
* [Ypnose] Fix operator description in the manpage
* [tg] Change all mention of “eglibc” to “glibc”, it is merged back
* [Colona] Fix rare infinite loop with invalid UTF-8 in the edit buffer
* [tg] Make more clear when a shell is interactive in the manpage
* [tg] Document that % is a symmetric remainder operation, and how to
get a mathematical modulus from it, in the manpage
* [tg, Christopher Ferris, Elliott Hughes] Make the cat(1) builtin also
interruptible in the write loop, not just in the read loop, and avoid
it getting SIGPIPE in the smores function in dot.mkshrc by terminating
cat upon user quit
* [tg] Make some comments match the code, after jaredy from obsd changed
IFS split handling
* [tg] Fix some IFS-related mistakes in the manual page
* [tg] Document another issue as known-to-fail test IFS-subst-3
* [tg] Improve check.pl output in some cases
* [tg, Jb_boin] Relax overzealous nameref RHS checks
R50 is a recommended bugfix release:
* [tg] Fix initial IFS whitespace not being ignored when expanding
* [tg] MKSH_BINSHREDUCED no longer mistakenly enables brace expansion
* [tg] Explain more clearly Vi input mode limitations in the manpage
* [tg] Improve error reporting of the check.pl script (which needs a
maintainer since I don’t speak any perl(1), really), for lewellyn
* [tg] Use $TMPDIR in test.sh for scratch space
* [tg, Polynomial-C] Check that the scratch space is not mounted noexec
* [pekster, jilles, tg] Use termcap(5) names, not terminfo(5) names, in
tput(1) examples, for improved portability (e.g. to MidnightBSD)
* [tg] Avoid C99 Undefined Behaviour in mirtoconf LFS test (inspired by
Debian #742780)
* [tg] Fix ${!foo} for when foo is unset
* [tg] Improve nameref error checking (LP#1277691)
* [tg] Fix readonly bypass found by Bert Münnich
* [Ryan Schmidt] Improved system reporting for Mac OS X
* [nDuff] Explain better [[ extglob handling in the manpage
* [tg] Remove arr=([index]=value) syntax due to regressions
* [tg] IFS-split arithmetic expansions as per POSIX 201x
* [OpenBSD] Add more detailed Authors section to manpage
* [tg] Fix set ±p issue for good: drop privs unless requested
* [tg] Improve signal handling and use a more canonical probing order
* [tg] Fix return values $? and ${PIPESTATUS[*]} interaction with set -o
pipefail and COMSUBs
* [enh] Detect ENOEXEC ELF files and use a less confusing error message
* [tg] Update to Unicode 7.0.0
* [tg] Shut up valgrind in the $RANDOM code
* [tg] Use -fstack-protector-strong in favour of -fstack-protector-all
* [tg] Fix access-after-free crash spotted by Enjolras via IRC
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
This is a terse description of the new features added to bash-4.3 since
the release of bash-4.2. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. The `helptopic' completion action now maps to all the help topics, not just
the shell builtins.
b. The `help' builtin no longer does prefix substring matching first, so
`help read' does not match `readonly', but will do it if exact string
matching fails.
c. The shell can be compiled to not display a message about processes that
terminate due to SIGTERM.
d. Non-interactive shells now react to the setting of checkwinsize and set
LINES and COLUMNS after a foreground job exits.
e. There is a new shell option, `globasciiranges', which, when set to on,
forces globbing range comparisons to use character ordering as if they
were run in the C locale.
f. There is a new shell option, `direxpand', which makes filename completion
expand variables in directory names in the way bash-4.1 did.
g. In Posix mode, the `command' builtin does not change whether or not a
builtin it shadows is treated as an assignment builtin.
h. The `return' and `exit' builtins accept negative exit status arguments.
i. The word completion code checks whether or not a filename containing a
shell variable expands to a directory name and appends `/' to the word
as appropriate. The same code expands shell variables in command names
when performing command completion.
j. In Posix mode, it is now an error to attempt to define a shell function
with the same name as a Posix special builtin.
k. When compiled for strict Posix conformance, history expansion is disabled
by default.
l. The history expansion character (!) does not cause history expansion when
followed by the closing quote in a double-quoted string.
m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
option to inhibit quoting of the completions.
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
p. The `read' builtin now skips NUL bytes in the input.
q. There is a new `bind -X' option to print all key sequences bound to Unix
commands.
r. When in Posix mode, `read' is interruptible by a trapped signal. After
running the trap handler, read returns 128+signal and throws away any
partially-read input.
s. The command completion code skips whitespace and assignment statements
before looking for the command name word to be completed.
t. The build process has a new mechanism for constructing separate help files
that better reflects the current set of compilation options.
u. The -nt and -ot options to test now work with files with nanosecond
timestamp resolution.
v. The shell saves the command history in any shell for which history is
enabled and HISTFILE is set, not just interactive shells.
w. The shell has `nameref' variables and new -n(/+n) options to declare and
unset to use them, and a `test -R' option to test for them.
x. The shell now allows assigning, referencing, and unsetting elements of
indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
count back from the last element of the array.
y. The {x}<word redirection feature now allows words like {array[ind]} and
can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
z. There is a new CHILD_MAX special shell variable; its value controls the
number of exited child statues the shell remembers.
aa. There is a new configuration option (--enable-direxpand-default) that
causes the `direxpand' shell option to be enabled by default.
bb. Bash does not do anything special to ensure that the file descriptor
assigned to X in {x}<foo remains open after the block containing it
completes.
cc. The `wait' builtin has a new `-n' option to wait for the next child to
change status.
dd. The `printf' %(...)T format specifier now uses the current time if no
argument is supplied.
ee. There is a new variable, BASH_COMPAT, that controls the current shell
compatibility level.
ff. The `popd' builtin now treats additional arguments as errors.
gg. The brace expansion code now treats a failed sequence expansion as a
simple string and will continue to expand brace terms in the remainder
of the word.
hh. Shells started to run process substitutions now run any trap set on EXIT.
ii. The fc builtin now interprets -0 as the current command line.
jj. Completing directory names containing shell variables now adds a trailing
slash if the expanded result is a directory.
kk. `cd' has a new `-@' option to browse a file's extended attributes on
systems that support O_XATTR.
ll. The test/[/[[ `-v variable' binary operator now understands array
references.
2. New Features in Readline
a. Readline is now more responsive to SIGHUP and other fatal signals when
reading input from the terminal or performing word completion but no
longer attempts to run any not-allowable functions from a signal handler
context.
b. There are new bindable commands to search the history for the string of
characters between the beginning of the line and the point
(history-substring-search-forward, history-substring-search-backward)
c. Readline allows quoted strings as the values of variables when setting
them with `set'. As a side effect, trailing spaces and tabs are ignored
when setting a string variable's value.
d. The history library creates a backup of the history file when writing it
and restores the backup on a write error.
e. New application-settable variable: rl_filename_stat_hook: a function called
with a filename before using it in a call to stat(2). Bash uses it to
expand shell variables so things like $HOME/Downloads have a slash
appended.
f. New bindable function `print-last-kbd-macro', prints the most-recently-
defined keyboard macro in a reusable format.
g. New user-settable variable `colored-stats', enables use of colored text
to denote file types when displaying possible completions (colored analog
of visible-stats).
h. New user-settable variable `keyseq-timout', acts as an inter-character
timeout when reading input or incremental search strings.
i. New application-callable function: rl_clear_history. Clears the history list
and frees all readline-associated private data.
j. New user-settable variable, show-mode-in-prompt, adds a characters to the
beginning of the prompt indicating the current editing mode.
k. New application-settable variable: rl_input_available_hook; function to be
called when readline detects there is data available on its input file
descriptor.
l. Readline calls an application-set event hook (rl_event_hook) after it gets
a signal while reading input (read returns -1/EINTR but readline does not
handle the signal immediately) to allow the application to handle or
otherwise note it.
m. If the user-settable variable `history-size' is set to a value less than
0, the history list size is unlimited.
n. New application-settable variable: rl_signal_event_hook; function that is
called when readline is reading terminal input and read(2) is interrupted
by a signal. Currently not called for SIGHUP or SIGTERM.
o. rl_change_environment: new application-settable variable that controls
whether or not Readline modifies the environment (currently readline
modifies only LINES and COLUMNS).
R49 is a recommended bugfix release:
- [tg] dot.mkshrc: fix two issues with the cd wrapper
- [tg] Unbreak set +p (wider issue still to be addressed)
- [Steffen Daode Nurpmeso] Use WCONTINUED with waitpid(2)
- [millert] Add proper suspend builtin handling tty(4) and setpgrp(2)
- [tg] Sanitise and slightly optimise control character handling
- [tg] Add O_BINARY to all open(2) calls for OS/2 kLIBC support
- [tg] Generate option strings for shell, set, ulimit at compile time
- [Steffen Daode Nurpmeso] Drop ISTRIP termios(4) mode
- [tg] Mention negative history numbers, octals in the manpage
- [tg] Make check.pl work with Perl < 5.6.1 again
- [tg] Detect getsid(2) and skip the oksh suspend builtin otherwise
- [tg] Document that set -o noclobber is unsafe for tempfiles
- [tg] Update to Unicode 6.3.0
- [RT] Restore some portability
- [tg] Fix parsing positional argument variable names
- [tg] Sprinkle a few __attribute__((__pure__)); fix warnings
- [tg] Fix build on OSX: always use our wcwidth code; only use our strlcpy(3)
code if the OE doesn’t provide one (prompted by jonthn on IRC)
- [tg] Optimise sh -c to exec even in MKSH_SMALL
- [tg] Use new BAFH for hashing
* Fix build on Debian GNU/kFreeBSD 7.3
* Update MASTER_SITES
Changelog:
This is version 5.0.5 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.2.
5.0.3 and 5.0.4 were short-lived releases with most of the features of
5.0.5 that were replaced owing to significant bugs.
Incompatibilities between 5.0.2 and 5.0.5
-----------------------------------------
The "zshaddhistory" hook mechanism documented in the zshmisc manual page
has been upgraded so that a hook returning status 2 causes a history
line to be saved on the internal history list but not written to the
history file. Previously any non-zero status return would cause
the line not to be saved on the history at all. It is recommended
to use status 1 for this (indeed most shell users would naturally do
so).
Upstream changes:
-----------------
=== v0.9.16 14/08/2013 ===
* Added support to login script. Thank you Laurent Debacker for the patch.
* Fixed auto-complete failing with "-"
* Fixed bug where forbidden commands still execute if strict=1
* Fixed auto-completion complete of forbidden paths
* Fixed wrong parsing &, | or ; characters
* Added urandom function definition for python 2.3 compat
* Corrected env variable expansion
* Add support for cd command in aliases
* Split lshellmodule in multiple files under the lshell directory
* Fixed check_secure function to ignore quoted text
* Fixed multiple spaces escaping forbidden filtering
* Fixed log file permissions 644 -> 600
* Added possibility to override config file option via command-line
* Enabled job control when executing command
* Code cleanup
=== v0.9.15.2 08/05/2012 ===
* Corrected mismatch in aliaskey variable.
Changes:
R48b is a minor bugfix update:
[tg] Fix display issue with multi-line prompts and SIGWINCH
R48 is a small but important bugfix update:
[tg] dot.mkshrc: unbreak hd(1) function in UTF-8 mode
[Jens Staal, tg] Improve buildability on Plan 9 and support kencc
[tg] Clean up and improve build process and testsuite
[Michael Langguth] Add multi-layer ICO file from mksh/Win32
[tg, Steffen Daode Nurpmeso] Fix interactive shell exiting on ^C or
syntax error when the EXIT pseudo-signal trap was set (to anything)
[tg, Daode] Display longer command excerpts in job control
[tg] Rewrite Emacs mode display window sliding calculation code
[tg] dot.mkshrc: “doch” now keeps standard input
[tg] Reduce memory usage and improve comments and documentation
R47 is a bugfix everyone must upgrade to:
[tg] Do not accidentally remove lksh.1 for in-srcdir builds
[tg] Fix post-build non-‘-Q’ output for lksh
[tg] Silence some configure-time warnings for clang-3.2 and GCC
[tg] Prevent recursion loops for namerefs; found by ormaaj
[tg] Replace wcwidth code by mine based on Unicode 6.2.0
[tg, Alexander Polakov] Fix quoting in word part of ${var+word} etc.
when the expression is in a quoted brace or a here document
[tg] Fix some compiler warnings; improve sig{,handler}_t detection
[tg] Keep SIGCHLD blocked in some more semi-critical code paths
[tg] Fix uninitialised variable causing random nōn-numerical input to be
accepted and acted upon in the select built-in command
[tg] No longer chown(2)/chmod(2) the -T tty(4) argument
[tg] Don’t fork(2) if the -T tty(4) argument begins with ‘!’; eliminates
the need for things like oneit_line/cttyhack/etc. on Linux
[jca] Fix “for var in; do” to not be interpreted as “for var; do”
[tg] Use %zu for printing size_t (ipv %lu with casting around)
[tg] use ${SIZE-size} for lewellyn’s cross
[fgsch, espie, millert, tg] Write more testcases
[millert] POSIX specifies that for && and || lists, only the exit status
of the last command matters for “set -e”; fix and document
[millert] check.pl: Add -T flag to set the tmpdir; use mkstemp(3) and
mkdtemp(3) instead of $$ in /tmp for tempfiles
[jca] Make $(<nonexistent) behave like $(cat nonexistent)
[tg] Let shf_open return an errno; display why file wasn’t read
[tg] Finally decide on regression-39 desired outcome (sync with AT&T
ksh93 and GNU bash --posix as well as mksh behaviour)
[tg] Fix post{in,de}crement in not evaluated side of e.g. ternary operator (LP#1187729)
[tg] Fix “set -x” problems; add “set +o inherit-xtrace” (LP#1179287)
[tg] Simplify some code
[tg] Fix segfault related to mixing funsub/valsub and comsub
R46 delivers these changes:
[tg] dot.mkshrc: prevent lksh from running it
[tg] Add the lksh manual page to the mksh distribution
[tg] Make both lksh and mksh interpret numbers with a leading digit zero
(‘0’) as octal precisely iff “set -o posix” is active
[tg] Point out the octal digit and the integer arithmetic differences
from POSuX verbosely in the manual pages (point people who need octals
to “set -o posix” and who need longs to lksh) and elaborate on the
horrors of ISO C Undefined Behaviour which is allowed to delete all your
data
[tg] Unbreak “set -o” (list flags) in lksh on LP64 machines
[tg] Implement Emacs mode PgUp as Vi insert mode Cur↑ for Yofuh
[tg] Allow setting both “set -o sh” and “set -o posix”, if done in the
same command; shuffle around compatibility levels (mksh/lksh, with -o
sh, with -o posix) again; permit a /bin/sh to set either or both
[tg] Sync lksh manual page with the exact code ifdefs
[tg] Change more use of signed integer to use unsigned instead
[tg] Implement “set -o pipefail” like AT&T ksh93 and GNU bash do
[tg] dot.mkshrc: provide hd(1) in Pure mksh™ for fallback
[tg] Implement VALSUBs (value substitutions): ${|REPLY=foo;}
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
- Bump version 0.3.14 to 0.12.
- Add LICENSE= as gnu-gpl-v2.
patches/patch-a[ab]
- comment added from old cvs log
Following lines are recent changes from ChangeLog. For full
ChangeLog, see:
https://launchpad.net/debian/+source/posh/+changelog
--------
posh (0.12)
* Fix shell flag handling, broken since 0.9.1. closes: #707778.
posh (0.10.2)
* Fix "nostrip" build. closes: #674703.
* Fix Italian Language-Team email address. closes: #660020.
* Don't segfault when bi_errorf(NULL) is called. closes: #674701.
* Bump to Standards-Version 3.9.3.
posh (0.10) unstable; urgency=low
* Do not treat a bad signal passed to the trap builtin as a fatal/syntax error.
posh (0.8.5) unstable; urgency=low
* Apply bugfix from mksh overhauling the code for substitutions
such as ${foo:-bar} and "${foo+bar}" for standards compliance
and pull the test cases that go with it.
* Bump to Standards-Version 3.8.4.
* Switch to 3.0 (native) source format.
---------
to fix segmentation fault just after invocation, at least on
NetBSD/amd64 6.1, which is reported as PR pkg/47917.
The problem was also reported by gcc (4.5.3) as:
main.c: In function 'main':
main.c:206:15: warning: assignment makes pointer from integer without a cast
At following location:
203 char *simplified;
....
206 simplified = canonicalize_file_name(current_wd);
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
Should patch the configure script to respect the environment setting
of CC_FOR_GETHOST (or CC_FOR_BUILD or something), but this is less
work and will do for now.
Patch it up to use compile-tests rather than run-tests in autoconf
for many of its tests (OS-independently). Teach it about the few
remaining properties for NetBSD in particular.
ok agc
* [tg] Make “set -x” print the commands run in escaped form
* [tg] PS4 in dot.mkshrc is now timestamped
* [tg] The &> GNU bash I/O redir is no longer parsed in -o posix, -o sh modes,
lksh (breaks valid scripts)
* [tg] Implement ${ …;} more efficiently (deleted-open files)
* [tg] For shf, %#s (if you can get it past GCC’s printf format attribute)
calls print_value_quoted, ignoring field width and precision
* [tg] Catch “typeset =” (regression) with better error message
* [tg, Tonnerre Lombard] add “doch” alias to dot.mkshrc which just repeats the
last input line with sudo(8)
* [tg] Use unsigned integers for all calculations, to avoid ISO C “Undefined
Behaviour” (and implementation-defined behaviour) throughout (most of) the
code; emulate signed integer arithmetics using unsigned; not-lksh only
* [tg] Emulate signed modulo naïvely, for correct sign of the result
* [tg] Add <<< and >>> for ROL and ROR (rotate left and right, respectively)
operations, <<<= and >>> assignments; bitwise AND the RHS of a shift/rotate
op with 31 (not for lksh)
* [tg] Remove a warning by working around a workaround found in dietlibc which
works around a bug in broken software such as GNU tar (really!)
* [tg] Correct and simplify list and categorisation of built-in commands as
POSIX special and “everything else” plus a flag to keep assignments
* [tg] Handle ((foo)) as “let]” internally to avoid a conflict with
user-defined functions called let (LP#1156707)
* [tg] Clean up the code
separately distributed catman page.
R44 contains these bugfixes:
* [tg] "$@" always generates words; bug spotted by engla in IRC
* [tg] Optimise print_columns display to use the screen space better
Please upgrade to mksh R43 (or stick on R41c) because of#
* [tg] Do not permit $'#' and $"#" in anything that looks like a
string, as old scripts, like ncurses', depend on behaviour not
guaranteed by POSIX regarding unescaped dollar signs there
* [dalias] Make detection of function prototypes more reliable
* [tg] Quote setenv arguments for eval properly in dot.mkshrc
* [tg] Validate parameter names for typeset, export, etc.
* [tg] Provide a classic BSD echo builtin for /bin/sh on MidnightBSD
* [tg] When generating Makefrag.inc put list of check_categories
inside
* [tg] Actually test all [197]echo(1) flavours and MidnightBSD
/bin/sh hacks
mksh R42b and R41c fix regressions:
* [tg] Correctly initialise memory (Debian #700604)
* [tg] LP#1104543 fix was too strict (Debian #700526)
mksh R42 brings back the release\ {early,often} scheme:
* [tg] Make -DMKSH_DISABLE_EXPERIMENTAL a nop again
* [tg] Quell some LLVM+Clang warnings; overhaul scan-build
[198]assert(3)s
* [tg, RT] Bunch of portability and build system fixes
* [tg] Re-enable ${ precmd;} in dot.mkshrc and fix it to retain the
errorlevel
* [RT] Port to Minix-vmd, QNX 4, Watcom C; begin porting to SunOS
4.1.1, Xenix, ISC (Interactive) Unix
* [tg] Prefer const-clean sys_errlist[] to [199]strerror(3)
* [tg] Permit $"#" and $'#' everywhere except in the body of here
documents that are not here strings
* [tg] Use full recursive parser for double-quoted here strings, and
reuse code between here strings and here documents
* [tg] #ifdef DEBUG_LEAKS free all fds and memory on exit
(LP#1106116)
* [tg] Don't close stdout/stderr with redirections, dup /dev/null
instead, always, both in dot.mkshrc and the testsuite, it does
break!
* [tg] Handle ${ #;} like functions in that local and return DWIW;
use it for the big chunk in $PS1 to avoid [200]fork(2)ing (at cost
of tempfiles; dot.mkshrc is a sample, adjust to your needs)
* [tg] Document invalid ${a/b/c} patterns in manpage (Debian #698678)
mksh R41b is a bugfix-only release off a stable branch:
* [tg] Fix [201]gettimeofday(2) detection at build time (warning)
* [RT, tg] Build.sh: catch non-working dash printf builtin
* [chris2, dalias, tg] Remove musl libc workaround and use
_GNU_SOURCE which they kindly aliased to _ALL_SOURCE, which is
implemented now
* [tg] Fix getn and some cases of possible array bounds trespasses
* [chris2, dalias, tg] Use -fno-asynchronous-unwind-tables with GCC
* [tg] Fix a few warnings from libFirm/cparser (mostly
-Wsign-compare)
* [tg] Correct mistake when doing hashtable lookup collision
resolution
* [tg] Fix running the ERR and EXIT traps in situations with set -e
and/or eval (also closes Debian #696823)
* [tg] Fix "command shift", reported by «ormaaj:#!/bin/mksh»
* [Torsten Sillke] Unbreak linking on AIX (remove -qextchk)
* [tg] Fix regression wrt lists in functions and "set -e"
(LP#1104543)
mksh R41 brings a number of bugfixes and new features:
* [tg] Drop "set ±o arc4random" (deprecated in R40)
* [tg] Drop old Build.sh -long-options (deprecated in R40)
* [tg] Change the internal hash algorithm from Bob Jenkins'
one-at-a-time to its NUL-counting, always-changing,
better-avalanching MirOS variant [202]NZAAT (with feedback from
ciruZ; 75% fill level is reasonable; names tbd in Mirkev/MirJSON)
* [tg] Use $'#' for non-ASCII parameters for re-entry printing
* [tg] Use sane spelling of "read-only" consistently
* [tg] Improve tree -DDEBUG functions (internal/developer use)
* [tg] Reduce stack usage a bit; speed up hash tables at size cost
* [tg] MKSH_SMALL no longer implies -fno-inline
* [tg] Support optional seed in ${parameter@#seed} for security
* [tg] New Build.sh environment configurable: LDSTATIC (empty)
* [tg] Improve LTO effect by always adding our copies of distributed
utility function sources when linking statically (i.e. LDSTATIC is
not empty)
* [tg] Drop deprecated hack for lines beginning with an exclamation
mark
* [tg] No longer interpret numbers beginning with a 0 digit as octal
* [tg] Attempt to use -fwrapv on more compilers
* [tg, RT] Better portability to 386BSD, Debian 0.91, ancient Unic#s
* [tg] No longer use [203]mkstemp(3) or [204]tempnam(3) functions, do
our own
* [tg] Fix some bugs in the manual page and Build.sh
* [tg] Add MKSH_NO_CMDLINE_EDITING, MKSH_DISABLE_TTY_WARNING
* [RT] Port to Coherent UNIX
* [tg] Enable some options by default for some ports, for instance,
since BeOS can never have a controlling tty, the option disabling
that warning
* [tg] Some bugfixes, prompted by RT and Valgrind
* [RT] Disable [205]sigsuspend(2) on Syllable Desktop
* [tg] Fix several issues with typeset -p (LP: #993847)
* [RT] Detect lcc and apply inline fix, e.g. for use with libc5
* [tg] If klibc, set -DMKSH_NO_LIMITS and check for sigsuspend fix
* [tg] Fix some issues found by Coverity and some found while fixing
* [tg] Build.sh options: -t target-filename (instead of mksh); -L to
build a legacy mksh, current changes:
+ different $KSH_VERSION "LEGACY KSH" instead of "MIRBSD KSH"
+ purely for running ksh88 and pdksh scripts; no command line
editing
+ use traditional "set -- $(getopt #); echo $?" mode always
+ do not keep file descriptors private
+ parse leading-zero-digit numbers as octal
+ no mksh extension -T
+ use "long", not "int32_t", for arithmetics
* [tg] fix trimming with positional parameters (Debian #48453)
* [tg] ensure that case end tokens are not mixed up (Debian #220272)
* [tg] make alias definitions in mksh -c work (Debian #517009), hack
* [tg] Apply speed improvements and add MKSH_SMALL_BUT_FAST
* [tg] Fix CONSERVATIVE_FDS use-before-definition bug
* [tg] Correct two regressions when tab-completing (LP: #1025843) and
fix bugs in the same code wrt. completion display and other
expansions
* [tg] Make quoted output of "typeset -p" AT&T ksh93 compatible
* [tg] Implement ${foo@Q} like ${foo:Q} in [206]make(1)
* [tg] Remove some unused code; more int # bool conversion
* [tg] Fix using here documents in COMSUB etc. (LP: #1030581)
* [tg] Fix ulimit builtin usage to match what limits we actually know
* [tg] Allow overriding /etc location, experts only (LP: #1039713)
* [tg] Update to Unicode 6.1.0
* [tg, Todd Miller] Avoid changing [207]ps(1) output by accident
* [tg, ft, Christian Neukirchen] Detect zsh 2.5.02/NeXTstep for
Build.sh
* [tg] Detect musl-gcc wrapper, define _BSD_SOURCE there, which is
totally bogus, but musl, just like dietlibc, gets it wrong
* [tg] Improve compile-time assertions
* [tg] Repair select builtin without any choices given
* [tg] Add -DMKSH_GCC55009 hack to avoid some compile-time assertions
and introduce arith-mandatory in check.t to substitute for missing
that compile-time check; will change
* [tg] Rewrite lots of code to not rely on -fwrapv so much
* [tg] Build.sh: Fix [208]flock(2) detection on GNU/Linux
* [Andrew Kudryashov] Manpage: fix default for HISTSIZE
* [tg] Add debugging aid (split-screen mechanism using GNU screen)
* [Andrew Kudryashov] Manpage, Website: point out correct mailing
list
* [tg, Andrew Kudryashov] Fix ~/nonexistant tab completion
* [tg] Optimise sh -c "[^]\t\n"-$&-*;-?[\\`|]*" to exec, inspired by
Jilles Tjoelker (-DMKSH_DISABLE_EXPERIMENTAL to ostracise)
* [tg] Fix $? inside eval (RedHat BZ#865121)
* [tg] Implement ksh93 feature ${ foo;} (using tempfiles this time;
exclude with -DMKSH_DISABLE_EXPERIMENTAL in R41)
* [tg] Run SIGINT check more reliably in the cat builtin (LP#1058815)
* [tg] Handle ^C in here documents, COMSUB, arithmetics (LP#1069428)
* [tg] Make dot.mkshrc usable with "set -o nounset" / "set -u"
* [tg, Clint Adams] Clean up and optimise the error handling code
* [tg] Fix and add some checks in the testsuite
* [tg] Sort list of variables in the source code when possible
* [tg] Add $BASHPID (for ormaaj) and $EPOCHREALTIME
* [tg] Improve documentation, #ksh IRC channel homepage
* [tg, RT] Minix 2 also doesn't have [209]gettimeofday(2) # check for
it
* [tg] Fix an input command line editing display redrawing issue
* [tg] Track the tty to keep $COLUMNS and $LINES up-to-date after a
SIGWINCH even in scripts
Changelog:
Changes since 5.0.0
-------------------
Numeric constants encountered in mathematical expressions (but not other
contexts) can contain underscores as separators that will be ignored on
evaluation, as allowed in other scripting languages. For example,
0xFFFF_FFFF, or 3.141_592_654.
"functions -T" turns on tracing for the specified function(s) only,
similar to "functions -t" except that tracing is turned off for any
functions called from the specified one(s) that don't also have the -t
or -T flag.
In file completion, the recursive-files style can be set to an array of
patterns to match against "$PWD/". In any matched location, it is
possibly to complete files in arbitrarily deep subdirectories without
needing to type the directory prefix. See example in the zshcompsys
manual.
The _user_expand completer now allows expansion functions in the
user-expand files to return a string in REPLY that will be used to name
the set of expansions returned.
Adam Hoka and hugor.
fish is a user friendly command line shell for UNIX-like operating
systems, written mainly with interactive use in mind. It differs
from other shells in that it only provides as few commands as
built-ins as possible and has a daemon which allows it to have
shared variables and command-line history between shell instances.
It also features feature-rich tab-completion and has command-line
syntax highlighting.
Changelog:
# ksh93
12-08-01 A bug that ignored interrupts for some builtins (e.g. cmdtst::grep)
that read from stdin has been fixed.
12-08-01 A bug that interpreted "cd .foo" as "cd foo" has been fixed.
12-07-30 Added automatic restart for EINTR for ioctl, tcgetattr, and tcsetattr.
12-07-23 A scoping error with namrefs to compound associative arrays has
been fixed.
12-07-20 A bug where builtin -d /path/foo deleted foo has been fixed.
12-07-18 A bug in which /dev/stdout did not work in command substitution on
some systems has been fixed.
12-07-17 A bug in which the restricted option set in a subshell prevented
some variables from getting restored when the subshell completed
has been fixed.
12-07-09 A bug in which the directory is not restored after a subshell changes
the name of the directory for subshells executed in the same process
has been fixed.
12-07-09 A bug in which file descriptors created with {n}< file were not being
closed has been fixed.
12-07-09 The 12-04-04 fix for cd .. was not correct causing cd /etc;cd .. to
remain in /etc. This has been fixed.
12-07-02 A bug in which builtin name did now work for builtins found in a
library added by builtin -f lib has been fixed.
12-07-02 A bug in the edit modes which <tab> after a directory did not refresh
the input line has been fixed.
12-07-02 A bug in which an exit status > 256 corresponding to a signal was
not returned by a function to indicate a signal exit has been fixed.
12-06-28 Fix ulimit -a to list (Kibytes) instead of (kbytes).
12-06-27 Fix unitialized data reference for <CR> as first char in --vi mode.
12-06-26 The formatting of printf "%q" for multibyte locales has changed to
output using \u[xxx] format for valid wide characters.
12-06-25 The size limit for read -N and read -n has been raised to INT_MAX.
12-06-22 A bug in which an exit trap set in a subshell might not be triggered
when the last command was a simple executable has been fixed.
12-06-22 A bug which could cause the shell to hang when a coprocess exits
while a command inside a command substitution is reading from it has
been fixed.
12-06-21 +ksh new accepts for commands of the form for i; <nl> do;...;done
12-06-19 Tab completion after a / when there is only one match not completes
with that match rather than generating a menu of matches.
12-06-19 A bug in which patterns containing {...} where not processed
correctly inside ${var/pattern/string} has been fixed.
12-06-15 Change the .paths plugin/builtin library variable name from
BUILTIN_LIB to PLUGIN_LIB to prevent new plugin_version() aware
-lcmd from causing older non-plugin_version() aware ksh to dump core.
12-06-14 builtin without argument no longer lists .sh.tilde as a built-in.
12-06-12 For assignments if the form x=(foo bar), foo is only check for an
alias if it is float, integer, compound, or nameref.
12-06-12 +The shell supports 64 bit i-nodes even for 32 bit binaries.
12-06-11 A bug wth >; redirection systems for which vfork() was the same a
fork() has been fixed.
12-06-11 A bug in path lookup that ignored buffer boundaries has been fixed.
12-06-08 typeset -a var and typeset -A var, first unset var when var is
a compound variable.
12-06-08 A bug in which running shcomp on a program containg namespace
could core dump has been fixed.
12-06-06 A bug in which unset of an associative array of compound variables
did not completely unset the variable has been fixed.
12-06-06 A bug in which exporting left or right justfied fields could loose
the field width has been fixed.
12-06-06 A bug on Solaris11 in which >; did not work for /dev/null was fixed.
12-06-05 A race condition which occured when stopping a builtin command
invoked from a subshell has been fixed.
12-06-05 A bug with appending elements to an empty indexed array has been
fixed.
12-06-04 A bug in which continuing a stopped builtin could cause it to
terminate has been fixed.
12-06-04 By default, builtins added at runtime will restore the current
directory if they are killed or stopped.
12-06-04 A bug in handling \ in read has been fixed.
12-05-31 Use getrlimit64/setrlimit64 on systems that support it.
12-05-31 Fix 64 bit big-endian arithmentic bug that mishandled nan and inf.
12-05-31 Handle ECONNRESET like EPIPE.
12-05-31 Change .paths parse to use only the last BUILTIN_LIB from the top
and treat BUILTIN_LIB value as a ':' separated list of lib names.
12-05-29 Fix BUILTIN_LIB binding bug that ignored subsequent lookups.
12-05-29 shtests: --nocompile omits the compile test and --compile does only
the compile test.
12-05-25 A command subsitution containing a here-document that itself contains
a here-document no longer hangs.
12-05-24 When the redirection operatory >; is directed to a symlink, it now
overwrites the file named by the link rather than the link.
12-05-21 +Added printf formats %(type)q where type can be html, url, pattern,
ere, or csv.
12-05-18 A bug with appending elements to an indexed array has been fixed.
12-05-18 The exit status from getopts --man interactively was 0 instead of 2
and has been fixed.
12-05-18 Another bug with SHOPT_EDPREDICT which could cause a core dump has
been fixed.
12-05-17 A bug with fixed size arrays which could cause a core dump has been
fixed.
12-05-17 A bug in which the here-document <<< $(<file) was not processed
correctly has been fixed.
12-05-15 The default value for -L, -R, and -Z when the size was not set was
incorrectly defaulting to 1 and has been fixed.
12-05-15 A bug in which a subshell of the form (name=value exec ...) could
coredump when name is an environment variable and xtrace is on has
been fixed.
12-05-15 Fixed a .paths bug in which only the first BUILTIN_LIB assignment worked.
12-05-14 Arithmetic expressions and subexpressions that are not floating point
now treat -0 as 0, so that $((-0)) is 0 and $((-0.0)) is -0.
12-05-11 'unset .sh' now fails with readonly message instead of coredump.
12-05-11 A bug which left an associative array arr containing one element in
the wrong state after expanding with ${arr[@]} has been fixed.
12-05-10 A bug in which typeset -f did not display options that called getopts
has been fixed.
12-05-08 Fixed a number of potential bugs uncovered by valgrind.
12-05-08 A bug in which typeset -b -Z10 var did not initialize var to the
empty string has been fixed.
12-05-07 A bug in which the exit value of an interactive shell could be
affected by the evaluation of the PS1 prompt has been fixed.
12-05-04 A bug in which x=() was not unsetting the old value of x before
creating an empty compound variable has been fixed.
12-05-01 A bug in vi edit mode in which after <ESC>^V, the terminal was not
restored to insert mode after a character is entered has been fixed.
12-04-27 A bug in which old attributes were not cleared when assigning a
value using typeset has been fixed.
12-04-26 +Enabled multiline editing by default. set +o multiline can disable.
12-04-25 The 12-04-17 PATH fix created a new bug which was fixed.
12-04-25 Fixed a big memory leak problem in which unsetting compound variables
did not free all the space.
12-04-25 A bug in which test ! ! ! was treated as an error has been fixed.
12-04-24 A bug with print -v for a compound variable that contained fixed
arrays which prevented the output from being used again as input
has been fixed.
12-04-23 +kill provides the STKFLT signal on systems that support it.
12-04-23 +The -L option was added to kill. The -L option is the same as -l
except that without arguments the output format is in the form of
a select menu.
12-04-23 A bug in which the exit status for an interactive shell was always
0 has been fixed.
12-04-20 Entering blank lines interactively no longer resets the exit status.
12-04-18 A bug in file completion in which the second tab completion on a file
would list the completion rather than inserting the completion has
been fixed.
12-04-18 A bug in which "${arr[@]:i:j}" and "${@:i:j}" generated the empty
string when i was a valid subscript and j was <=0 rather than
generating nothing has been fixed.
12-04-17 A bug in which read -d delim from a terminal did not respond to
interrupt and did not termrinate when the delimiter was entered
has been fixed.
12-04-17 A bug in which a directory in PATH containing a .paths file that
contains a line with FPATH=dir, where dir does not exist could
cause the path search to fail has been fixed.
12-04-16 A bug in which $(trap -p) did not display traps such as ERR and
DEBUG that are not associated with signals has been fixed.
12-04-11 A bug in which unsetting a variable did not unset attributes when
the variable did not have a value has been fixed.
12-04-11 A bug in which read -A for an array whose index is an enumeration
type, lost the enumeration type has been fixed.
12-04-10 Shared libraries loaded from a library named by a BUILTIN_LIB= found
in a .paths file found in a directory on PATH now add builtins that
are associated with the directory in PATH containing the .paths file.
12-04-09 Increased I/O buffer sizes for better performance.
12-04-09 A bug in which the leading 0 was stripped from $x, when $x contained
a heximadecimal constant inside an arithmetic expression inside
a for or while loop.
12-04-06 Modified namespaces to hand variabes FPATH, PATH, and OPTIND that
are defined in name spaces appropriately. This also fixed OPTIND
and OPTARG processing for functions.
12-04-04 A bug in which cd .. fails when the current directory has been
renamed has been fixed.
12-04-02 Made some namespace changes and added a regression test.
12-03-30 A bug with namespaces in which PATH and FPATH set in a namespace was
not restored when leaving the namespace has been fixed.
12-03-29 --- Release ksh93u++ ---
12-03-29 A bug in which appending an index array onto an array without elements
caused the first element to be 1 rather than 0 has been fixed.
12-03-29 A bug which could cause a core dump when copying a large index array
has been fixed.
12-03-28 The shell now generates an error message when the sizes with L, Z, and
R are > 32767 on 32 bit binaries instead of generating a core dump.
12-03-28 A bug in left and right justification in which the width of invalid
characters was not taken as zero has been fixed.
12-03-26 A bug in which typeset -p ref, when ref is a reference to an index
array element did not display the subscript has been fixed.
12-03-23 A bug in lowercase and uppercase fields when expanding ${name:=val}
when name is the empty string has been fixed.
12-03-22 A namespace bug in which a type t defined in namespace foo could not
be referenced outside the namespace as .foo.t has been fixed.
12-03-22 A bug in name reference scoping in which a name function called from
another function is pass a name reference to a compound variable
instance to be created and the compound variable is in the global
scope.
12-03-22 A bug in which ${ref[@}} did not behave like ${arr[i][@]} when
ref is a name reference to arr[i] has been fixed.
12-03-21 A bug in which assigning a compound variable into arr[i], where
arr[i] is an array variable did not work correctly has been fixed.
12-03-21 A bug with multi-dimenstional index arrays in which ${arr[i][j]}
could generate a bogus error message when i was > 9 has been fixed.
12-03-21 A bug in which typeset v=foo, typeset -p v[0] generated a core dump
has been fixed.
12-03-20 A bug in vi edit mode in which the sequence bar<ESC>0i<ESC>l left the
cursor on the b rather than the a has been fixed.
12-03-20 A bug which caused a core dump when defining a type with a field
as ' integer -a data=([0]=0)' has been fixed.
12-03-19 Using typeset -a array when array is an associative arry not
generated an error message.
12-03-19 typeset +a, typeset +A, and typeset +C not displays the variables
with the attributes a, A, and C respectively instead of an error.
12-03-19 A bug in which typeset -pC, typeset -pa, and typeset -pA output all
variables rather than those of type C, a, or A only has been fixed.
12-03-18 A bug in which unset foo where foo is a name reference to a compound
variable defined inside a function is not unset has been fixed.
12-03-18 A bug with SHOPT_EDPREDICT which could cause a core dump when the
list of matches became empty has been fixed.
12-03-15 The assignment, typeset -C foo=(a b c) now generates a syntax
error since a is not an assignment command.
12-03-16 A bug in which an unset discipline from a variable defined in a
subshell is not invoked in the subshell has been fixed.
12-03-08 The assignment typeset -a (x=1 y=2) now creates an index array
of two elements rathern than an array of one element which is
a compound variable.
12-03-02 +The vi and emacs edit modes now list all the entries in a directory
when entering a <tab> for completion after a /.
12-03-02 A bug in which a program that exits with value 12 when called
from a command substitution in which standard output has been
redirected caused the shell to hang has been fixed.
12-03-01 A bug in which the shell could not parse [[ ']' == ~(E)[]] ]]
has been fixed.
# INIT
12-07-17 iffe.sh: add C code NOTE("...") to ammend --verbose output
12-06-26 iffe.sh: fix "npt foo" to handle function-like macro foo()
12-06-20 package.sh: use $KSH for rt in "results test"
12-06-15 Makefile: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
12-06-15 package.sh: add PLUGIN_LIB to $INSTALLROOT/bin/.paths and BUILTIN_LIB => PLUGIN_LIB
12-06-13 package.sh: handle admin.db column output
12-06-08 iffe.sh: fix 12-06-06 typo
12-06-06 iffe.sh: check for -l* in reverse and accumulative order (e.g., for -last & -lm)
12-06-04 package.sh: always check $INSTALLROOT/lib/package/profile
12-05-31 Makefile: ID=ast; $(INSTALLROOT)/prototyped.h => $(INSTALLROOT)/$(ID)/prototyped.h
12-05-28 iffe.sh: api foo YYYYMMDD => FOOAPI(rel) test macro
12-05-24 package.sh: change admin.db comment => owner attributes
12-04-25 ratz.c: add sear -k option to keep installation tmp dir on exit
12-04-17 package.sh: skip sh version logic for ``use''
12-04-17 cc.ibm.risc*: _LARGEFILE64_SOURCE => _LARGE_FILE_API moved to libast/features
12-04-09 cc.ibm.risc*: speak aixese for _LARGEFILE64_SOURCE
12-02-29 cc.darwin.i386*: handle default cc vs kernel bittedness
12-02-29 C+probe: add __TIMESTAMP__ to the nopredefined list
12-02-29 package.sh: don't assume grep -q or /usr/local/lib in LD_LIBRARY_PATH
12-02-29 package.sh: fix ksh vs -lcmd compatibility checks