Jelajahi Sumber

Update determine_time_zone according to GNU manual

PatriotRossii 4 tahun lalu
induk
melakukan
57cf0f1b23
1 mengubah file dengan 15 tambahan dan 3 penghapusan
  1. 15 3
      src/output/table.rs

+ 15 - 3
src/output/table.rs

@@ -292,9 +292,21 @@ impl Environment {
 
 
 fn determine_time_zone() -> TZResult<TimeZone> {
 fn determine_time_zone() -> TZResult<TimeZone> {
     if let Ok(file) = env::var("TZ") {
     if let Ok(file) = env::var("TZ") {
-        TimeZone::from_file(format!("/usr/share/zoneinfo/{}", file))
-    }
-    else {
+        TimeZone::from_file({
+            if file.starts_with("/") {
+                file
+            } else {
+                format!("/usr/share/zoneinfo/{}", {
+                    if file.starts_with(":") {
+                        // Unwrap is panic-free here because we've checked if file starts with colon
+                        file.strip_prefix(":").unwrap()
+                    } else {
+                        file.as_str()
+                    }
+                })
+            }
+        })
+    } else {
         TimeZone::from_file("/etc/localtime")
         TimeZone::from_file("/etc/localtime")
     }
     }
 }
 }