1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
From: JuanJo Ciarlante <jjo@canonical.com>
Subject: fix _quote_readline_by_ref to:
- avoid escaping 1st '~' (lp: #1288314)
- avoid quoting if empty, else expansion without args only shows dirs
(lp: #1288031)
- replace double escaping to single (eg for completing file/paths with
spaces)
Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739835
Bug-Debian: https://bugs.debian.org/739835
Forwarded: yes, <5328F418.100@canonical.com>
From: G. Branden Robinson <g.branden.robinson@gmail.com>
Subject: Revert "double escaping" hunk of patch.
- That portion fixed no cited bug.
- It broke extremely common command-substitution cases, e.g.
"grep pattern $(<TAB>)", producing:
bash: unexpected EOF while looking for matching `)'
bash: syntax error: unexpected end of file
Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742466
Bug-Debian: https://bugs.debian.org/742466
---
bash_completion | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
--- a/bash_completion
+++ b/bash_completion
@@ -526,9 +526,15 @@
# @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
|