summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch')
-rw-r--r--app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch b/app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch
new file mode 100644
index 000000000000..5e0de75982a3
--- /dev/null
+++ b/app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch
@@ -0,0 +1,27 @@
+--- 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