]> sourceware.org Git - newlib-cygwin.git/commitdiff
Revert "Cygwin: glob: perform ignore_case_with_glob on input"
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 18 Mar 2024 09:50:30 +0000 (10:50 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 18 Mar 2024 10:10:20 +0000 (11:10 +0100)
This reverts commit a51147467e6cf58618433286f93d17043e00b0fc.

Dumb thinko on my part.  What was supposed to be an optimization
actually broke caseinsensitive globbing in that the entire input
of globbed expressions were downcased.

Drop the unused CCHAR() macro nevertheless.

Fixes: a51147467e6cf ("Cygwin: glob: perform ignore_case_with_glob on input")
Reported-by: Michael Goldshteyn <mgold10000@gmail.com>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/glob.cc
winsup/cygwin/release/3.5.2

index 4730d09f559045c88dd0270d586cf12db9b78b68..90ec473aea55d6831df97fd62117aa76da514d97 100644 (file)
@@ -96,8 +96,6 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex
 
 #ifdef __CYGWIN__
 #define Cchar(c)       (ignore_case_with_glob ? towlower (c) : (c))
-#else
-#define Cchar(c)       (c)
 #endif
 
 #undef MAXPATHLEN
@@ -123,7 +121,6 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex
 #define        SLASH           '/'
 #define        COMMA           ','
 
-#undef DEBUG /* never define */
 #ifndef DEBUG
 
 #define        M_QUOTE         0x40000000U
@@ -251,7 +248,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int
                                return (GLOB_NOMATCH);
                        else if (clen == 0)
                                break;
-                       *bufnext++ = Cchar(wc);
+                       *bufnext++ = wc;
                        patnext += clen;
                }
        } else {
@@ -271,7 +268,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int
                                return (GLOB_NOMATCH);
                        else if (clen == 0)
                                break;
-                       *bufnext++ = Cchar(wc) | prot;
+                       *bufnext++ = wc | prot;
                        patnext += clen;
                }
        }
@@ -772,19 +769,6 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last,
                                break;
                        sc += clen;
                }
-#ifdef __CYGWIN__
-               if (ignore_case_with_glob) {
-                       wint_t lower_path[MAXPATHLEN];
-                       wint_t *lp = lower_path, *sp = pathend;
-
-                       while ((*lp++ = towlower(*sp++)))
-                               ;
-                       if (!match(lower_path, pattern, restpattern)) {
-                               *pathend = EOS;
-                               continue;
-                       }
-               } else
-#endif
                if (!match(pathend, pattern, restpattern)) {
                        *pathend = EOS;
                        continue;
@@ -938,7 +922,7 @@ match(Char *name, Char *pat, Char *patend)
                                return(0);
                        break;
                default:
-                       if (*name++ != *c)
+                       if (Cchar(*name++) != Cchar(*c))
                                return(0);
                        break;
                }
index 449047d9c27617771af897e4225314a4f71df860..32137c2e6807c3a3a141a0f2a3cb48013a42ac15 100644 (file)
@@ -20,3 +20,7 @@ Fixes:
 
 - Don't skip inadvertently some local SAM accounts on domain member
   machines.
+
+- Revert ill-advised optimization of glob(3) in case of caseinsensitive
+  globbing.
+  Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255675.html
This page took 0.034984 seconds and 5 git commands to generate.