summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2024-01-14 15:20:44 -0500
committerChet Ramey <chet.ramey@case.edu>2024-01-14 15:20:44 -0500
commit3853739c28a9777d30ff65e8448e8f1a2898f3f2 (patch)
tree565a70541cf4e2700cb04851dd94fe1a1746768f
parentcef614441f99b7b6e444ba601d8465a6e88f5a98 (diff)
Readline-8.2 patch 9: fix issue where directory name being completed needs both tilde expansion and dequoting
-rw-r--r--complete.c14
-rw-r--r--patchlevel2
2 files changed, 11 insertions, 5 deletions
diff --git a/complete.c b/complete.c
index e5d224e..c9e0098 100644
--- a/complete.c
+++ b/complete.c
@@ -2526,7 +2526,8 @@ rl_filename_completion_function (const char *text, int state)
temp = tilde_expand (dirname);
xfree (dirname);
dirname = temp;
- tilde_dirname = 1;
+ if (*dirname != '~')
+ tilde_dirname = 1; /* indicate successful tilde expansion */
}
/* We have saved the possibly-dequoted version of the directory name
@@ -2545,11 +2546,16 @@ rl_filename_completion_function (const char *text, int state)
xfree (users_dirname);
users_dirname = savestring (dirname);
}
- else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function)
+ else if (rl_completion_found_quote && rl_filename_dequoting_function)
{
- /* delete single and double quotes */
+ /* 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 = savestring (users_dirname);
+ dirname = temp;
}
directory = opendir (dirname);
diff --git a/patchlevel b/patchlevel
index 6c10f12..c0ac809 100644
--- a/patchlevel
+++ b/patchlevel
@@ -1,3 +1,3 @@
# Do not edit -- exists only for use by patch
-8
+9