On Dec 3 19:28, Takashi Yano via Cygwin wrote: > On Fri, 2 Dec 2022 19:40:30 -0800 > Ilya Zakharevich wrote: > > On Wed, Nov 16, 2022 at 04:48:25AM -0800, I wrote: > > > De-quoting (converting the Windows’ command-line into argc/argv) does > > > not remove double quotes if characters not fit for 8-bit (?) are present. > > > > > > To reproduce, do in CMD’s command line: > > > > > > D:\> D:\Programs\cygwin2022\bin\perl -wle "print for @ARGV" . "/i/" > > > "/и/" . > > > . > > > /i/ > > > "/и/" > > > . > > [...] > This certainly seems to be a problem of cygwin1.dll. > > Though I am not sure this is the right thing, I have confirmed > that the following patch solves the issue. > > diff --git a/newlib/libc/locale/lctype.c b/newlib/libc/locale/lctype.c > index 644669765..732d132e1 100644 > --- a/newlib/libc/locale/lctype.c > +++ b/newlib/libc/locale/lctype.c > @@ -25,11 +25,20 @@ > > #define LCCTYPE_SIZE (sizeof(struct lc_ctype_T) / sizeof(char *)) > > +#ifdef __CYGWIN__ > +static char numsix[] = { '\6', '\0'}; > +#else > static char numone[] = { '\1', '\0'}; > +#endif > > const struct lc_ctype_T _C_ctype_locale = { > +#ifdef __CYGWIN__ > + "UTF-8", /* codeset */ > + numsix /* mb_cur_max */ > +#else > "ASCII", /* codeset */ > numone /* mb_cur_max */ > +#endif
Good idea, but this transforms the "C" locale into the "C.UTF-8" locale once and for all. What we're actually missing is a matching _C_utf8_ctype_locale which can be used by Cygwin as default locale setting, AFAICS. I pushed a patch and the test release is rebuilding while I type. Thanks, Corinna -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple