From c3f0210cf6381243f0d4c57d635e2ce77258674b Mon Sep 17 00:00:00 2001 From: fincs Date: Sun, 22 Sep 2019 18:12:28 +0200 Subject: [PATCH] time: Correct timeToPosixTime(WithMyRule) to accept number of timestamps instead of raw byte size --- nx/include/switch/services/time.h | 4 ++-- nx/source/services/time.c | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/nx/include/switch/services/time.h b/nx/include/switch/services/time.h index da3d644f..a76ebd25 100644 --- a/nx/include/switch/services/time.h +++ b/nx/include/switch/services/time.h @@ -65,8 +65,8 @@ Result timeLoadLocationNameList(u32 index, TimeLocationName *location_name_array Result timeLoadTimeZoneRule(const TimeLocationName *name, TimeZoneRule *rule); -Result timeToPosixTime(const TimeZoneRule *rule, const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_size, u32 *timestamp_count); -Result timeToPosixTimeWithMyRule(const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_size, u32 *timestamp_count); +Result timeToPosixTime(const TimeZoneRule *rule, const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_count, u32 *timestamp_count); +Result timeToPosixTimeWithMyRule(const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_count, u32 *timestamp_count); Result timeToCalendarTime(const TimeZoneRule *rule, u64 timestamp, TimeCalendarTime *caltime, TimeCalendarAdditionalInfo *info); Result timeToCalendarTimeWithMyRule(u64 timestamp, TimeCalendarTime *caltime, TimeCalendarAdditionalInfo *info); diff --git a/nx/source/services/time.c b/nx/source/services/time.c index 4e18c4d3..5e4b8531 100644 --- a/nx/source/services/time.c +++ b/nx/source/services/time.c @@ -440,11 +440,14 @@ Result timeToCalendarTimeWithMyRule(u64 timestamp, TimeCalendarTime *caltime, Ti return rc; } -Result timeToPosixTime(const TimeZoneRule *rule, const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_size, u32 *timestamp_count) { +Result timeToPosixTime(const TimeZoneRule *rule, const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_count, u32 *timestamp_count) { + if (!serviceIsActive(&g_timeTimeZoneService)) + return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); + IpcCommand c; ipcInitialize(&c); ipcAddSendBuffer(&c, rule, sizeof(TimeZoneRule), BufferType_Normal); - ipcAddRecvStatic(&c, timestamp_list, timestamp_list_size, 0); + ipcAddRecvStatic(&c, timestamp_list, sizeof(u64)*timestamp_list_count, 0); struct { u64 magic; @@ -478,10 +481,13 @@ Result timeToPosixTime(const TimeZoneRule *rule, const TimeCalendarTime *caltime return rc; } -Result timeToPosixTimeWithMyRule(const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_size, u32 *timestamp_count) { +Result timeToPosixTimeWithMyRule(const TimeCalendarTime *caltime, u64 *timestamp_list, size_t timestamp_list_count, u32 *timestamp_count) { + if (!serviceIsActive(&g_timeTimeZoneService)) + return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); + IpcCommand c; ipcInitialize(&c); - ipcAddRecvStatic(&c, timestamp_list, timestamp_list_size, 0); + ipcAddRecvStatic(&c, timestamp_list, sizeof(u64)*timestamp_list_count, 0); struct { u64 magic;