Explorar el Código

LibTimeZone: Add an API to retrieve the system's current time zone

This is a wrapper API around the POSIX tzset / tzname information. It
is to help ensure that tzset is invoked before accessing tzname.
Timothy Flynn hace 3 años
padre
commit
8a4ac9c387

+ 12 - 0
Userland/Libraries/LibTimeZone/TimeZone.cpp

@@ -5,6 +5,7 @@
  */
  */
 
 
 #include <LibTimeZone/TimeZone.h>
 #include <LibTimeZone/TimeZone.h>
+#include <time.h>
 
 
 namespace TimeZone {
 namespace TimeZone {
 
 
@@ -19,6 +20,17 @@ enum class TimeZone : u16 {
 };
 };
 #endif
 #endif
 
 
+StringView current_time_zone()
+{
+    static bool initialized_time_zone = false;
+    if (!initialized_time_zone) {
+        initialized_time_zone = true;
+        tzset();
+    }
+
+    return tzname[0];
+}
+
 Optional<TimeZone> __attribute__((weak)) time_zone_from_string([[maybe_unused]] StringView time_zone)
 Optional<TimeZone> __attribute__((weak)) time_zone_from_string([[maybe_unused]] StringView time_zone)
 {
 {
 #if !ENABLE_TIME_ZONE_DATA
 #if !ENABLE_TIME_ZONE_DATA

+ 2 - 0
Userland/Libraries/LibTimeZone/TimeZone.h

@@ -14,6 +14,8 @@
 
 
 namespace TimeZone {
 namespace TimeZone {
 
 
+StringView current_time_zone();
+
 Optional<TimeZone> time_zone_from_string(StringView time_zone);
 Optional<TimeZone> time_zone_from_string(StringView time_zone);
 StringView time_zone_to_string(TimeZone time_zone);
 StringView time_zone_to_string(TimeZone time_zone);
 Optional<StringView> canonicalize_time_zone(StringView time_zone);
 Optional<StringView> canonicalize_time_zone(StringView time_zone);