diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index 6f72d53..8847aee 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -1878,13 +1878,15 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString Jupiter::String out(256); Jupiter::String types(64); char timeStr[256]; + __time64_t tm_Time; for (size_t i = 0; i != entries.size(); i++) { entry = entries.get(i); if (isMatch(type)) { Jupiter::StringS &ip_str = Jupiter::Socket::ntop4(entry->ip); - strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(entry->timestamp)))); + tm_Time = std::chrono::system_clock::to_time_t(entry->timestamp); + strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(tm_Time))); if ((entry->flags & 0x7FFF) == 0) types = " NULL;"_jrs; @@ -2342,13 +2344,15 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::Readable Jupiter::String out(256); Jupiter::String types(64); char timeStr[256]; + __time64_t tm_Time; for (size_t i = 0; i != entries.size(); i++) { entry = entries.get(i); if (isMatch(type)) { Jupiter::StringS &ip_str = Jupiter::Socket::ntop4(entry->ip); - strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(entry->timestamp)))); + tm_Time = std::chrono::system_clock::to_time_t(entry->timestamp); + strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(tm_Time))); if ((entry->flags & 0xFF) == 0) types = " NULL;"_jrs; diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 66be97f..f3b7ff3 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -557,9 +557,12 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } char timeStr[256]; + __time64_t tm_Time; if (last_to_expire[0] != nullptr) // Game ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[0]->timestamp + last_to_expire[0]->length)))); + + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[0]->timestamp + last_to_expire[0]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); if (last_to_expire[0]->length == std::chrono::seconds::zero()) this->forceKickPlayer(player, Jupiter::StringS::Format("You were permanently banned from %.*s on %s for: %.*s", RenX::Server::ban_from_str.size(), RenX::Server::ban_from_str.ptr(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.ptr())); else @@ -571,7 +574,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { if (last_to_expire[1] != nullptr) // Chat ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[1]->timestamp + last_to_expire[1]->length)))); + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[1]->timestamp + last_to_expire[1]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); this->mute(player); if (last_to_expire[1]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently muted on this server on %s for: %.*s", timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.ptr())); @@ -582,7 +586,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } else if (last_to_expire[2] != nullptr) // Bot ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[2]->timestamp + last_to_expire[2]->length)))); + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[2]->timestamp + last_to_expire[2]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); if (last_to_expire[2]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently bot-muted on this server on %s for: %.*s", timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.ptr())); else @@ -590,7 +595,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } if (last_to_expire[3] != nullptr) // Vote ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[3]->timestamp + last_to_expire[3]->length)))); + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[3]->timestamp + last_to_expire[3]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); if (last_to_expire[3]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently vote-muted on this server on %s for: %.*s", timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.ptr())); else @@ -599,7 +605,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) if (last_to_expire[4] != nullptr) // Mine ban { this->mineBan(player); - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[4]->timestamp + last_to_expire[4]->length)))); + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[4]->timestamp + last_to_expire[4]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); if (last_to_expire[4]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently mine-banned on this server on %s for: %.*s", timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.ptr())); else @@ -607,7 +614,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } if (last_to_expire[5] != nullptr) // Ladder ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[5]->timestamp + last_to_expire[5]->length)))); + tm_Time = std::chrono::system_clock::to_time_t(last_to_expire[5]->timestamp + last_to_expire[5]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(tm_Time))); if (last_to_expire[5]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently ladder-banned on this server on %s for: %.*s", timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.ptr())); else diff --git a/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/RenX.ExtraLogging/RenX_ExtraLogging.cpp index a1d38f6..7b5346e 100644 --- a/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -25,7 +25,8 @@ using namespace Jupiter::literals; RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() { - RenX_ExtraLoggingPlugin::day = localtime(std::addressof(time(nullptr)))->tm_yday; + __time64_t tm_Time = time(nullptr); + RenX_ExtraLoggingPlugin::day = localtime(std::addressof(tm_Time))->tm_yday; } RenX_ExtraLoggingPlugin::~RenX_ExtraLoggingPlugin() @@ -76,7 +77,8 @@ int RenX_ExtraLoggingPlugin::think() { if (RenX_ExtraLoggingPlugin::file != nullptr && RenX_ExtraLoggingPlugin::newDayFmt.isNotEmpty()) { - int currentDay = localtime(std::addressof(time(nullptr)))->tm_yday; + __time64_t tm_Time = time(nullptr); + int currentDay = localtime(std::addressof(tm_Time))->tm_yday; if (currentDay != RenX_ExtraLoggingPlugin::day) { RenX_ExtraLoggingPlugin::day = currentDay; diff --git a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp index d76d4d3..b2bb56d 100644 --- a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp +++ b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp @@ -29,7 +29,8 @@ bool RenX_Ladder_Daily_TimePlugin::initialize() this->database.setName(this->config.get("DatabaseName"_jrs, "Daily"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; + __time64_t tm_Time = time(0); + this->last_sorted_day = gmtime(std::addressof(tm_Time))->tm_wday; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +45,8 @@ RenX_Ladder_Daily_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + __time64_t tm_Time = time(0); + tm *tm_ptr = gmtime(std::addressof(tm_Time)); if (pluginInstance.last_sorted_day != tm_ptr->tm_wday) database.erase(); pluginInstance.last_sorted_day = tm_ptr->tm_wday; diff --git a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp index f227b72..56e0bcf 100644 --- a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp +++ b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp @@ -29,7 +29,9 @@ bool RenX_Ladder_Monthly_TimePlugin::initialize() this->database.setName(this->config.get("DatabaseName"_jrs, "Monthly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_month = gmtime(std::addressof(time(0)))->tm_mon; + __time64_t tm_Time; + tm_Time = time(0); + this->last_sorted_month = gmtime(std::addressof(tm_Time))->tm_mon; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +46,8 @@ RenX_Ladder_Monthly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + __time64_t tm_Time = time(0); + tm *tm_ptr = gmtime(std::addressof(tm_Time)); if (pluginInstance.last_sorted_month != tm_ptr->tm_mon) database.erase(); pluginInstance.last_sorted_month = tm_ptr->tm_mon; diff --git a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp index 5f255e6..29cdcd2 100644 --- a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp +++ b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp @@ -29,7 +29,8 @@ bool RenX_Ladder_Weekly_TimePlugin::initialize() this->database.setName(this->config.get("DatabaseName"_jrs, "Weekly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; + __time64_t tm_Time = time(0); + this->last_sorted_day = gmtime(std::addressof(tm_Time))->tm_wday; this->reset_day = this->config.get("ResetDay"_jrs); this->database.OnPreUpdateLadder = OnPreUpdateLadder; @@ -45,7 +46,8 @@ RenX_Ladder_Weekly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + __time64_t tm_Time = time(0); + tm *tm_ptr = gmtime(std::addressof(tm_Time)); if (pluginInstance.last_sorted_day != tm_ptr->tm_wday && tm_ptr->tm_wday == pluginInstance.reset_day) database.erase(); pluginInstance.last_sorted_day = tm_ptr->tm_wday; diff --git a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp index 295abb6..b1da5a8 100644 --- a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp +++ b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp @@ -29,7 +29,8 @@ bool RenX_Ladder_Yearly_TimePlugin::initialize() this->database.setName(this->config.get("DatabaseName"_jrs, "Yearly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_year = gmtime(std::addressof(time(0)))->tm_year; + __time64_t tm_Time = time(0); + this->last_sorted_year = gmtime(std::addressof(tm_Time))->tm_year; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +45,8 @@ RenX_Ladder_Yearly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + __time64_t tm_Time = time(0); + tm *tm_ptr = gmtime(std::addressof(tm_Time)); if (pluginInstance.last_sorted_year != tm_ptr->tm_year) database.erase(); pluginInstance.last_sorted_year = tm_ptr->tm_year;