| --- bash-completion-2.1/bash_completion.orig 2014-03-09 17:38:14 +0000 |
| +++ bash-completion-2.1/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/ |
| # bash-completion-devel@lists.alioth.debian.org/msg01942.html |