public inbox for cygwin-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: glob: perform ignore_case_with_glob on input Date: Wed, 22 Feb 2023 11:21:19 +0000 (GMT) [thread overview] Message-ID: <20230222112119.B4AE93858438@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a51147467e6cf58618433286f93d17043e00b0fc commit a51147467e6cf58618433286f93d17043e00b0fc Author: Corinna Vinschen <corinna@vinschen.de> AuthorDate: Wed Feb 22 10:47:54 2023 +0100 Commit: Corinna Vinschen <corinna@vinschen.de> CommitDate: Wed Feb 22 10:47:54 2023 +0100 Cygwin: glob: perform ignore_case_with_glob on input Rather than converting single chars on the fly to lowercase in case ignore_case_with_glob is set, perform the conversion on the entire input (pattern and filenames). Diff: --- winsup/cygwin/glob.cc | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 2f86e46985d7..64c3507d891e 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -95,8 +95,9 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #include "collate.h" #ifdef __CYGWIN__ -#define CCHAR(c) (ignore_case_with_glob ? towlower (CHAR (c)) : CHAR (c)) #define Cchar(c) (ignore_case_with_glob ? towlower (c) : (c)) +#else +#define Cchar(c) (c) #endif #undef MAXPATHLEN @@ -122,6 +123,7 @@ __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 @@ -252,7 +254,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = wc; + *bufnext++ = Cchar(wc); patnext += clen; } } else { @@ -272,7 +274,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = wc | prot; + *bufnext++ = Cchar(wc) | prot; patnext += clen; } } @@ -779,6 +781,19 @@ 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; @@ -932,7 +947,7 @@ match(Char *name, Char *pat, Char *patend) return(0); break; default: - if (Cchar(*name++) != Cchar(*c)) + if (*name++ != *c) return(0); break; }
reply other threads:[~2023-02-22 11:21 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230222112119.B4AE93858438@sourceware.org \ --to=corinna@sourceware.org \ --cc=cygwin-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).