2024-01-05 20:45:50 +01:00
|
|
|
--- bash_completion 2014-03-09 17:38:14 +0000
|
|
|
|
+++ bash_completion 2014-03-13 23:26:44 +0000
|
|
|
|
@@ -536,13 +536,23 @@
|
|
|
|
# @param $2 Name of variable to return result to
|
|
|
|
_quote_readline_by_ref()
|
|
|
|
{
|
|
|
|
- if [[ $1 == \'* ]]; then
|
|
|
|
+ if [ -z "$1" ]; then
|
|
|
|
+ # avoid quoting if empty
|
|
|
|
+ printf -v $2 %s "$1"
|
|
|
|
+ elif [[ $1 == \'* ]]; then
|
|
|
|
# Leave out first character
|
|
|
|
printf -v $2 %s "${1:1}"
|
|
|
|
+ elif [[ $1 == ~* ]]; then
|
|
|
|
+ # avoid escaping first ~
|
|
|
|
+ printf -v $2 ~%q "${1:1}"
|
|
|
|
else
|
|
|
|
printf -v $2 %q "$1"
|
|
|
|
fi
|
|
|
|
|
|
|
|
+ # Replace double escaping ( \\ ) by single ( \ )
|
|
|
|
+ # This happens always when argument is already escaped at cmdline,
|
|
|
|
+ # and passed to this function as e.g.: file\ with\ spaces
|
|
|
|
+ [[ ${!2} == *\\* ]] && printf -v $2 %s "${1//\\\\/\\}"
|
|
|
|
# If result becomes quoted like this: $'string', re-evaluate in order to
|
|
|
|
# drop the additional quoting. See also: http://www.mail-archive.com/
|
2024-01-05 20:45:50 +01:00
|
|
|
# bash-completion-devel@lists.alioth.debian.org/msg01942.html
|