mirror of
https://git.freebsd.org/ports.git
synced 2025-05-29 09:26:27 -04:00
completion problem. Submitted by: Chet Ramey <chet@po.CWRU.Edu> Bash PR: http://mail.gnu.org/pipermail/bug-bash/2002-July/004789.html
118 lines
2.9 KiB
C
118 lines
2.9 KiB
C
--- bashline.c.deo Tue May 7 12:52:42 2002
|
|
+++ bashline.c Sun Sep 8 18:17:30 2002
|
|
@@ -1873,10 +1874,6 @@
|
|
}
|
|
}
|
|
|
|
-/* Define NO_FORCE_FIGNORE if you want to match filenames that would
|
|
- otherwise be ignored if they are the only possible matches. */
|
|
-/* #define NO_FORCE_FIGNORE */
|
|
-
|
|
/* If FIGNORE is set, then don't match files with the given suffixes when
|
|
completing filenames. If only one of the possibilities has an acceptable
|
|
suffix, delete the others, else just return and let the completer
|
|
@@ -1901,10 +1898,15 @@
|
|
{
|
|
char **newnames;
|
|
int idx, nidx;
|
|
-#ifdef NO_FORCE_FIGNORE
|
|
char **oldnames;
|
|
int oidx;
|
|
-#endif
|
|
+ char *no_force_fignore;
|
|
+
|
|
+
|
|
+/* Set NO_FORCE_FIGNORE if you want to match filenames that would
|
|
+ otherwise be ignored if they are the only possible matches. */
|
|
+ no_force_fignore = get_string_value ("NO_FORCE_FIGNORE");
|
|
+//fprintf(stderr, ">NO_FORCE_FIGNORE< is [%s]\n", no_force_fignore);
|
|
|
|
/* If there is only one completion, see if it is acceptable. If it is
|
|
not, free it up. In any case, short-circuit and return. This is a
|
|
@@ -1912,13 +1914,12 @@
|
|
if there is only one completion; it is the completion itself. */
|
|
if (names[1] == (char *)0)
|
|
{
|
|
-#ifndef NO_FORCE_FIGNORE
|
|
- if ((*name_func) (names[0]) == 0)
|
|
- {
|
|
- free (names[0]);
|
|
- names[0] = (char *)NULL;
|
|
- }
|
|
-#endif
|
|
+ if (!no_force_fignore)
|
|
+ if ((*name_func) (names[0]) == 0)
|
|
+ {
|
|
+ free (names[0]);
|
|
+ names[0] = (char *)NULL;
|
|
+ }
|
|
return;
|
|
}
|
|
|
|
@@ -1927,10 +1928,11 @@
|
|
for (nidx = 1; names[nidx]; nidx++)
|
|
;
|
|
newnames = strvec_create (nidx + 1);
|
|
-#ifdef NO_FORCE_FIGNORE
|
|
- oldnames = strvec_create (nidx - 1);
|
|
- oidx = 0;
|
|
-#endif
|
|
+ if (no_force_fignore)
|
|
+ {
|
|
+ oldnames = strvec_create (nidx - 1);
|
|
+ oidx = 0;
|
|
+ }
|
|
|
|
newnames[0] = names[0];
|
|
for (idx = nidx = 1; names[idx]; idx++)
|
|
@@ -1938,11 +1940,10 @@
|
|
if ((*name_func) (names[idx]))
|
|
newnames[nidx++] = names[idx];
|
|
else
|
|
-#ifndef NO_FORCE_FIGNORE
|
|
- free (names[idx]);
|
|
-#else
|
|
- oldnames[oidx++] = names[idx];
|
|
-#endif
|
|
+ if (no_force_fignore)
|
|
+ oldnames[oidx++] = names[idx];
|
|
+ else
|
|
+ free (names[idx]);
|
|
}
|
|
|
|
newnames[nidx] = (char *)NULL;
|
|
@@ -1950,21 +1951,23 @@
|
|
/* If none are acceptable then let the completer handle it. */
|
|
if (nidx == 1)
|
|
{
|
|
-#ifndef NO_FORCE_FIGNORE
|
|
- free (names[0]);
|
|
- names[0] = (char *)NULL;
|
|
-#else
|
|
- free (oldnames);
|
|
-#endif
|
|
+ if (no_force_fignore)
|
|
+ free (oldnames);
|
|
+ else
|
|
+ {
|
|
+ free (names[0]);
|
|
+ names[0] = (char *)NULL;
|
|
+ }
|
|
free (newnames);
|
|
return;
|
|
}
|
|
|
|
-#ifdef NO_FORCE_FIGNORE
|
|
- while (oidx)
|
|
- free (oldnames[--oidx]);
|
|
- free (oldnames);
|
|
-#endif
|
|
+ if (no_force_fignore)
|
|
+ {
|
|
+ while (oidx)
|
|
+ free (oldnames[--oidx]);
|
|
+ free (oldnames);
|
|
+ }
|
|
|
|
/* If only one is acceptable, copy it to names[0] and return. */
|
|
if (nidx == 2)
|