From: Chet Ramey Date: Sun, 14 Jan 2024 20:20:44 +0000 (-0500) Subject: Readline-8.2 patch 9: fix issue where directory name being completed needs both tilde... X-Git-Tag: readline-8.3-alpha~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3853739c28a9777d30ff65e8448e8f1a2898f3f2;p=thirdparty%2Freadline.git Readline-8.2 patch 9: fix issue where directory name being completed needs both tilde expansion and dequoting --- 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