summaryrefslogtreecommitdiff
path: root/shells/bash3
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2002-03-25 03:18:52 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2002-03-25 03:18:52 +0000
commita9b41500db71f988e16c4e23ea95e141fb9c641d (patch)
treed09201faee26a6bde76dc8ce466d867507c990d5 /shells/bash3
parentFix build on 5-CURRENT. (diff)
Make FINGORE gain a brain. If NO_FORCE_FIGNORE is set, and a file in the
FIGNORE list is the only possible match, expand it.
Diffstat (limited to 'shells/bash3')
-rw-r--r--shells/bash3/files/patch-bashline.c118
1 files changed, 118 insertions, 0 deletions
diff --git a/shells/bash3/files/patch-bashline.c b/shells/bash3/files/patch-bashline.c
new file mode 100644
index 000000000000..62f2199612dc
--- /dev/null
+++ b/shells/bash3/files/patch-bashline.c
@@ -0,0 +1,118 @@
+--- bashline.c.orig Mon Nov 5 09:58:59 2001
++++ bashline.c Sun Mar 24 19:15:04 2002
+@@ -1724,10 +1724,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
+@@ -1752,10 +1748,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
+@@ -1763,13 +1764,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;
+ }
+
+@@ -1778,10 +1778,11 @@
+ for (nidx = 1; names[nidx]; nidx++)
+ ;
+ newnames = alloc_array (nidx + 1);
+-#ifdef NO_FORCE_FIGNORE
+- oldnames = alloc_array (nidx - 1);
+- oidx = 0;
+-#endif
++ if (no_force_fignore)
++ {
++ oldnames = alloc_array (nidx - 1);
++ oidx = 0;
++ }
+
+ newnames[0] = names[0];
+ for (idx = nidx = 1; names[idx]; idx++)
+@@ -1789,11 +1790,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;
+@@ -1801,21 +1801,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)