Additional odd behavior after my upgrade to the latest CYGWIN64 version
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Mar 18 10:32:58 GMT 2024
On Mar 16 16:49, Michael Goldshteyn via Cygwin wrote:
> Cygwin handles (filename) case insensitivity in a very weird way at the
> Windows command prompt:
> ------------------------------
> c:\Users\Michael>set CYGWIN=
>
> c:\Users\Michael>printf "%q " 'a' 'A' "a" "A" a A
> a A a A a A
>
> REM OK, so far so good, but, now:
> c:\Users\Michael>set CYGWIN=glob:ignorecase
>
> C:\Users\Michael>printf "%q " 'a' 'A' "a" "A" a A
> a a a a a A
>
> REM So, if I don't put a command line arg into any sort of quotes, it gets
> lower-cased for cygwin apps (from the Windows command line).
> REM I should also add that there is no file named 'a' or 'A' in the current
> working directory.
>
> REM This behavior, of course, doesn't happen in Cygwin bash:
> ------------------------------
> C:\Users\Michael>bash
> Michael@lambda /cygdrive/c/Users/Michael
> $ echo "$CYGWIN"
> glob:ignorecase
> Michael@lambda /cygdrive/c/Users/Michael
> $ printf "%q " 'a' 'A' "a" "A" a A
> a A a A a A
> $ # Output looks correct, quoted or not
> ------------------------------
> The unsolicited conversion of case for quoted string is very odd, to say
> the least. If you remove the glob:ignorecase from the CYGWIN env var
> definition, use of filenames on Windows with Cygwin tools becomes
> completely case sensitive, which is very undesirable when compared to the
> fact that other Windows tools do not care about file case (i.e., case
> insensitive, but preserving, as MS puts it).
This was an ill-advised optimization attempt in glob. I revert the
patch and pushed the change(*), so this will be fixed in Cygwin 3.5.2.
For the time being, you can also test this by installing the just
building Cygwin test release 3.6.0-0.85.g89afbb8d8af2, which should
be available in an hour or two.
Thanks,
Corinna
(*) https://cygwin.com/cgit/newlib-cygwin/commit/?id=70375b2205
More information about the Cygwin
mailing list