On 2025-12-28 10:59, Paul Gilmartin via tz wrote:
ISTR on Linux long ago, a subdirectory,
/usr/share/zoneinfo/right,
which used arguments not POSIX time but TAI.
Was that a local hack, or was it removed,
possibly because of uncertainty of future
leap seconds?

It's still there, as a rarely-used option. By default current TZDB installs two files for Los Angeles:

/usr/share/zoneinfo/America/Los_Angeles
/usr/share/zoneinfo-leaps/America/Los_Angeles

and the latter file uses TAI. You can change the installation default by using 'make REDO=posix_only', 'make REDO=right_only', or 'make REDO=right_posix'; see the Makefile.

Many platforms, like Debian, use an older directory organization, which puts the two Los Angeles files here instead:

/usr/share/zoneinfo/America/Los_Angeles
/usr/share/zoneinfo/right/America/Los_Angeles
/usr/share/zoneinfo/posix/America/Los_Angeles

where the first two names resolve to the same file (or to files with identical contents).

An advantage of the older approach is that one can use 'TZ="right/America/Los_Angeles" to get TAI. A disadvantage is that functions like gmtime no longer work the way people expect; for example, TZ='right/America/Los_Angeles' gets you localtime with leap seconds, but gmtime without leap seconds, which leads to nonsense like this with GNU date:

  $ export TZ=right/America/Los_Angeles
  $ format='%Y-%m-%d %H:%M:%S %::z (%Z)'
  $ date "+$format"; date -u "+$format"
  2025-12-28 18:04:48 -08:00:00 (PST)
  2025-12-29 02:05:15 +00:00:00 (UTC)

so the timestamps make it look like Los Angeles is 8 hours and 27 seconds behind UTC, even though the difference is correctly reported to be 8 hours exactly. This confusion breaks some applications.

This is why TZDB 1998e changed to something more like the current approach; see commit 77e3dfe1a7b7e14e9f252fc628a5d405c35b6444 dated 1998-05-25 13:04:43 -0400 in the development repository. Effectively this means the TAI TZif files are inaccessible unless you use full pathnames in TZ, which I hope means you know the trouble you're getting into.

Perhaps it is time to change the default REDO value in the Makefile to REDO='posix_only', as REDO='posix_right' isn't being used much and when it is used is probably being used incorrectly. Such a change to the default wouldn't affect platforms like Debian that continue to use the pre-1998 approach.

Reply via email to