diff options
-rw-r--r-- | include/inspircd.h | 5 | ||||
-rw-r--r-- | src/coremods/core_info/cmd_time.cpp | 6 | ||||
-rw-r--r-- | src/filelogger.cpp | 5 | ||||
-rw-r--r-- | src/helperfuncs.cpp | 12 | ||||
-rw-r--r-- | src/modules/m_alltime.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_httpd.cpp | 7 |
6 files changed, 18 insertions, 21 deletions
diff --git a/include/inspircd.h b/include/inspircd.h index 0f6a411a3..1b1543e28 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -662,8 +662,11 @@ class CoreExport InspIRCd void Cleanup(); /** 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. + * @return A string representing the given date/time. */ - static std::string TimeString(time_t curtime); + static std::string TimeString(time_t curtime, const char* format = NULL); /** Begin execution of the server. * NOTE: this function NEVER returns. Internally, diff --git a/src/coremods/core_info/cmd_time.cpp b/src/coremods/core_info/cmd_time.cpp index 6a10dc327..95cfb12fd 100644 --- a/src/coremods/core_info/cmd_time.cpp +++ b/src/coremods/core_info/cmd_time.cpp @@ -32,12 +32,8 @@ CmdResult CommandTime::Handle (const std::vector<std::string>& parameters, User if (parameters.size() > 0 && parameters[0] != ServerInstance->Config->ServerName) return CMD_SUCCESS; - time_t local = ServerInstance->Time(); - struct tm* timeinfo = localtime(&local); - const std::string& humanTime = asctime(timeinfo); - user->SendText(":%s %03d %s %s :%s", ServerInstance->Config->ServerName.c_str(), RPL_TIME, user->nick.c_str(), - ServerInstance->Config->ServerName.c_str(), humanTime.c_str()); + ServerInstance->Config->ServerName.c_str(), InspIRCd::TimeString(ServerInstance->Time()).c_str()); return CMD_SUCCESS; } diff --git a/src/filelogger.cpp b/src/filelogger.cpp index edb753a50..5786758da 100644 --- a/src/filelogger.cpp +++ b/src/filelogger.cpp @@ -45,10 +45,7 @@ void FileLogStream::OnLog(LogLevel loglevel, const std::string &type, const std: if (ServerInstance->Time() != LAST) { - time_t local = ServerInstance->Time(); - struct tm *timeinfo = localtime(&local); - - TIMESTR.assign(asctime(timeinfo), 24); + TIMESTR = InspIRCd::TimeString(ServerInstance->Time()); LAST = ServerInstance->Time(); } diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 6316d1e34..9ad481bb8 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -403,7 +403,7 @@ const char* InspIRCd::Format(const char* formatString, ...) return ret; } -std::string InspIRCd::TimeString(time_t curtime) +std::string InspIRCd::TimeString(time_t curtime, const char* format) { #ifdef _WIN32 if (curtime < 0) @@ -424,7 +424,15 @@ std::string InspIRCd::TimeString(time_t curtime) else if (timeinfo->tm_year + 1900 < 1000) timeinfo->tm_year = 0; - return std::string(asctime(timeinfo),24); + // This is the default format used by asctime without the terminating new line. + if (!format) + format = "%a %b %d %H:%M:%S %Y"; + + char buffer[512]; + if (!strftime(buffer, sizeof(buffer), format, timeinfo)) + buffer[0] = '\0'; + + return buffer; } std::string InspIRCd::GenRandomStr(int length, bool printable) diff --git a/src/modules/m_alltime.cpp b/src/modules/m_alltime.cpp index 58f7c4fb5..ceee4abbc 100644 --- a/src/modules/m_alltime.cpp +++ b/src/modules/m_alltime.cpp @@ -31,9 +31,7 @@ class CommandAlltime : public Command CmdResult Handle(const std::vector<std::string> ¶meters, User *user) { - char fmtdate[64]; - time_t now = ServerInstance->Time(); - strftime(fmtdate, sizeof(fmtdate), "%Y-%m-%d %H:%M:%S", gmtime(&now)); + const std::string fmtdate = InspIRCd::TimeString(ServerInstance->Time(), "%Y-%m-%d %H:%M:%S"); 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 dda39afec..efd285f8c 100644 --- a/src/modules/m_httpd.cpp +++ b/src/modules/m_httpd.cpp @@ -185,12 +185,7 @@ class HttpServerSocket : public BufferedSocket WriteData(http_version + " "+ConvToStr(response)+" "+Response(response)+"\r\n"); - time_t local = ServerInstance->Time(); - struct tm *timeinfo = gmtime(&local); - char *date = asctime(timeinfo); - date[strlen(date) - 1] = '\0'; - rheaders.CreateHeader("Date", date); - + rheaders.CreateHeader("Date", InspIRCd::TimeString(ServerInstance->Time(), "%a, %d %b %Y %H:%M:%S GMT")); rheaders.CreateHeader("Server", INSPIRCD_BRANCH); rheaders.SetHeader("Content-Length", ConvToStr(size)); |