Hello,

On Sun, Apr 04, 2010 at 11:41:56AM +0930, Matthew Haub wrote:
> The following patch fixes ksh autocomplete support for files within
> directories containing []:`$= characters. This also fixes the problem
> ray@ was experiencing with the back quotes in PR user/6006.

Here's the same patch with an unnecessary if statement removed.

Index: edit.c
===================================================================
RCS file: /cvs/src/bin/ksh/edit.c,v
retrieving revision 1.33
diff -u edit.c
--- edit.c      2 Aug 2007 10:50:25 -0000       1.33
+++ edit.c      4 Apr 2010 04:07:00 -0000
@@ -391,9 +391,20 @@
                        continue;
                }
 
+               /* except for characters that must be quoted to the lexer */
+               if (escaping) {
+                       escaping = 0;
+
+                       switch (toglob[i]) {
+                               case '[':
+                               case '`':
+                               case '$':
+                                       toglob[idx++] = '\\';
+                       }
+               }
+
                toglob[idx] = toglob[i];
                idx++;
-               if (escaping) escaping = 0;
        }
        toglob[idx] = '\0';
 
@@ -847,7 +858,7 @@
        int rval=0;
 
        for (add = 0, wlen = len; wlen - add > 0; add++) {
-               if (strchr("\\$(){}[]?*&;#|<>\"'`", s[add]) || strchr(ifs, 
s[add])) {
+               if (strchr("\\$(){}[]?*&;#|<>\"'=`:", s[add]) || strchr(ifs, 
s[add])) {
                        if (putbuf_func(s, add) != 0) {
                                rval = -1;
                                break;
Index: lex.c
===================================================================
RCS file: /cvs/src/bin/ksh/lex.c,v
retrieving revision 1.44
diff -u lex.c
--- lex.c       3 Jul 2008 17:52:08 -0000       1.44
+++ lex.c       4 Apr 2010 04:07:00 -0000
@@ -289,7 +289,9 @@
                                c = getsc();
                                switch (c) {
                                case '\\':
-                               case '$': case '`':
+                               case '$':
+                               case '`':
+                               case '[':
                                        *wp++ = QCHAR, *wp++ = c;
                                        break;
                                case '"':

Reply via email to