This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Invalid tm_zone from localtime() when TZ is not set

On May 26 15:54, KOBAYASHI Shinji wrote:
> On Wed, 25 May 2016 22:02:50 +0200, Hans-Bernhard BrÃker wrote:
> > On May 25 11:28, KOBAYASHI Shinji wrote:
> >> The intention of the following code in tzsetwall() should be to pick
> >> up UPPERCASE letters "in ASCII range":
> > Are you sure you're not mixing ASCII with '8-bit character' range there?
> I'm not sure if non-ASCII 8-bit characters are allowed as TZ
> names. I just guessed the intention from the fact isupper() is used,
> and from the description of isupper() man page:
> - isupper is a macro which classifies ASCII integer values by table
>   lookup.
> - It is defined only when isascii(c) is true or c is EOF.
> However, the implementation of isupper() seems to work for 8-bit
> characters even if isascii() is false. Does the man page need some
> changes?
> > A proper solution may have to be more like this:
> >     int mapped = wctob(*src);
> >     /* this call is safe now because of how wctob() works: */
> >     if (isupper(mapped)) {
> >        *dst++ = (unsigned char)mapped;
> >     }
> Thank you for pointing out wctob(). I'm in favor of fixing this way.

I fixed it already in the repo using explicit testing for
L'A' <= wchar <= L'Z', see;h=030d86d04dbd6ae878ff894256c5a465890d5970

> On Wed, 25 May 2016 10:44:30 +0200, Corinna Vinschen wrote:
> > However, testing this with GLibc it turns out that GLibc's towlower does not
> > transform the character but returns 0xff21.  Can anybody explain to me why?  
> It seems that it depends on locale. The man page (on Linux) says:
>   The behavior of towlower() depends on the LC_CTYPE category of the
>   current locale.
> I observed that it returns 0xff41 when LANG=ja_JP.UTF-8, and 0xff21
> when LANG=C.
> Cygwin's implementation (and man page) does not seem to depend on
> locale.

No, it's basically fixed code inside newlib.  I have some code prepared
to update newlib from Unicode 5.2 to Unicode 8.0, but it adds a lot of
extra code.  So many new characters...


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]