I recently discovered that since 2006, the ICU file icu4c/source/tools/tzcode/icuzones has had a line "Zone Etc/Unknown 0 - Unknown"[1]. Any POSIX-like system that feeds this line into 'zic' might run afoul of the recently-proposed TZDB guideline[2] that Etc/Unknown is reserved and is not used by TZDB. This is because the line will cause Etc/Unknown to be a valid timezone with UT offset zero and abbreviation "Unknown", so that, for example, tzalloc("Etc/Unknown") will succeed instead of failing.

I don't think this is a practical problem, as I don't know of any platform that feeds that icuzones line into zic and thus makes "Etc/Unknown" a valid timezone. However, it might be helpful to add a comment to icuzones about the situation. Proposed ICU patch attached.

I am cc'ing this to Markus Scherer (who added the line) and to Yoshito Umaoka (who most recently updated icuzones), to give them a heads-up on the situation.

[1]: https://github.com/unicode-org/icu/blob/main/icu4c/source/tools/tzcode/icuzones#L17 [2]: https://lists.iana.org/hyperkitty/list/[email protected]/message/5QWH2DCQ6SLY6JFJTDMJQC2LYHTJKB7O/
From 69218353e5e544348c8c0b138e6ab9c2e63c40aa Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Tue, 10 Dec 2024 10:53:14 -0800
Subject: [PATCH] Comment that icuzones should not be fed to zic

---
 icu4c/source/tools/tzcode/icuzones | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/icu4c/source/tools/tzcode/icuzones b/icu4c/source/tools/tzcode/icuzones
index 940b0557acc..2a99c8645b9 100644
--- a/icu4c/source/tools/tzcode/icuzones
+++ b/icu4c/source/tools/tzcode/icuzones
@@ -11,6 +11,10 @@
 # that are in CLDR and also include legacy ICU time zones originally
 # in tz.alias for rataining backward compatibility.
 
+# This file is not intended for use by zic, the TZDB timezone compiler.
+# Feeding it to zic would define Etc/Unknown as a known, valid timezone,
+# whereas Etc/Unknown should stand for an unknown or invalid timezone.
+
 # Add Etc/Unknown, defined by CLDR. Give it Etc/GMT behavior.
 
 # Zone	NAME		GMTOFF	RULES	FORMAT
-- 
2.47.1

Reply via email to