Till Wegmüller
2024-04-07 6ca8c2ef2bffdfec8cc95c049ac3f2230dc6ca82
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
               READLINE PATCH REPORT
               =====================
 
Readline-Release: 8.2
Patch-ID: readline82-009
 
Bug-Reported-by:    Stefan H. Holek <stefan@epy.co.at>
Bug-Reference-ID:    <50F8DA45-B7F3-4DE1-AB94-19AE42649CDC@epy.co.at>
Bug-Reference-URL:    https://lists.gnu.org/archive/html/bug-readline/2022-10/msg00021.html
 
Bug-Description:
 
Fix issue where the directory name portion of the word to be completed (the
part that is passed to opendir()) requires both tilde expansion and dequoting.
Readline only performed tilde expansion in this case, so filename completion
would fail.
 
Patch (apply with `patch -p0'):
 
*** ../readline-8.2-patched/complete.c    2022-04-05 10:47:06.000000000 -0400
--- a/complete.c    2022-10-26 15:08:51.000000000 -0400
***************
*** 2527,2531 ****
        xfree (dirname);
        dirname = temp;
!       tilde_dirname = 1;
      }
  
--- 2527,2532 ----
        xfree (dirname);
        dirname = temp;
!       if (*dirname != '~')
!         tilde_dirname = 1;    /* indicate successful tilde expansion */
      }
  
***************
*** 2546,2554 ****
        users_dirname = savestring (dirname);
      }
!       else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function)
      {
!       /* delete single and double quotes */
        xfree (dirname);
!       dirname = savestring (users_dirname);
      }
        directory = opendir (dirname);
--- 2547,2560 ----
        users_dirname = savestring (dirname);
      }
!       else if (rl_completion_found_quote && rl_filename_dequoting_function)
      {
!       /* We already ran users_dirname through the dequoting function.
!          If tilde_dirname == 1, we successfully performed tilde expansion
!          on dirname. Now we need to reconcile those results. We either
!          just copy the already-dequoted users_dirname or tilde expand it
!          if we tilde-expanded dirname. */
!       temp = tilde_dirname ? tilde_expand (users_dirname) : savestring (users_dirname);
        xfree (dirname);
!       dirname = temp;
      }
        directory = opendir (dirname);
 
*** ../readline-8.2/patchlevel    2013-11-15 08:11:11.000000000 -0500
--- a/patchlevel    2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
  # Do not edit -- exists only for use by patch
  
! 8
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 9