Merge pull request #10797 from lat9nq/tzdb-patch
time: Various time zone fixes
This commit is contained in:
commit
6e293be20b
9 changed files with 85 additions and 48 deletions
|
@ -15,7 +15,7 @@ namespace FileSys::SystemArchive {
|
|||
const static std::map<std::string, const std::map<const char*, const std::vector<u8>>&>
|
||||
tzdb_zoneinfo_dirs = {{"Africa", NxTzdb::africa},
|
||||
{"America", NxTzdb::america},
|
||||
{"Antartica", NxTzdb::antartica},
|
||||
{"Antarctica", NxTzdb::antarctica},
|
||||
{"Arctic", NxTzdb::arctic},
|
||||
{"Asia", NxTzdb::asia},
|
||||
{"Atlantic", NxTzdb::atlantic},
|
||||
|
|
|
@ -849,8 +849,9 @@ static Result CreateCalendarTime(s64 time, int gmt_offset, CalendarTimeInternal&
|
|||
static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
|
||||
CalendarTimeInternal& calendar_time,
|
||||
CalendarAdditionalInfo& calendar_additional_info) {
|
||||
if ((rules.go_ahead && time < rules.ats[0]) ||
|
||||
(rules.go_back && time > rules.ats[rules.time_count - 1])) {
|
||||
ASSERT(rules.go_ahead ? rules.time_count > 0 : true);
|
||||
if ((rules.go_back && time < rules.ats[0]) ||
|
||||
(rules.go_ahead && time > rules.ats[rules.time_count - 1])) {
|
||||
s64 seconds{};
|
||||
if (time < rules.ats[0]) {
|
||||
seconds = rules.ats[0] - time;
|
||||
|
|
|
@ -112,20 +112,14 @@ void ITimeZoneService::LoadTimeZoneRule(HLERequestContext& ctx) {
|
|||
LOG_DEBUG(Service_Time, "called, location_name={}", location_name);
|
||||
|
||||
TimeZone::TimeZoneRule time_zone_rule{};
|
||||
if (const Result result{
|
||||
time_zone_content_manager.LoadTimeZoneRule(time_zone_rule, location_name)};
|
||||
result != ResultSuccess) {
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
return;
|
||||
}
|
||||
const Result result{time_zone_content_manager.LoadTimeZoneRule(time_zone_rule, location_name)};
|
||||
|
||||
std::vector<u8> time_zone_rule_outbuffer(sizeof(TimeZone::TimeZoneRule));
|
||||
std::memcpy(time_zone_rule_outbuffer.data(), &time_zone_rule, sizeof(TimeZone::TimeZoneRule));
|
||||
ctx.WriteBuffer(time_zone_rule_outbuffer);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
rb.Push(result);
|
||||
}
|
||||
|
||||
void ITimeZoneService::ToCalendarTime(HLERequestContext& ctx) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue