diff options
Diffstat (limited to 'absl/time/internal')
-rw-r--r-- | absl/time/internal/cctz/src/time_zone_lookup.cc | 33 | ||||
-rw-r--r-- | absl/time/internal/cctz/src/tzfile.h | 3 | ||||
-rw-r--r-- | absl/time/internal/cctz/testdata/version | 2 | ||||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla | bin | 1409 -> 1423 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza | bin | 2286 -> 2343 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron | bin | 2314 -> 2371 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem | bin | 2256 -> 2312 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv | bin | 2256 -> 2312 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT | bin | 118 -> 118 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/Israel | bin | 2256 -> 2312 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/UCT | bin | 118 -> 118 bytes | |||
-rw-r--r-- | absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab | 6 |
12 files changed, 27 insertions, 17 deletions
diff --git a/absl/time/internal/cctz/src/time_zone_lookup.cc b/absl/time/internal/cctz/src/time_zone_lookup.cc index fd04e2df3985..a27bfc1353a3 100644 --- a/absl/time/internal/cctz/src/time_zone_lookup.cc +++ b/absl/time/internal/cctz/src/time_zone_lookup.cc @@ -23,6 +23,7 @@ #if defined(__APPLE__) #include <CoreFoundation/CFTimeZone.h> +#include <vector> #endif #include <cstdlib> @@ -121,25 +122,33 @@ time_zone fixed_time_zone(const seconds& offset) { time_zone local_time_zone() { const char* zone = ":localtime"; +#if defined(__ANDROID__) + char sysprop[PROP_VALUE_MAX]; + if (__system_property_get("persist.sys.timezone", sysprop) > 0) { + zone = sysprop; + } +#endif +#if defined(__APPLE__) + std::vector<char> buffer; + CFTimeZoneRef tz_default = CFTimeZoneCopyDefault(); + if (CFStringRef tz_name = CFTimeZoneGetName(tz_default)) { + CFStringEncoding encoding = kCFStringEncodingUTF8; + CFIndex length = CFStringGetLength(tz_name); + buffer.resize(CFStringGetMaximumSizeForEncoding(length, encoding) + 1); + if (CFStringGetCString(tz_name, &buffer[0], buffer.size(), encoding)) { + zone = &buffer[0]; + } + } + CFRelease(tz_default); +#endif // Allow ${TZ} to override to default zone. char* tz_env = nullptr; #if defined(_MSC_VER) _dupenv_s(&tz_env, nullptr, "TZ"); -#elif defined(__APPLE__) - CFTimeZoneRef system_time_zone = CFTimeZoneCopyDefault(); - CFStringRef tz_name = CFTimeZoneGetName(system_time_zone); - tz_env = strdup(CFStringGetCStringPtr(tz_name, CFStringGetSystemEncoding())); - CFRelease(system_time_zone); #else tz_env = std::getenv("TZ"); #endif -#if defined(__ANDROID__) - char sysprop[PROP_VALUE_MAX]; - if (tz_env == nullptr) - if (__system_property_get("persist.sys.timezone", sysprop) > 0) - tz_env = sysprop; -#endif if (tz_env) zone = tz_env; // We only support the "[:]<zone-name>" form. @@ -163,8 +172,6 @@ time_zone local_time_zone() { #if defined(_MSC_VER) free(localtime_env); free(tz_env); -#elif defined(__APPLE__) - free(tz_env); #endif time_zone tz; diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 4485ba55e014..ef3feff0c7d8 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -33,6 +33,9 @@ #define TZDEFRULES "posixrules" #endif /* !defined TZDEFRULES */ + +/* See Internet RFC 8536 for more details about the following format. */ + /* ** Each file begins with. . . */ diff --git a/absl/time/internal/cctz/testdata/version b/absl/time/internal/cctz/testdata/version index 63f58006ee93..149d790c3d12 100644 --- a/absl/time/internal/cctz/testdata/version +++ b/absl/time/internal/cctz/testdata/version @@ -1 +1 @@ -2018i +2019a diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla index 85a7e16e165d..1e94be3d552e 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla +++ b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza index cf54deb8f1d4..32b4ed659ef9 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza +++ b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron index 09c876a669d3..0ed8b0d4bdad 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron +++ b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem index 2d14c9998e9d..93e9f19c7cf8 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem +++ b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv index 2d14c9998e9d..93e9f19c7cf8 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv +++ b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT index a88c4b665b3e..5583f5b0c6e6 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT +++ b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/Israel b/absl/time/internal/cctz/testdata/zoneinfo/Israel index 2d14c9998e9d..93e9f19c7cf8 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/Israel +++ b/absl/time/internal/cctz/testdata/zoneinfo/Israel Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/UCT b/absl/time/internal/cctz/testdata/zoneinfo/UCT index a88c4b665b3e..5583f5b0c6e6 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/UCT +++ b/absl/time/internal/cctz/testdata/zoneinfo/UCT Binary files differdiff --git a/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab b/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab index 4e4a5c3d1dbf..a4ff61a4d321 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +++ b/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab @@ -9,7 +9,7 @@ # All text uses UTF-8 encoding. The columns of the table are as follows: # # 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 N905 (2016-11-15). See: Updates on ISO 3166-1 +# ISO 3166-1 N976 (2018-11-06). See: Updates on ISO 3166-1 # https://isotc.iso.org/livelink/livelink/Open/16944257 # 2. The usual English name for the coded region, # chosen so that alphabetic sorting of subsets produces helpful lists. @@ -166,7 +166,7 @@ ME Montenegro MF St Martin (French) MG Madagascar MH Marshall Islands -MK Macedonia +MK North Macedonia ML Mali MM Myanmar (Burma) MN Mongolia @@ -235,7 +235,7 @@ ST Sao Tome & Principe SV El Salvador SX St Maarten (Dutch) SY Syria -SZ Swaziland +SZ Eswatini (Swaziland) TC Turks & Caicos Is TD Chad TF French Southern & Antarctic Lands |