From 1cf85908164d97dfa385c75b9f817905a8a75e78 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Fri, 13 Jun 2014 00:09:34 +0100 Subject: Add parameter to InspIRCd::TimeString for UTC time formats. Missing doc added by @attilamolnar --- include/inspircd.h | 3 ++- src/helperfuncs.cpp | 4 ++-- src/modules/m_alltime.cpp | 2 +- src/modules/m_httpd.cpp | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/inspircd.h b/include/inspircd.h index 1b1543e28..584a330ba 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -664,9 +664,10 @@ class CoreExport InspIRCd /** Return a time_t as a human-readable string. * @param format The format to retrieve the date/time in. See `man 3 strftime` * for more information. If NULL, "%a %b %d %T %Y" is assumed. + * @param utc True to convert the time to string as-is, false to convert it to local time first. * @return A string representing the given date/time. */ - static std::string TimeString(time_t curtime, const char* format = NULL); + static std::string TimeString(time_t curtime, const char* format = NULL, bool utc = false); /** Begin execution of the server. * NOTE: this function NEVER returns. Internally, diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 9ad481bb8..71fb71cdf 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -403,14 +403,14 @@ const char* InspIRCd::Format(const char* formatString, ...) return ret; } -std::string InspIRCd::TimeString(time_t curtime, const char* format) +std::string InspIRCd::TimeString(time_t curtime, const char* format, bool utc) { #ifdef _WIN32 if (curtime < 0) curtime = 0; #endif - struct tm* timeinfo = localtime(&curtime); + struct tm* timeinfo = utc ? gmtime(&curtime) : localtime(&curtime); if (!timeinfo) { curtime = 0; diff --git a/src/modules/m_alltime.cpp b/src/modules/m_alltime.cpp index ceee4abbc..075064c62 100644 --- a/src/modules/m_alltime.cpp +++ b/src/modules/m_alltime.cpp @@ -31,7 +31,7 @@ class CommandAlltime : public Command CmdResult Handle(const std::vector ¶meters, User *user) { - const std::string fmtdate = InspIRCd::TimeString(ServerInstance->Time(), "%Y-%m-%d %H:%M:%S"); + const std::string fmtdate = InspIRCd::TimeString(ServerInstance->Time(), "%Y-%m-%d %H:%M:%S", true); std::string msg = ":" + ServerInstance->Config->ServerName + " NOTICE " + user->nick + " :System time is " + fmtdate + " (" + ConvToStr(ServerInstance->Time()) + ") on " + ServerInstance->Config->ServerName; diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp index efd285f8c..bf372f34f 100644 --- a/src/modules/m_httpd.cpp +++ b/src/modules/m_httpd.cpp @@ -185,7 +185,7 @@ class HttpServerSocket : public BufferedSocket WriteData(http_version + " "+ConvToStr(response)+" "+Response(response)+"\r\n"); - rheaders.CreateHeader("Date", InspIRCd::TimeString(ServerInstance->Time(), "%a, %d %b %Y %H:%M:%S GMT")); + rheaders.CreateHeader("Date", InspIRCd::TimeString(ServerInstance->Time(), "%a, %d %b %Y %H:%M:%S GMT", true)); rheaders.CreateHeader("Server", INSPIRCD_BRANCH); rheaders.SetHeader("Content-Length", ConvToStr(size)); -- cgit v1.2.3