Paul Eggert wrote:
> * Don't make tzname a module, as this mistakenly suggests that tzname is 
> useful. Instead, leave tzname's implementation as internal detail of the 
> nstrftime and c-nstrftime modules. This should be easy.
> 
> * Since tzname should be an internal detail, Gnulib can still use 
> AC_STRUCT_TIMEZONE and have MS-specific code for _tzname that is private 
> to nstrftime and c-nstrftime. This would be a less-intrusive change to 
> Gnulib. This should be relatively easy too.

tzname is used in three places:
  - time_rz,
  - parse-datetime,
  - nstrftime, c-nstrftime.

If it had been in use by only one module (and if it wasn't specified by
POSIX:2018), I would of course have considered to make it an internal detail.

> At the very least we need to document that tzname has significant 
> problems, which I did by installing the attached.

OK. But how about the Linux man-pages?

  * https://man7.org/linux/man-pages/man3/tzset.3p.html
    is derived from POSIX and will be updated for POSIX:2024, but
    POSIX:2024 (p. 2310-2311) does not warn against these 3 variables.

  * https://man7.org/linux/man-pages/man3/tzset.3.html
    does not warn against these 3 variables either.

  * https://man7.org/linux/man-pages/man3/tm.3type.html
    says that "The tm_gmtoff field provides an alternative"
    for systems without the 'timezone' variable. (Yes! Not the
    other way around.)

Will you also write to linux-...@vger.kernel.org ?

> * Support tm_zone and tm_gmtoff instead. They're in most useful systems 
> nowadays, and are standardized in POSIX.1-2024. This would be 
> considerably harder.

I agree that it will be hard to implement this part of POSIX:2024,
because (as we have seen with 'struct stat') overriding a struct is hairy.

The platforms that have tm_zone and tm_gmtoff:
  glibc, musl, macOS, *BSD, Android.
The platforms that don't have them:
  AIX, Solaris, Cygwin, mingw, MSVC.

Is tm_zone well-designed at all? In
  https://man7.org/linux/man-pages/man3/tm.3type.html
I read:
  "tm_zone points to static storage and may be overridden on
   subsequent calls to localtime(3) and similar functions (however,
   this never happens under glibc)."

Bruno




Reply via email to