From 11f1f04a4ccc2bc03f6180dfbe9dd553c5706c9a Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 24 Jan 2022 15:08:10 -0500 Subject: [PATCH] LibC: Invoke tzset from time functions required to update time zone info From POSIX: the ctime(), localtime(), mktime(), strftime(), and strftime_l() functions are required to set timezone information as if by calling tzset() ctime is excluded here because it invokes localtime, so there's no need to invoke tzset twice. --- Userland/Libraries/LibC/time.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Userland/Libraries/LibC/time.cpp b/Userland/Libraries/LibC/time.cpp index 53cdd4d5c6..cf99be868a 100644 --- a/Userland/Libraries/LibC/time.cpp +++ b/Userland/Libraries/LibC/time.cpp @@ -145,11 +145,14 @@ static time_t tm_to_time(struct tm* tm, long timezone_adjust_seconds) time_t mktime(struct tm* tm) { + tzset(); return tm_to_time(tm, timezone); } struct tm* localtime(const time_t* t) { + tzset(); + static struct tm tm_buf; return localtime_r(t, &tm_buf); } @@ -209,6 +212,8 @@ char* asctime_r(const struct tm* tm, char* buffer) // FIXME: Some formats are not supported. size_t strftime(char* destination, size_t max_size, const char* format, const struct tm* tm) { + tzset(); + const char wday_short_names[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };