diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/options.c | 1 | ||||
-rw-r--r-- | Src/pattern.c | 9 | ||||
-rw-r--r-- | Src/zsh.h | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Src/options.c b/Src/options.c index fba021e7d..6ea6290e5 100644 --- a/Src/options.c +++ b/Src/options.c @@ -105,6 +105,7 @@ static struct optname optns[] = { {{NULL, "bsdecho", OPT_EMULATE|OPT_SH}, BSDECHO}, {{NULL, "caseglob", OPT_ALL}, CASEGLOB}, {{NULL, "casematch", OPT_ALL}, CASEMATCH}, +{{NULL, "casepaths", 0}, CASEPATHS}, {{NULL, "cbases", 0}, CBASES}, {{NULL, "cprecedences", OPT_EMULATE|OPT_NONZSH}, CPRECEDENCES}, {{NULL, "cdablevars", OPT_EMULATE}, CDABLEVARS}, diff --git a/Src/pattern.c b/Src/pattern.c index c28f2c9fb..c0e31b78e 100644 --- a/Src/pattern.c +++ b/Src/pattern.c @@ -509,7 +509,7 @@ void patcompstart(void) { patcompcharsset(); - if (isset(CASEGLOB)) + if (isset(CASEGLOB) || isset(CASEPATHS)) patglobflags = 0; else patglobflags = GF_IGNCASE; @@ -632,6 +632,13 @@ patcompile(char *exp, int inflags, char **endexp) p->patmlen = len; p->patnpar = patnpar-1; +#ifndef __CYGWIN__ /* The filesystem itself is case-insensitive on Cygwin */ + if ((patflags & PAT_FILE) && !isset(CASEGLOB) && !(patflags & PAT_PURES)) { + p->globflags |= GF_IGNCASE; + p->globend |= GF_IGNCASE; + } +#endif + if (!strp) { pscan = (Upat)(patout + startoff); diff --git a/Src/zsh.h b/Src/zsh.h index a26b2d05b..d70a4017c 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -2387,6 +2387,7 @@ enum { BSDECHO, CASEGLOB, CASEMATCH, + CASEPATHS, CBASES, CDABLEVARS, CDSILENT, |