Change the timezones to the match the canonical IANA Zone IDs

This commit is contained in:
Michael Lenaghan 2023-07-26 17:48:56 -04:00
parent cc7187cd86
commit 639c459d6a
20 changed files with 82 additions and 57 deletions

View file

@ -19,22 +19,26 @@
STATIC_YOINK("zipos"); STATIC_YOINK("zipos");
STATIC_YOINK("usr/share/zoneinfo/"); STATIC_YOINK("usr/share/zoneinfo/");
STATIC_YOINK("usr/share/zoneinfo/Anchorage"); STATIC_YOINK("usr/share/zoneinfo/America/");
STATIC_YOINK("usr/share/zoneinfo/Berlin"); STATIC_YOINK("usr/share/zoneinfo/America/Anchorage");
STATIC_YOINK("usr/share/zoneinfo/Chicago"); STATIC_YOINK("usr/share/zoneinfo/America/Chicago");
STATIC_YOINK("usr/share/zoneinfo/Denver"); STATIC_YOINK("usr/share/zoneinfo/America/Denver");
STATIC_YOINK("usr/share/zoneinfo/America/Los_Angeles");
STATIC_YOINK("usr/share/zoneinfo/America/New_York");
STATIC_YOINK("usr/share/zoneinfo/Asia/");
STATIC_YOINK("usr/share/zoneinfo/Asia/Jerusalem");
STATIC_YOINK("usr/share/zoneinfo/Asia/Kolkata");
STATIC_YOINK("usr/share/zoneinfo/Asia/Shanghai");
STATIC_YOINK("usr/share/zoneinfo/Asia/Tokyo");
STATIC_YOINK("usr/share/zoneinfo/Australia/");
STATIC_YOINK("usr/share/zoneinfo/Australia/Sydney");
STATIC_YOINK("usr/share/zoneinfo/Europe/");
STATIC_YOINK("usr/share/zoneinfo/Europe/Berlin");
STATIC_YOINK("usr/share/zoneinfo/Europe/London");
STATIC_YOINK("usr/share/zoneinfo/GMT"); STATIC_YOINK("usr/share/zoneinfo/GMT");
STATIC_YOINK("usr/share/zoneinfo/Honolulu"); STATIC_YOINK("usr/share/zoneinfo/Pacific/");
STATIC_YOINK("usr/share/zoneinfo/Jerusalem"); STATIC_YOINK("usr/share/zoneinfo/Pacific/Honolulu");
STATIC_YOINK("usr/share/zoneinfo/Kolkata");
STATIC_YOINK("usr/share/zoneinfo/Los_Angeles");
STATIC_YOINK("usr/share/zoneinfo/London");
STATIC_YOINK("usr/share/zoneinfo/New_York");
STATIC_YOINK("usr/share/zoneinfo/Shanghai");
STATIC_YOINK("usr/share/zoneinfo/Sydney");
STATIC_YOINK("usr/share/zoneinfo/Tokyo");
STATIC_YOINK("usr/share/zoneinfo/UTC"); STATIC_YOINK("usr/share/zoneinfo/UTC");
// clang-format off // clang-format off
/* Convert timestamp from time_t to struct tm. */ /* Convert timestamp from time_t to struct tm. */
/* /*

View file

@ -4,7 +4,13 @@
PKGS += LIBC_TIME PKGS += LIBC_TIME
LIBC_TIME_ARTIFACTS += LIBC_TIME_A LIBC_TIME_ARTIFACTS += LIBC_TIME_A
LIBC_TIME_ZONEINFOS = $(wildcard usr/share/zoneinfo/*) LIBC_TIME_ZONEINFOS = \
$(wildcard usr/share/zoneinfo/*) \
$(wildcard usr/share/zoneinfo/America/*) \
$(wildcard usr/share/zoneinfo/Asia/*) \
$(wildcard usr/share/zoneinfo/Australia/*) \
$(wildcard usr/share/zoneinfo/Europe/*) \
$(wildcard usr/share/zoneinfo/Pacific/*)
LIBC_TIME = $(LIBC_TIME_A_DEPS) $(LIBC_TIME_A) LIBC_TIME = $(LIBC_TIME_A_DEPS) $(LIBC_TIME_A)
LIBC_TIME_A = o/$(MODE)/libc/time/time.a LIBC_TIME_A = o/$(MODE)/libc/time/time.a
LIBC_TIME_A_FILES := $(wildcard libc/time/struct/*) $(wildcard libc/time/*) LIBC_TIME_A_FILES := $(wildcard libc/time/struct/*) $(wildcard libc/time/*)
@ -16,11 +22,16 @@ LIBC_TIME_A_SRCS = \
$(LIBC_TIME_A_SRCS_S) \ $(LIBC_TIME_A_SRCS_S) \
$(LIBC_TIME_A_SRCS_C) $(LIBC_TIME_A_SRCS_C)
LIBC_TIME_A_OBJS = \ LIBC_TIME_A_OBJS = \
o/$(MODE)/usr/share/zoneinfo/.zip.o \ o/$(MODE)/usr/share/zoneinfo/.zip.o \
$(LIBC_TIME_A_SRCS_S:%.S=o/$(MODE)/%.o) \ o/$(MODE)/usr/share/zoneinfo/America/.zip.o \
$(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \ o/$(MODE)/usr/share/zoneinfo/Asia/.zip.o \
$(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \ o/$(MODE)/usr/share/zoneinfo/Australia/.zip.o \
o/$(MODE)/usr/share/zoneinfo/Europe/.zip.o \
o/$(MODE)/usr/share/zoneinfo/Pacific/.zip.o \
$(LIBC_TIME_A_SRCS_S:%.S=o/$(MODE)/%.o) \
$(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \
$(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \
$(LIBC_TIME_ZONEINFOS:%=o/$(MODE)/%.zip.o) $(LIBC_TIME_ZONEINFOS:%=o/$(MODE)/%.zip.o)
LIBC_TIME_A_CHECKS = \ LIBC_TIME_A_CHECKS = \
@ -70,6 +81,16 @@ o/$(MODE)/libc/time/iso8601us.o: private \
o/$(MODE)/usr/share/zoneinfo/.zip.o: \ o/$(MODE)/usr/share/zoneinfo/.zip.o: \
usr/share/zoneinfo usr/share/zoneinfo
o/$(MODE)/usr/share/zoneinfo/America/.zip.o: \
usr/share/zoneinfo/America
o/$(MODE)/usr/share/zoneinfo/Asia/.zip.o: \
usr/share/zoneinfo/Asia
o/$(MODE)/usr/share/zoneinfo/Australia/.zip.o: \
usr/share/zoneinfo/Australia
o/$(MODE)/usr/share/zoneinfo/Europe/.zip.o: \
usr/share/zoneinfo/Europe
o/$(MODE)/usr/share/zoneinfo/Pacific/.zip.o: \
usr/share/zoneinfo/Pacific
o/$(MODE)/libc/time/kmonthname.o: libc/time/kmonthname.S o/$(MODE)/libc/time/kmonthname.o: libc/time/kmonthname.S
@$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $<

View file

@ -30,7 +30,7 @@
#include "libc/x/xiso8601.h" #include "libc/x/xiso8601.h"
STATIC_YOINK("zipos"); STATIC_YOINK("zipos");
STATIC_YOINK("usr/share/zoneinfo/New_York"); STATIC_YOINK("usr/share/zoneinfo/America/New_York");
char testlib_enable_tmp_setup_teardown; char testlib_enable_tmp_setup_teardown;
@ -142,7 +142,7 @@ TEST(dirstream, test) {
TEST(dirstream, zipTest) { TEST(dirstream, zipTest) {
bool foundNewYork = false; bool foundNewYork = false;
const char *path = "/zip/usr/share/zoneinfo/"; const char *path = "/zip/usr/share/zoneinfo/America/";
ASSERT_NE(0, _gc(xiso8601ts(NULL))); ASSERT_NE(0, _gc(xiso8601ts(NULL)));
ASSERT_NE(NULL, (dir = opendir(path))); ASSERT_NE(NULL, (dir = opendir(path)));
while ((ent = readdir(dir))) { while ((ent = readdir(dir))) {
@ -180,6 +180,6 @@ TEST(rewinddir, test) {
} }
TEST(dirstream, zipTest_notDir) { TEST(dirstream, zipTest_notDir) {
ASSERT_EQ(NULL, opendir("/zip/usr/share/zoneinfo/New_York")); ASSERT_EQ(NULL, opendir("/zip/usr/share/zoneinfo/America/New_York"));
ASSERT_EQ(ENOTDIR, errno); ASSERT_EQ(ENOTDIR, errno);
} }

View file

@ -24,7 +24,7 @@
#include "libc/time/time.h" #include "libc/time/time.h"
textstartup static void strftime_test_init(void) { textstartup static void strftime_test_init(void) {
setenv("TZ", "Los_Angeles", true); setenv("TZ", "America/Los_Angeles", true);
} }
const void *const strftime_test_ctor[] initarray = {strftime_test_init}; const void *const strftime_test_ctor[] initarray = {strftime_test_init};
@ -60,7 +60,7 @@ TEST(strftime_100, rfc822_ShakaZuluTime) {
TEST(strftime_201, iso8601_LosAngeles) { TEST(strftime_201, iso8601_LosAngeles) {
int64_t t = 0x5cd04d0e; int64_t t = 0x5cd04d0e;
ASSERT_STREQ("Los_Angeles", getenv("TZ")); ASSERT_STREQ("America/Los_Angeles", getenv("TZ"));
ASSERT_STREQ("2019-05-06T08:04:46PDT", ASSERT_STREQ("2019-05-06T08:04:46PDT",
FormatTime("%Y-%m-%dT%H:%M:%S%Z", localtime(&t))); FormatTime("%Y-%m-%dT%H:%M:%S%Z", localtime(&t)));
} }

View file

@ -300,8 +300,8 @@ class TimeTestCase(unittest.TestCase):
# utc='UTC+0' # utc='UTC+0'
utc = 'UTC' utc = 'UTC'
new_york = 'New_York' new_york = 'America/New_York'
sydney = 'Sydney' sydney = 'Australia/Sydney'
org_TZ = environ.get('TZ',None) org_TZ = environ.get('TZ',None)
try: try:

View file

@ -7071,21 +7071,21 @@ function unix.gmtime(unixts) end
--- ---
--- Your redbean ships with a subset of the time zone database. --- Your redbean ships with a subset of the time zone database.
--- ---
--- - `/zip/usr/share/zoneinfo/Honolulu` Z-10 --- - `/zip/usr/share/zoneinfo/Pacific/Honolulu` Z-10
--- - `/zip/usr/share/zoneinfo/Anchorage` Z-09/-08 --- - `/zip/usr/share/zoneinfo/America/Anchorage` Z-09/-08
--- - `/zip/usr/share/zoneinfo/Los_Angeles` Z-08/-07 --- - `/zip/usr/share/zoneinfo/America/Los_Angeles` Z-08/-07
--- - `/zip/usr/share/zoneinfo/Denver` Z-07/-06 --- - `/zip/usr/share/zoneinfo/America/Denver` Z-07/-06
--- - `/zip/usr/share/zoneinfo/Chicago` Z-06/-05 --- - `/zip/usr/share/zoneinfo/America/Chicago` Z-06/-05
--- - `/zip/usr/share/zoneinfo/New_York` Z-05/-04 --- - `/zip/usr/share/zoneinfo/America/New_York` Z-05/-04
--- - `/zip/usr/share/zoneinfo/UTC` Z+00 --- - `/zip/usr/share/zoneinfo/UTC` Z+00
--- - `/zip/usr/share/zoneinfo/GMT` Z+00 --- - `/zip/usr/share/zoneinfo/GMT` Z+00
--- - `/zip/usr/share/zoneinfo/London` Z+00/+01 --- - `/zip/usr/share/zoneinfo/Europe/London` Z+00/+01
--- - `/zip/usr/share/zoneinfo/Berlin` Z+01/+02 --- - `/zip/usr/share/zoneinfo/Europe/Berlin` Z+01/+02
--- - `/zip/usr/share/zoneinfo/Jerusalem` Z+02/+03 --- - `/zip/usr/share/zoneinfo/Asia/Jerusalem` Z+02/+03
--- - `/zip/usr/share/zoneinfo/Kolkata` Z+05:30 --- - `/zip/usr/share/zoneinfo/Asia/Kolkata` Z+05:30
--- - `/zip/usr/share/zoneinfo/Shanghai` Z+08 --- - `/zip/usr/share/zoneinfo/Asia/Shanghai` Z+08
--- - `/zip/usr/share/zoneinfo/Tokyo` Z+09 --- - `/zip/usr/share/zoneinfo/Asia/Tokyo` Z+09
--- - `/zip/usr/share/zoneinfo/Sydney` Z+10/+11 --- - `/zip/usr/share/zoneinfo/Australia/Sydney` Z+10/+11
--- ---
--- You can control which timezone is used using the `TZ` environment --- You can control which timezone is used using the `TZ` environment
--- variable. If your time zone isn't included in the above list, you --- variable. If your time zone isn't included in the above list, you

View file

@ -4586,21 +4586,21 @@ UNIX MODULE
Your redbean ships with a subset of the time zone database. Your redbean ships with a subset of the time zone database.
- `/zip/usr/share/zoneinfo/Honolulu` Z-10 - `/zip/usr/share/zoneinfo/Pacific/Honolulu` Z-10
- `/zip/usr/share/zoneinfo/Anchorage` Z-09/-08 - `/zip/usr/share/zoneinfo/America/Anchorage` Z-09/-08
- `/zip/usr/share/zoneinfo/Los_Angeles` Z-08/-07 - `/zip/usr/share/zoneinfo/America/Los_Angeles` Z-08/-07
- `/zip/usr/share/zoneinfo/Denver` Z-07/-06 - `/zip/usr/share/zoneinfo/America/Denver` Z-07/-06
- `/zip/usr/share/zoneinfo/Chicago` Z-06/-05 - `/zip/usr/share/zoneinfo/America/Chicago` Z-06/-05
- `/zip/usr/share/zoneinfo/New_York` Z-05/-04 - `/zip/usr/share/zoneinfo/America/New_York` Z-05/-04
- `/zip/usr/share/zoneinfo/UTC` Z+00 - `/zip/usr/share/zoneinfo/UTC` Z+00
- `/zip/usr/share/zoneinfo/GMT` Z+00 - `/zip/usr/share/zoneinfo/GMT` Z+00
- `/zip/usr/share/zoneinfo/London` Z+00/+01 - `/zip/usr/share/zoneinfo/Europe/London` Z+00/+01
- `/zip/usr/share/zoneinfo/Berlin` Z+01/+02 - `/zip/usr/share/zoneinfo/Europe/Berlin` Z+01/+02
- `/zip/usr/share/zoneinfo/Jerusalem` Z+02/+03 - `/zip/usr/share/zoneinfo/Asia/Jerusalem` Z+02/+03
- `/zip/usr/share/zoneinfo/Kolkata` Z+05:30 - `/zip/usr/share/zoneinfo/Asia/Kolkata` Z+05:30
- `/zip/usr/share/zoneinfo/Shanghai` Z+08 - `/zip/usr/share/zoneinfo/Asia/Shanghai` Z+08
- `/zip/usr/share/zoneinfo/Tokyo` Z+09 - `/zip/usr/share/zoneinfo/Asia/Tokyo` Z+09
- `/zip/usr/share/zoneinfo/Sydney` Z+10/+11 - `/zip/usr/share/zoneinfo/Australia/Sydney` Z+10/+11
You can control which timezone is used using the `TZ` environment You can control which timezone is used using the `TZ` environment
variable. If your time zone isn't included in the above list, you variable. If your time zone isn't included in the above list, you