Export of internal Abseil changes
-- 3f99b3ea921adc3607b6f308646db9f893c4d55d by CJ Johnson <johnsoncj@google.com>: Import of CCTZ from GitHub. PiperOrigin-RevId: 272051845 -- 9a62831d763e39936239ff53460ede42c2a73afb by CJ Johnson <johnsoncj@google.com>: Fix spelling errors #384 PiperOrigin-RevId: 272015607 -- b9b51815d52cf17e987636d83adea28c262f3f1a by Abseil Team <absl-team@google.com>: Fix a spelling error aligment -> alignment PiperOrigin-RevId: 271629812 -- 7965acbe7d7b5de18cfb2f2e5c0c18759313a229 by Abseil Team <absl-team@google.com>: Internal build system change. PiperOrigin-RevId: 271476858 -- 0b4508cbeff246c76762f80cbf8753a7414e4023 by Abseil Team <absl-team@google.com>: Internal change PiperOrigin-RevId: 271450732 -- f8cb1aa2196cf2a5e7a474038519da8024090e7f by Samuel Benzaquen <sbenza@google.com>: Internal change PiperOrigin-RevId: 271418668 GitOrigin-RevId: 3f99b3ea921adc3607b6f308646db9f893c4d55d Change-Id: I8743e60d001d42f24cd7494f106eeb2eb07e6526
This commit is contained in:
parent
882b3501a3
commit
debac94cfb
3 changed files with 7 additions and 7 deletions
|
@ -25,7 +25,7 @@ package(
|
||||||
features = ["parse_headers"],
|
features = ["parse_headers"],
|
||||||
)
|
)
|
||||||
|
|
||||||
licenses(["notice"]) # Apache 2.0
|
licenses(["notice"])
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "strings",
|
name = "strings",
|
||||||
|
|
|
@ -150,7 +150,7 @@ namespace cctz {
|
||||||
//
|
//
|
||||||
// All civil-time types have accessors for all six of the civil-time fields:
|
// All civil-time types have accessors for all six of the civil-time fields:
|
||||||
// year, month, day, hour, minute, and second. Recall that fields inferior to
|
// year, month, day, hour, minute, and second. Recall that fields inferior to
|
||||||
// the type's aligment will be set to their minimum valid value.
|
// the type's alignment will be set to their minimum valid value.
|
||||||
//
|
//
|
||||||
// civil_day d(2015, 6, 28);
|
// civil_day d(2015, 6, 28);
|
||||||
// // d.year() == 2015
|
// // d.year() == 2015
|
||||||
|
|
|
@ -631,11 +631,11 @@ class FileZoneInfoSource : public ZoneInfoSource {
|
||||||
std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
|
std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
|
||||||
const std::string& name) {
|
const std::string& name) {
|
||||||
// Use of the "file:" prefix is intended for testing purposes only.
|
// Use of the "file:" prefix is intended for testing purposes only.
|
||||||
if (name.compare(0, 5, "file:") == 0) return Open(name.substr(5));
|
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
|
||||||
|
|
||||||
// Map the time-zone name to a path name.
|
// Map the time-zone name to a path name.
|
||||||
std::string path;
|
std::string path;
|
||||||
if (name.empty() || name[0] != '/') {
|
if (pos == name.size() || name[pos] != '/') {
|
||||||
const char* tzdir = "/usr/share/zoneinfo";
|
const char* tzdir = "/usr/share/zoneinfo";
|
||||||
char* tzdir_env = nullptr;
|
char* tzdir_env = nullptr;
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
|
@ -650,7 +650,7 @@ std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
|
||||||
free(tzdir_env);
|
free(tzdir_env);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
path += name;
|
path.append(name, pos, std::string::npos);
|
||||||
|
|
||||||
// Open the zoneinfo file.
|
// Open the zoneinfo file.
|
||||||
FILE* fp = FOpen(path.c_str(), "rb");
|
FILE* fp = FOpen(path.c_str(), "rb");
|
||||||
|
@ -680,7 +680,7 @@ class AndroidZoneInfoSource : public FileZoneInfoSource {
|
||||||
std::unique_ptr<ZoneInfoSource> AndroidZoneInfoSource::Open(
|
std::unique_ptr<ZoneInfoSource> AndroidZoneInfoSource::Open(
|
||||||
const std::string& name) {
|
const std::string& name) {
|
||||||
// Use of the "file:" prefix is intended for testing purposes only.
|
// Use of the "file:" prefix is intended for testing purposes only.
|
||||||
if (name.compare(0, 5, "file:") == 0) return Open(name.substr(5));
|
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
|
||||||
|
|
||||||
// See Android's libc/tzcode/bionic.cpp for additional information.
|
// See Android's libc/tzcode/bionic.cpp for additional information.
|
||||||
for (const char* tzdata : {"/data/misc/zoneinfo/current/tzdata",
|
for (const char* tzdata : {"/data/misc/zoneinfo/current/tzdata",
|
||||||
|
@ -709,7 +709,7 @@ std::unique_ptr<ZoneInfoSource> AndroidZoneInfoSource::Open(
|
||||||
const std::int_fast32_t length = Decode32(ebuf + 44);
|
const std::int_fast32_t length = Decode32(ebuf + 44);
|
||||||
if (start < 0 || length < 0) break;
|
if (start < 0 || length < 0) break;
|
||||||
ebuf[40] = '\0'; // ensure zone name is NUL terminated
|
ebuf[40] = '\0'; // ensure zone name is NUL terminated
|
||||||
if (strcmp(name.c_str(), ebuf) == 0) {
|
if (strcmp(name.c_str() + pos, ebuf) == 0) {
|
||||||
if (fseek(fp.get(), static_cast<long>(start), SEEK_SET) != 0) break;
|
if (fseek(fp.get(), static_cast<long>(start), SEEK_SET) != 0) break;
|
||||||
return std::unique_ptr<ZoneInfoSource>(new AndroidZoneInfoSource(
|
return std::unique_ptr<ZoneInfoSource>(new AndroidZoneInfoSource(
|
||||||
fp.release(), static_cast<std::size_t>(length), vers));
|
fp.release(), static_cast<std::size_t>(length), vers));
|
||||||
|
|
Loading…
Reference in a new issue