File: 00-fix_quote_readline_by_ref.patch

package info (click to toggle)
bash-completion 1%3A2.8-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 8,860 kB
  • sloc: exp: 9,759; makefile: 1,104; sh: 261; perl: 56; python: 47; xml: 29; ansic: 7; ruby: 2
file content (44 lines) | stat: -rw-r--r-- 1,533 bytes parent folder | download | duplicates (3)
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