Update determine_time_zone according to GNU manual
@@ -292,9 +292,21 @@ impl Environment {
fn determine_time_zone() -> TZResult<TimeZone> {
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")
}
}
