Based on PR 22994 by Anthony Mallet.
I modify to adapt to recent pkgsrc tree and update from 1.4 to 1.6.
eltclsh (editline tcl shell) is an interactive shell for the TCL
programming language. It provides command line editing, history browsing
as well as variables and command completion thanks to editline
features. The completion engine is programmable in a way similar to tcsh,
and comes with an programmed completion for the whole TCL language by
default.
The package also provides elwish, an interactive interpreter for the Tk
toolkit.
This document details the changes between this version, bash-3.2-release,
and the previous version, bash-3.2-beta.
1. Changes to Bash
a. Fixed a bug that caused the temporary environment passed to a command to
affect the shell's environment under certain circumstances.
b. Fixed a bug in the printf builtin that caused the %q format specifier to
ignore empty string arguments.
c. Improved multibyte character environment detection at configuration time.
d. Fixed a bug in the read builtin that left spurious escape characters in the
input after processing backslashes when assigning to an array variable.
2. Changes to Readline
a. Fixed a redisplay bug that occurred in multibyte-capable locales when the
prompt was one character longer than the screen width.
------------------------------------------------------------------------------
This document details the changes between this version, bash-3.2-beta,
and the previous version, bash-3.2-alpha.
1. Changes to Bash
a. Changed the lexical analyzer to treat locale-specific blank characters as
white space.
b. Fixed a bug in command printing to avoid confusion between redirections and
process substitution.
c. Fixed problems with cross-compiling originating from inherited environment
variables.
d. Added write error reporting to printf builtin.
e. Fixed a bug in the variable expansion code that could cause a core dump in
a multi-byte locale.
f. Fixed a bug that caused substring expansion of a null string to return
incorrect results.
g. BASH_COMMAND now retains its previous value while executing commands as the
result of a trap, as the documentation states.
2. Changes to Readline
a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing
the prompt and input line multiple times.
b. Fixed history expansion to not be confused by here-string redirection.
c. Readline no longer treats read errors by converting them to newlines, as
it does with EOF. This caused partial lines to be returned from readline().
------------------------------------------------------------------------------
This document details the changes between this version, bash-3.2-alpha,
and the previous version, bash-3.1-release.
1. Changes to Bash
a. Fixed a source bug that caused the minimal configuration to not compile.
b. Fixed memory leaks in error handling for the `read' builtin.
c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit
status.
d. Fixed some parsing problems with compound array assignments.
e. Added additional configuration changes for: NetBSD (incomplete multibyte
character support)
f. Fixed two bugs with local array variable creation when shadowing a variable
of the same name from a previous context.
g. Fixed the `read' builtin to restore the correct set of completion functions
if a timeout occurs.
h. Added code to defer the initialization of HISTSIZE (and its stifling of the
history list) until the history file is loaded, allowing a startup file to
override the default value.
i. Tightened up the arithmetic expression parsing to produce better error
messages when presented with invalid operators.
j. Fixed the cross-compilation support to build the signal list at shell
invocation rather than compile time if cross-compiling.
k. Fixed multibyte support for non-gcc compilers (or compilers that do not
allow automatic array variable sizing based on a non-constant value).
l. Several fixes to the code that manages the list of terminated jobs and
their exit statuses, and the list of active and recently-terminated jobs
to avoid pid aliasing/wraparound and allocation errors.
m. Fixed a problem that allowed scripts to die due to SIGINT while waiting
for children, even when started in the background or otherwise ignoring
SIGINT.
n. Fixed a bug that caused shells invoked as -/bin/bash from not being
recognized as login shells.
o. Fixed a problem that caused shells in the background to give the terminal
to a process group other than the foreground shell process group.
p. Fixed a problem with extracting the `varname' in ${#varname}.
q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby
calling functions that may not be called in a signal handler context --
but set a flag and exit afterward (like SIGINT).
r. Changed the brace expansion code to skip over braces that don't begin a
valid matched brace expansion construct.
s. Fixed `typeset' and `declare' to not require that their shell function
operands to be valid shell identifiers.
t. Changed `test' to use access(2) with a temporary uid/euid swap when testing
file attributes and running setuid, and access(2) in most other cases.
u. Changed completion code to not attempt command name completion on a line
consisting solely of whitespace when no_empty_command_completion is set.
v. The `hash' builtin now prints nothing in posix mode when the hash table is
empty, and prints a message to that effect to stdout instead of stderr
when not in posix mode.
w. Fixed a bug in the extended pattern matching code that caused it to fail to
match periods with certain patterns.
x. Fixed a bug that caused the shell to dump core when performing filename
generation in directories with thousands of files.
y. Returned to the original Bourne shell rules for parsing ``: no recursive
parsing of embedded quoted strings or ${...} constructs.
z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only
on the settings of the `functrace' and `errtrace' shell options, rather
than whether or not the shell is in debugging mode.
aa. Fixed a problem with $HOME being converted to ~ in the expansion of
members of the DIRSTACK array.
bb. Fixed a problem with quoted arguments to arithmetic expansions in certain
constructs.
cc. The command word completion code now no longer returns matching directories
while searching $PATH.
dd. Fixed a bug with zero-padding and precision handling in snprintf()
replacement.
ee. Fixed a bug that caused the command substitution code not to take embedded
shell comments into account.
ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an
arithmetic substitution.
gg. Fixed a bug in the prompt expansion code that inappropriately added a
\001 before a \002 under certain circumstances.
hh. Fixed a bug that caused `unset LANG' to not properly reset the locale
(previous versions would set the locale back to what it was when bash
was started rather than the system's "native" locale).
ii. Fixed a bug that could cause file descriptors > 10 to not be closed even
when closed explicitly by a script.
jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting
inside double-quoted command substitutions.
kk. Fixed a bug that could cause core dumps when `return' was executed as the
last element of a pipeline inside a shell function.
ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in
the jobs list.
2. Changes to Readline
a. Fixed a problem that caused segmentation faults when using readline in
callback mode and typing consecutive DEL characters on an empty line.
b. Fixed several redisplay problems with multibyte characters, all having to
do with the different code paths and variable meanings between single-byte
and multibyte character redisplay.
c. Fixed a problem with key sequence translation when presented with the
sequence \M-\C-x.
d. Fixed a problem that prevented the `a' command in vi mode from being
undone and redone properly.
e. Fixed a problem that prevented empty inserts in vi mode from being undone
properly.
f. Fixed a problem that caused readline to initialize with an incorrect idea
of whether or not the terminal can autowrap.
g. Fixed output of key bindings (like bash `bind -p') to honor the setting of
convert-meta and use \e where appropriate.
h. Changed the default filename completion function to call the filename
dequoting function if the directory completion hook isn't set. This means
that any directory completion hooks need to dequote the directory name,
since application-specific hooks need to know how the word was quoted,
even if no other changes are made.
i. Fixed a bug with creating the prompt for a non-interactive search string
when there are non-printing characters in the primary prompt.
j. Fixed a bug that caused prompts with invisible characters to be redrawn
multiple times in a multibyte locale.
k. Fixed a bug that could cause the key sequence scanning code to return the
wrong function.
l. Fixed a problem with the callback interface that caused it to fail when
using multi-character keyboard macros.
m. Fixed a bug that could cause a core dump when an edited history entry was
re-executed under certain conditions.
n. Fixed a bug that caused readline to reference freed memory when attmpting
to display a portion of the prompt.
3. New Features in Bash
a. Changed the parameter pattern replacement functions to not anchor the
pattern at the beginning of the string if doing global replacement - that
combination doesn't make any sense.
b. When running in `word expansion only' mode (--wordexp option), inhibit
process substitution.
c. Loadable builtins now work on MacOS X 10.[34].
d. Shells running in posix mode no longer set $HOME, as POSIX requires.
e. The code that checks for binary files being executed as shell scripts now
checks only for NUL rather than any non-printing character.
f. Quoting the string argument to the [[ command's =~ operator now forces
string matching, as with the other pattern-matching operators.
4. New Features in Readline
a. Calling applications can now set the keyboard timeout to 0, allowing
poll-like behavior.
b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
the default last-ditch startup file.
c. The history file reading functions now allow windows-like \r\n line
terminators.
Patch provided by Martin Wilke via PR 34313.
[osh-060124]:
Makefile:
* Added targets for building/installing sh6(1) and glob6(1).
Refer to the README file for further details.
* Removed the `check-sh6' target since the tests were originally
written for osh(1) and sh6(1) as Thompson-shell reimplementations,
not ports.
sh6:
* Changed sh6(1) from being a reimplementation which is compiled from
the same sources as osh(1) to being a port of the original Thompson
shell from Sixth Edition Unix. Refer to the CHANGES_sh-to-sh6 file
for further details.
osh:
C: Treat both `( ; )' and `( & )' as syntax errors.
C: Print the process ID for each command of an asynchronous pipeline,
not just the last command.
C: Added the `newgrp' special command. It is similar to `login'
except that the newgrp(1) utility replaces the current interactive
shell rather than the login(1) utility.
* When opening `/dev/null' is needed for an asynchronous command,
call open(2) w/ the O_RDONLY flag instead of O_RDWR.
From DESCR:
mksh is the MirBSD enhanced version of the Public Domain Korn
shell (pdksh), a bourne-compatible shell which is largely si-
milar to the original AT&T Korn shell. It includes bug fixes
and feature improvements in order to produce a modern, robust
shell good for interactive and especially script use.
New in this release
=====================
** Support for interix
** Ignoring of synchronous signals
The procedures IGNORE-SIGNAL and HANDLE-SIGNAL-DEFAULT have been
added.
** Support for gcc 4.0
** 0.6 for module path
The standard module path now contains
${prefix}/lib/scsh/modules/0.6 in addition to
$prefix/lib/scsh/modules for compatibility with install-lib
** New implementation of open-pty
Instead of search for /dev/pty??, scsh now tries a wide variety of
ways to aquire a new pty and the corresponding tty.
** Bug fixes
argv[0] is now the first element of command-line
Fixes found by new test suite
Regexp for empty string
Argument checking for COPY-BYTES!
GC_PROTECTs for send_substring
format_date support for #f timezone
Added predicates for user-info and group-info
Reaping of stopped processes: Do not mark stopped processes as dead
md5-digest-for-port
| regexps return char-sets
standard-let in srfi-5
(%)read-delimited! checks for mutable buffer
leap second for srfi-19
The default image for the scshvm is now the installed scsh.image.
PKGLOCALEDIR and which install their locale files directly under
${PREFIX}/${PKGLOCALEDIR} and sort the PLIST file entries. From now
on, pkgsrc/mk/plist/plist-locale.awk will automatically handle
transforming the PLIST to refer to the correct locale directory.
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
branch.
Major changes between versions 4.2 and 4.3
------------------------------------------
- There is support for multibyte character sets in the line editor,
though not the main shell. See Multibyte Character Support in INSTALL.
- The shell can now run an installation function for a new user
(one with no .zshrc, .zshenv, .zprofile or .zlogin file) without any
additional setting up by the administrator.
- The manual now has a Roadmap section (manual page zshroadmap) to
give new users an indication of the most interesting parts of the manual.
- New option PROMPT_SP, on by default, to work around the problem that the
line editor can overwrite output with no newline at the end.
- New option HIST_SAVE_BY_COPY (on by default): history is saved by
copying and renaming instead of directly overwriting.
- New redirection syntax e.g. {myfd}>file opens a new file descriptor
and stores the number in $myfd, so that >&$myfd will work. Chosen not to
break existing code (and to be compatible with proposals for the Korn
shell).
- Substitutions of the form ${var:-"$@"}, ${var:+"$@"} and similar where
word-splitting is applied to the text after the :- or :+ (in particular,
where the SH_WORD_SPLIT option is in effect for compatibility) now behave
as in other Bourne- and POSIX-compatible shells when in the appropriate
emulation mode.
- New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
[[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier, is
an IFS character, is an IFS whitespace character, or is considered as part
of a word (is alphanumeric or appears in $WORDCHARS). Note the pattern
code doesn't yet handle multibyte characters.
- The idiom =(<<<...) is optimised so that the shell internally turns
the ... into the contents of a file whose name is then substituted.
- Supplied functions catch and throw provide limited support for
exception handling using the `{ ... } always { ... }' syntax.
- Signals now accept the SIG as part of the name for compatibility with
other shells.
- Editor function argument-base allows non-decimal arguments for
editor widgets.
- As always, there are many enhancements to completion functions.
makeinfo if no native makeinfo executable exists. Honor TEXINFO_REQD
when determining whether the native makeinfo can be used.
* Remove USE_MAKEINFO and replace it with USE_TOOLS+=makeinfo.
* Get rid of all the "split" argument deduction for makeinfo since
the PLIST module already handles varying numbers of split info files
correctly.
NOTE: Platforms that have "makeinfo" in the base system should check
that the makeinfo entries of pkgsrc/mk/tools.${OPSYS}.mk are
correct.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
"extract" script for extraction. Many cases where a custom EXTRACT_CMD
simply copied the distfile into the work directory are no longer
needed. The extract script also hides differences between pax and
tar behind a common command-line interface, so we no longer need code
that's conditional on whether EXTRACT_USING is tar or pax.
Changes since last packaged version (2.3.0):
2.3.2
- fixed segfault due to checking the length of variables that I forgot to
remove from build_arg_vector() since the chroot root exploit fix in 2.3.0
2.3.1
- fixed stupid bug that caused rssh not to allow rsync and rdist
rather than PKG_FAIL_REASON, so that they provide useful error
messages in build logs, and so that they continue to work on platforms
where they aren't broken.
This is a terse description of the new features added to bash-3.1 since
the release of bash-3.0. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. Bash now understands LC_TIME as a special variable so that time display
tracks the current locale.
b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
as `invisible' variables and may not be unset.
c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't
try to interpret any options at all, as POSIX requires.
d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
e. Fixed vi-mode word completion and glob expansion to perform tilde
expansion.
f. The `**' mathematic exponentiation operator is now right-associative.
g. The `ulimit' builtin has new options: -i (max number of pending signals),
-q (max size of POSIX message queues), and -x (max number of file locks).
h. A bare `%' once again expands to the current job when used as a job
specifier.
i. The `+=' assignment operator (append to the value of a string or array) is
now supported for assignment statements and arguments to builtin commands
that accept assignment statements.
j. BASH_COMMAND now preserves its value when a DEBUG trap is executed.
k. The `gnu_errfmt' option is enabled automatically if the shell is running
in an emacs terminal window.
l. New configuration option: --single-help-strings. Causes long help text
to be written as a single string; intended to ease translation.
m. The COMP_WORDBREAKS variable now causes the list of word break characters
to be emptied when the variable is unset.
n. An unquoted expansion of $* when $IFS is empty now causes the positional
parameters to be concatenated if the expansion doesn't undergo word
splitting.
o. Bash now inherits $_ from the environment if it appears there at startup.
p. New shell option: nocasematch. If non-zero, shell pattern matching ignores
case when used by `case' and `[[' commands.
q. The `printf' builtin takes a new option: -v var. That causes the output
to be placed into var instead of on stdout.
r. By default, the shell no longer reports processes dying from SIGPIPE.
s. Bash now sets the extern variable `environ' to the export environment it
creates, so C library functions that call getenv() (and can't use the
shell-provided replacement) get current values of environment variables.
t. A new configuration option, `--enable-strict-posix-default', which will
build bash to be POSIX conforming by default.
u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
override the true terminal size.
2. New Features in Readline
a. The key sequence sent by the keypad `delete' key is now automatically
bound to delete-char.
b. A negative argument to menu-complete now cycles backward through the
completion list.
c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
readline will bind the terminal special characters to their readline
equivalents when it's called (on by default).
d. New bindable command: vi-rubout. Saves deleted text for possible
reinsertion, as with any vi-mode `text modification' command; `X' is bound
to this in vi command mode.
e. A new external application-controllable variable that allows the LINES
and COLUMNS environment variables to set the window size regardless of
what the kernel returns: rl_prefer_env_winsize
Note that this is (mostly) a security fix release.
Changes since last packaged version (2.2.3):
2.3.0
- modified chroot_helper to parse the config file, to avoid arbitrary
chroot() (and thus root compromise)
- numerous documentation updates
- fix for va_start()/va_end()-related segfault on 64-bit architecture
- small bit of code cleanup
DEFAULT_PATH_VALUE as /usr/bin:/bin:${LOCALBASE}/bin:/usr/local/bin
(Instead of having non-existent default PATH directories.)
Bump PKGREVISION.
This is for PR 25044.
Okayed by bash2 maintainer.
- Changed IRIX, Interix, Linux and OpenBSD share PLIST.terminfo,
instead of PLIST for each OS.
- zsh doesn't build libzsh-4.2.5.so on OpenBSD, so PLIST.shlibs
should be excluded.
+SHELL.
* Turn PKG_REGISTER_SHELLS into a variable that can be set in the shell
environment so that admins can make a choice when installing from
binary packages.
* PKG_SHELL is now a list of paths, and if the path is relative, then it
is taken to be relative to ${PREFIX}. Convert packages that set
PKG_SHELL to take advantage of this new feature by changing the full
paths to the shells into relative paths.
around at either build-time or at run-time is:
USE_TOOLS+= perl # build-time
USE_TOOLS+= perl:run # run-time
Also remove some places where perl5/buildlink3.mk was being included
by a package Makefile, but all that the package wanted was the Perl
executable.
PKGREVISION due to the added dependency. This should fix PR pkg/30601.
While here, set BUILDLINK_DEPMETHOD of dependent libraries to "build"
when the "static" option is enabled.
PKGREVISION due to the added dependency.
While here, set BUILDLINK_DEPMETHOD of dependent libraries to "build"
when the "static" option is enabled.
Approved by the maintainer (wiz@).
Based on rssh package in pkgsrc-wip by pancake at phreaker dot net,
slightly modified and updated to latest version by myself.
Claim stewardship.
Rssh is a restricted shell for use with OpenSSH, allowing only scp
and/or sftp. For example, if you have a server which you only want
to allow users to copy files off of via scp, without providing
shell access, you can use rssh to do that.
posh (0.3.14) unstable; urgency=medium
* ifdef out shf_smprintf.
-- Clint Adams <schizo@debian.org> Fri, 19 Nov 2004 13:11:55 -0500
posh (0.3.13) unstable; urgency=medium
* Some documentation cleanup and fixes.
* Get the Latin-1 non-breeakable spaces out of the manpage for
now. closes: #280624.
Hopefully the DocBook XSL stylesheets will be fixed some year.
-- Clint Adams <schizo@debian.org> Fri, 12 Nov 2004 14:20:35 -0500
posh (0.3.12) unstable; urgency=medium
* Add regression test for unset builtin. closes: #273346.
* Make "eval false || true" not exit with -e. closes: #269066.
-- Clint Adams <schizo@debian.org> Sat, 25 Sep 2004 22:41:59 -0400
posh (0.3.11) unstable; urgency=medium
* Fix return value of unset builtin when parameters are not set;
(according to POSIX, this is not an error condition).
-- Clint Adams <schizo@debian.org> Thu, 23 Sep 2004 22:08:57 -0400
posh (0.3.10) unstable; urgency=low
* Remove extraneous operators from "test" builtin (-a, -G, -H, -k,
-O, -o, <, >, -ef, -nt, -ot).
New Features:
* UTF-8 handling for both singe and double width characters
* termname builtin for testing whether a terminal type is
available in termcap/terminfo
examples:
* Updated the example initialization files.
* Added a few command files to give users a head start
in scripting the shell.
osh.1 and sh6.1:
* Made a few more minimal revisions.
osh and sh6:
* Did a little more code cleanup.
NB: this needs an install-sh that supports "-S -f", as in rev. 1.3 of
bootstrap/files/install-sh.in. After installing that install-sh, set
_STRIPFLAG_INSTALL?= -S -f
in mk/platform/IRIX.mk and all should be peachy. This will be done
correctly eventually, don't worry. :-)
Changes that improve compatibility w/ the Sixth Edition Unix shell
are marked w/ a `C:' in the details below.
-------------------------------------------------------------------------------
[osh-041028]:
*.1:
* Fixed a few typos in osh.1 and sh6.1.
* Did a little fine tuning of osh.1 and sh6.1 to hopefully
eliminate some incomplete and/or unclear explanations.
* Did the same for both if.1 and goto.1.
osh and sh6:
* Fixed an annoying bug introduced in the previous release...
The way error messages were printed in error() was not accounting
for the fact that the standard error stream is quite often (if not
always) unbuffered by default. This could make some error messages
difficult to read when a pipeline was involved. A little example:
Before (unfixed):
% foo|bar|baz
foo: not foundbar: not foundbaz: not found
After (fixed):
% foo|bar|baz
foo: not found
bar: not found
baz: not found
-------------------------------------------------------------------------------
[osh-041018]:
This release includes sh6 in addition to osh, if, and goto.
Sh6 is simply osh without the enhancements. It is built from the
same sources as osh, but it is not built or installed by default.
Makefile:
* Added targets for sh6 so that it can optionally be built, tested,
and installed if desired.
osh and sh6:
* Split the code into modules.
This is primarily for developer sanity... ;)
The new files are osh.h, main.c, parse.c, and exec.c.
* If (geteuid() != getuid() || getegid() != getgid()) is true,
print a nice error message and exit with a status of 2.
* Strip all NUL characters from the shell's standard input as it is
being read into the command line buffer. Input to the shell is
expected to be text.
* Changed the way the shell handles non-seekable files.
This is for both initialization files (osh only) and command files.
Do not block on open(2); open it and determine if it is a regular
file (or seekable). If it is not a regular file or is not seekable,
exit with an error. If seekable, reset the file for blocking I/O
and continue as normal.
Note that you can still read commands from FIFOs if you want.
Instead of doing `osh myfifo', you can either do `osh <myfifo'
or `osh - my list of positional parameters <myfifo'.
* Changed the error handling to use stdarg(3).
This allows for more code consistency and makes it easier
to handle all errors with just one line of code.
osh only:
* Added another possible initialization file for osh: $HOME/.oshrc
Osh only attempts to execute commands from this file if it is an
interactive shell. In the case of a login shell, osh tries this
file only after it tries both /etc/osh.login and $HOME/.osh.login.
* Made osh less strict about errors in initialization files.
Previously, common shell-detected errors in any of the files
were generally treated in the same way as they would have been
treated in a command file (i.e., the error was fatal). Realizing
that this potentially caused difficulty and annoyance for the user,
I opted to change it so that these types of errors are handled as
they are when osh is interactive.
This should make it easier for the user to debug
initialization files if needed.
* Added a `source' special command.
It is functionally similar to the way this command works in csh(1).
See osh(1) for details.
if:
* Changed ARGMAX from 50 to 256.
* If (geteuid() != getuid() || getegid() != getgid()) is true,
print a nice error message and exit with a status of 2.
* Added a few new primaries: `-h', `-s', `-t', and `-x'
See if(1) for details.
goto:
* Changed the size of the label buffer from 128 to 1024.
* Do not require the `:' of a labelled line to appear in column 1.
Instead, allow the `:' to optionally be preceded by blanks so that
labelled lines can be indented in command files. See goto(1) for
more details if needed.
* Eliminated unnecessary calls to strcmp(3) whenever a possible label
cannot possibly match the label argument given on the command line.
* Give an error if any NUL character is encountered in the input.
* Give an error if a zero-length string is given as the label argument.
-------------------------------------------------------------------------------
[osh-040812]:
osh.c:
* Changed the way unused pipe descriptors are handled in the child
process after fork(). This fixes a bug where the pipe in a pipeline
such as `( cat /dev/zero ) | sleep 1' would never enter an EOF state.
Previously, the close-on-exec flag was being set for the descriptors
in question. Of course, this did not work for the above and similar
cases. So, the descriptors in question are now close()d explicitly.
* Made some final changes to globbing to allow for more sensible
behaviour WRT quoting. The functions affected are: globargs(),
globchar(), and striparg(). Read and/or run `tests/glob_test.osh'
for details of the user-visible changes. This script may cause
previous versions of the shell to dump core.
Basically, since striparg() had always been called *after* glob(3)
and since the path names generated by glob(3) cannot be trusted, it
ends up that the best course of action is to call striparg() *before*
glob(3). This relatively simple change fixes a variety of *possible*
problems related to globbing.
-------------------------------------------------------------------------------
[osh-040731]:
osh.c:
* Added bounds checking to striparg() to protect against a possible
buffer overflow. Though this is unlikely to happen in the general
case, it is certainly *not* impossible. This function had been
unprotected since at least osh-020214.
* Added a new diagnostic, `Arg too long', to go with the
above-mentioned change.
* Removed the `No directory' diagnostic from globargs().
It was simply not worth the trouble. In compatible mode,
the `No match' diagnostic provides sufficient compatibility
in my opinion...
* Changed the `chdir' command so that it only attempts to change to
the previous working directory when the `-' argument is *not* quoted.
This alows the shell to change to a directory by that name.
For example:
% mkdir -; chdir -; pwd; chdir \-; pwd; chdir -; pwd; rmdir -
chdir: no old directory
/home/jneitzel/osh_stuff/osh-040731
/home/jneitzel/osh_stuff/osh-040731/-
/home/jneitzel/osh_stuff/osh-040731
Remember that "-" or '-' has the same effect as the \- used above.
This is perhaps a little silly, but I figure if a directory *can*
exist then it should be possible to change to it.
* Fixed the `<-' redirection argument so that it adheres to the
documentation. This fixes a file descriptor leak in addition
to the incorrect behaviour. It should be silently ignored in
the following case: `echo hello | grep h <-'; now it is.
-------------------------------------------------------------------------------
[osh-040723]:
osh.c:
C: Fixed a small idiosyncrasy with the `No directory' and `No match'
diagnostics when running in compatible mode. For example:
Before:
% if -d . -a -r . echo "`.' is a readable directory.";\
echo foo*; echo ?; echo []
`.' is a readable directory.
No match
No match
No directory
After:
% if -d . -a -r . echo "`.' is a readable directory.";\
echo foo*; echo ?; echo []
`.' is a readable directory.
No match
No match
No match
The shell should only print `No directory' when a directory
does not exist (ENOENT) or cannot be read (EACCES). Yes, it is
expected that invalid patterns such as `[' and `[]' result in
the shell printing a `No match' diagnostic.
* Changed the `<--' input redirection argument to `<-' instead.
This seems more consistent and will allow for possibly clearer
documentation in the future (if and when I add another feature
I've been thinking about).
fd2.[1c]:
* Removed the fd2 utility and its manual page because of
possible licensing issues.
-------------------------------------------------------------------------------
[osh-040718]:
This release is made primarily to synchronize with the new branch
of the shell which is named `sh6'.
osh.1:
* More revisions and clarifications...
-------------------------------------------------------------------------------
[osh-040714]:
Makefile:
* Refined the description for _XOPEN_SOURCE a little.
osh.1:
* General improvements...
This includes documenting some things that have never been very well
documented in this shell.
osh.c:
C: Made changes to globbing which affect the shell in compatible mode.
This includes the addition of the `No directory' diagnostic which
was present in /etc/glob from Sixth Edition Unix. Also, it looks
like I had previously misinterpreted exactly when the `No match'
diagnostic was supposed to be printed. Now, when running in
compatible mode the shell really is compatible. Yay =)
* Added a `umask' special command.
* Disallow SIGCHLD from being trapped.
When this signal is requested in a `trap' command, it is quietly
disallowed. This is the same behaviour seen with both SIGKILL and
SIGSTOP. Thus, doing a `trap + 9 17 20' quietly has no effect.
* Made changes to how the shell builds a command's argument vector.
Previously, malloc(3) was used. Now, each command in the command
line is simply split into `\0'-terminated words. Each argument is
actually a pointer to the corresponding word in the command line.
The changes to parameter substitution in osh-040628 made this
a perfectly sensible course of action. This change also gives
a microscopic improvement in run-time performance (as judged
by time(1)).
The only remaining use of malloc(3) in the shell's execution stage
can be found in globargs().
-------------------------------------------------------------------------------
[osh-040628]:
Thanks to Stephen M. Jones for suggesting that osh should be able
to read a global rc file. Thanks to Stephen C. VanDahm for assisting
with some portability issues found in osh-040421. Thanks also to
Josep Portella Florit for reviewing osh-040421, making several useful
suggestions, and sending patches.
BTW, many changes were made to the manual pages.
I hope they are clear, but I trust that if they are not then someone
might be kind enough to tell me so and/or make suggestions.
Some new files are included:
examples/*: initialization file examples
fd2.[1c]: the fd2 utility
Makefile:
* Added some notes about _XOPEN_SOURCE.
* Added a target to optionally build and install fd2.
* Removed the compile-time definition of `CLONE'.
This is now a run-time option which can be toggled in order to
enable or disable enhancements to the shell.
osh.c:
C: Changed how the shell does parameter substitution.
This was the last major incompatibility w/ the Thompson shell.
Now, substitution is done *before* any command-line parsing
takes place.
* Added the ability for login shells to read the initialization files
/etc/osh.login and/or $HOME/.osh.login if they exist. A shell is
considered to be a login shell if its first argument starts w/ a
`-' character (e.g., -osh).
* Added a `set' command to allow shell compatibility to be toggled
at run time. In addition, the shell now checks for `OSH_COMPAT'
in the environment to tell future invocations of the shell which
mode the user wishes to run in.
* In addition to the `set' command mentioned above, the following
special built-in commands have been added and are available when
the shell is in "noclone" mode:
exec, setenv, trap, unsetenv
* In globargs(), use `gl_pathc == 0' to detect an unmatched pattern
instead of checking if glob(3) returned `GLOB_NOMATCH'. This allows
for those cases where glob(3) may not be POSIX-compliant.
* Made osh command files that are run asynchronously ignore interrupts.
For example, `osh runcom&' should ignore SIGINT and SIGQUIT, and now
it does.
* Reverted a so-called compatibility fix made in osh-040421.
Now, ignore SIGINT and SIGQUIT for asynchronous commands invoked
from a command file. From a usability perspective, it is simply
too annoying to not do it this way.
* Changed the `exit' command so that it always terminates a shell when
reading commands from a file. Previously, it only terminated a shell
when invoked as `osh file'. Note that `exit' still has no effect for
interactive shells or `osh -c command'; this is intentional as it is
compatible w/ the behaviour of `exit' under the Thompson shell.
if.c:
* Include stdlib.h for exit(3) so that OS X doesn't complain.
* Rename exp() to expr() to avoid conflicts w/ exp(3) on OS X.
Strange, as math.h is not included there should not have been
any conflict. Oh well, it is fixed now.
* Enable this utility to return a meaningful exit status to the user.
In short, `if foo = foo' returns an exit status of 0; `if foo = bar'
returns an exit status of 1. Previously, exit status was always 0.
* Made the usage less ambiguous; corrected the documentation to reflect
the actual behaviour. In short, usage is (and always has been) as
follows:
if expr [command [arg ...]]
* Added some useful conditional primaries for constructing expressions.
See the manual pages for details.
* Use the stdio(3) functions instead of write(2) for printing
the error messages.
* In addition, added some useful diagnostic messages which were
inspired by the test(1) utility from Seventh Edition Unix.
goto.c:
* Give an error message when standard input is not seekable.
Previously, a label not found error would be produced instead.
fd2.c:
* A new utility and manual page... It is an adaptation of the PWB/Unix
(roughly PWB/1.0 ?) redirect diagnostic output command. The original
source came from the file `spencer_pwb.tar.gz' which can be found at:
http://www.tuhs.org/Archive/PDP-11/Distributions/usdl/
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
patch provided by pancake at phreaker.net in PR 26777
changes (from Debian changelog):
posh (0.3.9) unstable; urgency=medium
* trap builtin now errors when no signals are specified.
closes: #265103.
* Move trap-related regression tests to their own file,
and add one to check for error on "trap 0".
posh (0.3.8) unstable; urgency=high
* Fix tilde expansion thinko introduced in 0.3.4.
posh (0.3.7) unstable; urgency=low
* Remove some cruft left around from ksh functions.
posh (0.3.6) unstable; urgency=low
* Add a better regression test for umask.
* Drop support of ksh88 ":[#%]+"-type trimming.
* Adjust regression tests to make sure ${blah:#blah} gives
an error.
posh (0.3.5) unstable; urgency=low
* Clean unused variables left after 0.3.4.
* Add prebuild target to debian/rules.
* Drop qsort altogether.
posh (0.3.4) unstable; urgency=low
* Fix most of the signedness comparison warnings.
* Remove homedir caching code.
* Switch specials, keywords, aliases, builtins, vars, and funs hashes
to use libc tsearch() and friends.
* Remove old table hash routines.
posh (0.3.3) unstable; urgency=low
* Rename custom table functions to prevent conflicts with
b-tree functions when search.h is included.
* Remove vestigial tracked alias code.
posh (0.3.2) unstable; urgency=low
* Make getn() use strtol().
* Mark unused function parameters to avoid gcc warnings.
posh (0.3.1) unstable; urgency=low
* Use libc's instead of internal qsort.
* Add -W to CFLAGS.
which are the full option names used to set rpath directives for the
linker and the compiler, respectively. In places were we are invoking
the linker, use "${LINKER_RPATH_FLAG} <path>", where the space is
inserted in case the flag is a word, e.g. -rpath. The default values
of *_RPATH_FLAG are set by the compiler/*.mk files, depending on the
compiler that you use. They may be overridden on a ${OPSYS}-specific
basis by setting _OPSYS_LINKER_RPATH_FLAG and _OPSYS_COMPILER_RPATH_FLAG,
respectively. Garbage-collect _OPSYS_RPATH_NAME and _COMPILER_LD_FLAG.
into the bsd.options.mk framework. Instead of appending to
${PKG_OPTIONS_VAR}, it appends to PKG_DEFAULT_OPTIONS. This causes
the default options to be the union of PKG_DEFAULT_OPTIONS and any
old USE_* and FOO_USE_* settings.
This fixes PR pkg/26590.
1.) Only create a dynamically linked "zsh" binary if "MKDYNAMICROOT"
is defined and set to "yes". This way people who still use statically
linked binaries on their root filesystem will get a static binary.
2.) Link the "zsh" binary so that it use "/libexec/ld.elf_so" and
shared libraries from "/lib". It now works without the "/usr"
filesystem being mounted.
dynamic library support on the root partition (e.g. 2.0 and newer). It is
enough that the "zsh" binary does *not* depend on its own shared libraries
which won't be on the root partition and we get a shell with proper I18N
support this way. Approved by Masao Uebayashi.
Changes since zsh version 4.2.0
-------------------------------
- The autoload and related builtins take options -k and -z to indicate
ksh or zsh autoloading style for given functions, making it possible
to mix and match.
- Assignments to associative arrays can use the i and r index flags.
For example,
assoc[(i)alpha*]=bravo
sets the value for the element whose key matches the pattern `alpha*';
assoc[(r)activ*]=passive
sets the value for the element whose current value matches the pattern
`activ*'.
- The glob qualifier F indicates a non-empty directory. Hence *(F)
indicates all subdirectories with entries, *(/^F) means all
subdirectories with no entries.
- fc -p and fc -P provide push/pop for the status of the shell's
history (both internal and using the history file). With automatic
scoping (fc -ap) it becomes easy to use a temporary history in a
function. This has been added to the calculator function zcalc to make
its internal history work more seamlessly.
- A new `try block' and `always block' syntax has been introduced
to make it easier to ensure the shell runs important tidy-up code
in the event of an error. It also runs after a break, continue, or
return, including a return forced by the ERR_RETURN option
(but not an exit, which is immediate). The syntax is:
`{' try-block-list `}' `always' `{' always-block-list `}'
where no newline or semicolon may appear between `}' and `always'.
This is compatible with all previous valid zsh syntax as an `always'
at that point used to be a syntax error. For example,
{ echo Code run in current shell } always { echo Tidy-up code }
- A new zle widget reset-prompt has been added to re-expand the current
prompt. Changes to the variable in use as well as changes in its
expanions are both taken into account. The same effect is now forced by
a job change notification, making the %j prompt escape and %(j..) ternary
expression more useful.
- The zftp module supports ports following the hostname in the normal suffix
notation, `host:port'. This requires IPv6 colon-style addresses to be
specified in suitably quoted square brackets, for example:
zftp open '[f000::baaa]'
zftp open '[f000::baaa]:ftp'
(the two are equivalent).
- Special traps, those that don't correspond to signals, i.e. ZERR, DEBUG
and EXIT are no longer executed inside other traps. This caused
unnecessary confusion if, for example, both DEBUG and EXIT traps
were set. The new behaviour is more compatible with other shells.
- New option TRAPS_ASYNC which if set allows traps to run while the
shell is waiting for a child process. This is the traditional zsh
behaviour; POSIX requires the option to be unset. In sh/ksh
compatibility mode the option is turned off by default and the option
letter -T turns it on, for compatibility with FreeBSD sh.
previous patches disabled it on NetBSD unconditionally. Bump PKGREVISION.
Pointed out by Kibum Han. Thanks to junyoung@ for testing.
OK'ed by schmonz@ and wiz@.
minor changes by me.
XSH is a fast and powerful command-line XML editor. It may be used to
query and modify XML documents. XSH may be used either interactivelly or
for off-line processing (like bash). XPath expressions are used to
select parts of XML document to be processed.
Both system shell and perl are accessible from XSH in a very natural
way. XSH itself is written in Perl and uses XML::LibXML bindings of
gnome-xml2 library in the background level.
36. V6.13.00 - 20040519
35. V6.12.03 - 20040322
34. turn on kanji and dspmbyte by default; add check for utf8 locales,
and turn parsing of that automatically based on $LANG.
33. Fix compilation issue under Windows/NT and charset incorrect patch
(Yoshiyuki Sakakibara)
32. completion additions (Tom Warzeka)
31. compilation fix (Martin Kraemer)
30. V6.12.02 - 20040221
29. Glob completion listing addition (Tom Warzeka)
28. BS2000 bs2cmd builtin. (Martin Kraemer)
27. Fix interrupt resetting code when /etc startup scripts have syntax errors
(Mark A. Grondona)
26. Clarification of kill-ring commands (Per Hedeland)
25. Debian completion additions (Martin Godisch)
24. Japanese character set fixes (Juehiro-san) from debian
23. NLS charset fixes; disabled since they only work with gnu gencat
(Martin Godisch)
22. Fix HPUX >= 11 resource (Jack Cummings)
21. Handle breaksw that jumps out of loops.
20. Revert #16. It causes worse problems.
19. Avoid using execl() because the last NULL does not always promoted to
a pointer because the function is variadic (Harti Brandt)
18. revert ignoreeof to the 6.11.00 behavior and document it (Martin Godisch)
17. do a case insensitive comparison for the multibyte vars (Martin Godisch)
16. don't sigsuspend() for an already exited job
15. glob all arguments in source (Martin Godisch)
14. various debian fixes (Martin Godisch)
13. setenv syntax check revert (Satoshi I. Nozawa)
12. EAGAIN typo (dan harkless)
11. filec compilation issue on hpux (beebe)
10. win32 compilation fixes for O_LARGEFILE (amol)
9. Don't go into an infinite loop when tcgetpgrp() returns an error.
8. Cygwin fixes (Corinna Vinschen)
7. NLS catclose() bug avoidance (KAJIMOTO Masato)
6. V6.12.01 - 20030208
5. Misc NT cleanup. No more GPL code (amol)
4. use strtol() to detect errors in builtin kill (Peter Jeremy)
3. Recognize linux systems on mips* (Maciej W. Rozycki)
2. Enable complete=igncase on unix (Stephen Krauth)
1. Eliminate maxitems (Todd Miller)
This closes PR pkg/25314.
Changes:
* Made various changes to hopefully improve the clarity.
Added COMPATIBILITY, HISTORY, and NOTES sections.
* Made changes to how the shell handles terminating `\' characters
w/ the `-c' and `-t' flags. This is a simple extension of the
same behaviour exhibited when the shell is interactive or when it
executes a command file, the only difference being that where a
terminating `\' character causes the shell to read the next line
of input in an interactive shell or command file, w/ the `-c' and
`-t' flags the shell terminates w/o executing the command line.
* Allow parameter substitution w/ the `-c' and `-t' flags. This
feature is not documented. For example, invoking the shell as
follows allows parameter substitution to take place:
% osh -t one two three
echo $0 $1 $2 $3
-t one two three
* The shell now ignores SIGINT and SIGQUIT when the `-c' or `-t' flag
is used. Thus, asynchronous commands invoked in this way ignore
interrupts as they should.
* Ignore SIGINT and SIGQUIT for all commands started from asynchronous
subshells. For example, `( sleep 300; some_command ) >outfile&' now
ignores `^C' and `^\' as it should.
* Don't ignore SIGINT and SIGQUIT for asynchronous commands started
in command files. If a command file is terminated by one of these
signals, the asynchronous commands should also terminate.
* Reverted a change made to termination reporting in osh-040216 that
was not actually compatible w/ the V6 shell.
* Always terminate the shell when read(2) fails.
This fixes a possible infinite loop.
* Fixed a bug in the parser that caused syntactically incorrect
subshell commands not to be detected as such when preceded by
redirection arguments (e.g., `<infile >outfile ( | )').
This bug was introduced in osh-040216.
* Fixed possible buffer overflows in substparm(); added a new error
message, "Too many characters", and made other changes necessary to
properly deal w/ the new error condition. This problem had been
present since at least osh-020214.
* Made some changes to how globbing is handled by the shell.
Specifically, glob(3) should only be called when an argument contains
unquoted occurrences of any of the glob characters `*', `?', or `['.
Previously, it was being called for every argument of an external
command. This change improves run-time performance slightly as
judged by time(1) and information returned by getrusage(2).
* The above-mentioned change also allows the following compatibility
feature. Added globbing compatibility when the shell is compiled
w/ -DCLONE so that when no matches are found a diagnostic,
"No match", is printed.
Patch provided by Geoff C. Wing in PR 24918
ok'd by uebayasi@
New features between zsh versions 4.0 and 4.2
Configuration:
* upgraded to use autoconf post-2.50
* improved compatibility with other shells through shell options, builtin
arguments and improved builtin option parsing
Syntax and builtins:
* new printf builtin
* `+=' to append to parameters which works for scalars, arrays and (with
pairs) associative arrays.
* enhanced multiple parameter `for' loops: for key value in key1 value1 key2
value2 ... maintaining full compatibility with POSIX syntax.
* Suffix aliases allow the shell to run a command on a file by suffix, e.g
`alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'. Supplied function
zsh-mime-setup uses existing mailcap and mime.types files to set up suitable
aliases. Supplied function pick-web-browser is suitable for finding a browser
to show .html etc. files by suffix alias.
* new option `no_case_glob' for case-insensitive globbing.
Add-on modules and functions:
* zsh/datetime modules makes date formatting and seconds since EPOCH available
inside the shell.
* zsh/net/tcp module provides builtin interface to TCP through ztcp builtin.
Function suite for interactive and script use with expect-style pattern
matching.
* zsh/net/socket module provides zsocket builtin.
* zcalc calculator function with full line editing.
* builtin interface to pcre library
* zsh/zselect module provides zselect builtin as interface to select system call
Completion system:
* general improvements to command and context support, low-level functions,
display code.
* in verbose mode, matches with the same description are grouped
* highly configurable completions for values of specific parameters, specific
redirections for specific commands
* support for bash completion functions (typically zsh native functions are more
powerful where available)
* New completions provided for (some of these may be in later 4.0 releases):
valgrind, tidy, texinfo, infocmp, Java classes, larch, limit, locale
parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange (dch), email
addresses, file system types, Perforce, xsltproc. Plus many others.
Line editor:
* special parameters $PREDISPLAY, $POSTDISPLAY available in function widgets
to configure uneditable text (for narrowing)
* recursive editing
* supplied widgets read-from-minibuffer, replace-string use these features
(more intuitive prompting and argument reading than 4.0)
* access to killed text via $CUTBUFFER and $killring
* supplied highly configurable word widgets forward-word-match etc., can set
what constitutes a word interactively or in startup script (implement
bash-style behaviour, replacing previous bash-* word widgets)
* interface to incremental search via $LASTSEARCH
* better handling of keymaps in zle and widgets
* better support for output from user-defined widgets while zle is active
* tetris game which runs entirely in zle
* several other contributed widgets
Local internal improvements:
* disowned jobs are automatically restarted
* \u and \U print escapes for Unicode
* read -d allows a custom line ending.
* read -t .
* line numbers in error messages and $PS4 output are more consistent
* `=prog' expands only paths, no longer aliases for consistency
* job display in prompts; `jobs' command output can be piped
* prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
* rand48() function in zsh/mathfunc for better randomness in arithmetic
(if the corresponding math library function is present)
* $SECONDS parameter can be made floating point via `typeset -F SECONDS'
for better timing accuracy
* improvements to command line history mechanism
* job table is dynamically sized, preventing overflow (typically seen
previously in complex completions).
* many bugfixes
presence of some strings to decide how to build zsh. This is, of course,
a stupid thing to do, but we must not override config.status to "fix"
this build. This fixes PR 24483.
explicitly calls config.status to generate some Makefiles in certain
directories. This particular package has a need for executing the real
config.status, so we need to avoid overriding it automatically.