From d017bab21ec15e60bb011ac6c2fe369a6db22d9e Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 31 Jul 2024 00:21:23 -0600 Subject: [PATCH] Kernel: added sceKernelConvertLocaltimeToUtc --- src/core/libraries/kernel/time_management.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/core/libraries/kernel/time_management.cpp b/src/core/libraries/kernel/time_management.cpp index bc1617d3..c4854937 100644 --- a/src/core/libraries/kernel/time_management.cpp +++ b/src/core/libraries/kernel/time_management.cpp @@ -214,6 +214,22 @@ int PS4_SYSV_ABI posix_clock_getres(u32 clock_id, OrbisKernelTimespec* res) { return SCE_KERNEL_ERROR_EINVAL; } +int PS4_SYSV_ABI sceKernelConvertLocaltimeToUtc(time_t param_1, int64_t param_2, time_t* seconds, + OrbisKernelTimezone* timezone, int* dst_seconds) { + LOG_INFO(Kernel, "called"); + if (timezone) { + sceKernelGettimezone(timezone); + param_1 -= (timezone->tz_minuteswest + timezone->tz_dsttime) * 60; + if (seconds) + *seconds = param_1; + if (dst_seconds) + *dst_seconds = timezone->tz_dsttime * 60; + } else { + return SCE_KERNEL_ERROR_EINVAL; + } + return SCE_OK; +} + void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym) { clock = std::make_unique(); initial_ptc = clock->GetUptime(); @@ -239,6 +255,7 @@ void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("lLMT9vJAck0", "libkernel", 1, "libkernel", 1, 1, posix_clock_gettime); LIB_FUNCTION("lLMT9vJAck0", "libScePosix", 1, "libkernel", 1, 1, posix_clock_gettime); LIB_FUNCTION("smIj7eqzZE8", "libScePosix", 1, "libkernel", 1, 1, posix_clock_getres); + LIB_FUNCTION("0NTHN1NKONI", "libkernel", 1, "libkernel", 1, 1, sceKernelConvertLocaltimeToUtc); } } // namespace Libraries::Kernel