mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
read -r -d
should not ignore -r
This bug was previously reported in att/ast#37. Ksh ignores `-r` when `read -r -d` is run because when the bit for `D_FLAG` is set, the bit for `R_FLAG` is unset as a side effect of setting `D_FLAG`. The following set of commands fails to print a backslash: $ printf '\\\000' | read -r -d '' $ echo $REPLY The fix for this bug is to set `D_FLAG` with `D_FLAG + 1`, which prevents `R_FLAG` from being unset. This bugfix has been backported from ksh93v- 2013-10-10-alpha. src/cmd/ksh93/bltins/read.c: - Set `D_FLAG` with `D_FLAG + 1` to prevent the bit for `R_FLAG` from being unset. src/cmd/ksh93/tests/builtins.sh: - Add the regression test for `read -r -d` from ksh93v-.
This commit is contained in:
parent
ad349c7668
commit
764acefaf1
4 changed files with 14 additions and 4 deletions
|
@ -692,5 +692,10 @@ EOF
|
|||
PATH=/dev/null
|
||||
whence -q export) || err_exit '`builtin -d` deletes special builtins'
|
||||
|
||||
# ======
|
||||
# `read -r -d` should not ignore `-r`
|
||||
printf '\\\000' | read -r -d ''
|
||||
[[ $REPLY == $'\\' ]] || err_exit "read -r -d '' ignores -r"
|
||||
|
||||
# ======
|
||||
exit $((Errors<125?Errors:125))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue