diff options
author | Chet Ramey <chet.ramey@case.edu> | 2024-01-14 15:20:44 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2024-01-14 15:20:44 -0500 |
commit | 3853739c28a9777d30ff65e8448e8f1a2898f3f2 (patch) | |
tree | 565a70541cf4e2700cb04851dd94fe1a1746768f | |
parent | cef614441f99b7b6e444ba601d8465a6e88f5a98 (diff) |
Readline-8.2 patch 9: fix issue where directory name being completed needs both tilde expansion and dequoting
-rw-r--r-- | complete.c | 14 | ||||
-rw-r--r-- | patchlevel | 2 |
2 files changed, 11 insertions, 5 deletions
@@ -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); @@ -1,3 +1,3 @@ # Do not edit -- exists only for use by patch -8 +9 |