Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170831215653.GI1627@brightrain.aerifal.cx>
Date: Thu, 31 Aug 2017 17:56:53 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: strftime %Z returning empty string

On Thu, Aug 31, 2017 at 05:12:23PM -0400, jacob@...shcomputing.com wrote:
> On Thu, 31 Aug 2017, A. Wilcox wrote:
> 
> >%Z is a glibc extension.  I don't believe musl supports it.
> 
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html
> 
>     Z       Replaced by the timezone name or abbreviation, or by no bytes
>             if no timezone information exists. [tm_isdst]
> 
> That "if no timezone information exists" is rather useless in my
> eyes. Exists where? Later text suggests that the TZ environment
> variable is relevant.

In order for %Z to reliably be able to print something meaningful, the
struct tm must contain the extension field tm_zone reflecting the zone
to which it applies. Otherwise, there are at least two sources of
ambiguity: there's no indication whether the struct tm contains UTC or
local time, and in the latter case, tm_isdst is insufficient to
disambiguate a zone name, since the TZ (for zoneinfo style TZ) may
contain multiple different historical zones that apply to the
territory rather than just a single daylight and single normal zone
name.

The latter ambiguity could probably be dealt with by trying to
interpret the struct tm fields to obtain an absolute time, then
determine according to the current TZ what zone name was in effect at
that time. But this doesn't disambiguate UTC vs local time.

If further consideration of the issue by standards committees (mainly
Austin Group) determines that there is some behavior that should be
followed to resolve the ambiguity, even if it's not a very nice
behavior, I'll see what we can do in musl to conform to the standard.
But right now it's underspecified and there's really no way to get
meaningful information from a zero-filled struct tm.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.