mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
The commit that backported read -a did not add a case label for it
to read.c. This was under the assumption that AST optget(3) would
always convert -a to -A. However, that was only done for first use.
The cause is the short-form options caching mechanism in optget(3).
On the first run, the pre-caching result would be returned, but the
equivalent option (-a) would be cached as if it is its own option,
so on the second and subsequent runs, optget returned 'a' instead
of 'A'. This only happens if no long-form equivalent is present.
Reproducer:
$ read -A foo <<< 'foo bar baz'
$ unset foo
$ read -a foo <<< 'foo bar baz'
$ echo ${foo[0]}
foo bar baz
Expected: foo
src/lib/libast/misc/optget.c,
src/lib/libast/misc/optlib.h:
- [by Martijn Dekker] Implement caching for short-option
equivalents. If a short-form equivalent is found, instead of
caching it as a separate option, cache the equivalent in a new
equiv[] array. Check this when reading the cache and substitute
the main option for the equivalent if one is cached.
src/lib/libcmd/cp.c:
- Fix cp -r/cp -R symlink handling. The -r and -R options sometimes
ignored -P, -L and -H.
- The -r and -R options no longer follow symlinks by default.
src/cmd/ksh93/bltins/whence.c,
src/lib/libcmd/*.c:
- Remove case labels that are redundant now that the optget(3)
caching bug is fixed.
src/cmd/ksh93/tests/libcmd.sh:
- Added. This is the new script for the /opt/ast/bin path-bound
built-ins from libcmd. Other relevant tests are moved into here.
Co-authored-by: Martijn Dekker <martijn@inlv.org>
This commit is contained in:
parent
aa1f8244e6
commit
bea4fd56e8
12 changed files with 400 additions and 210 deletions
10
NEWS
10
NEWS
|
|
@ -2,6 +2,16 @@ This documents significant changes in the 1.0 branch of ksh 93u+m.
|
|||
For full details, see the git log at: https://github.com/ksh93/ksh/tree/1.0
|
||||
Uppercase BUG_* IDs are shell bug IDs as used by the Modernish shell library.
|
||||
|
||||
2022-08-20:
|
||||
|
||||
- Fixed a bug in command line options processing that caused short-form
|
||||
option equivalents on some built-in commands to be ignored after one use,
|
||||
e.g., the new read -a equivalent of read -A (introduced on 2022-02-16).
|
||||
|
||||
- Fixed a bug in the /opt/ast/bin/cp built-in command that caused the -r and
|
||||
-R options to sometimes ignore -P, -L and -H. Additionally, the -r and -R
|
||||
options no longer follow symlinks by default.
|
||||
|
||||
2022-08-16:
|
||||
|
||||
- Fixed an old bug in history expansion (set -H) where any use of the history
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue