Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Promote server-time formatting to Utils

  • Loading branch information...
commit bbd84a06bfc038ed9e25dcfc8a742bab0afc857a 1 parent 9720711
@jpnurmi jpnurmi authored
Showing with 18 additions and 13 deletions.
  1. +1 −0  include/znc/Utils.h
  2. +1 −13 src/Buffer.cpp
  3. +16 −0 src/Utils.cpp
View
1  include/znc/Utils.h
@@ -82,6 +82,7 @@ class CUtils {
static CString CTime(time_t t, const CString& sTZ);
static CString FormatTime(time_t t, const CString& sFormat, const CString& sTZ);
+ static CString FormatServerTime(const timeval& tv);
static SCString GetTimezones();
private:
View
14 src/Buffer.cpp
@@ -42,19 +42,7 @@ CString CBufLine::GetLine(const CClient& Client, const MCString& msParams) const
if (Client.HasServerTime()) {
msThisParams["text"] = m_sText;
CString sStr = CString::NamedFormat(m_sFormat, msThisParams);
- CString s_msec(m_time.tv_usec / 1000);
- while (s_msec.length() < 3) {
- s_msec = "0" + s_msec;
- }
- // TODO support leap seconds properly
- // TODO support message-tags properly
- struct tm stm;
- memset(&stm, 0, sizeof(stm));
- const time_t secs = m_time.tv_sec; // OpenBSD has tv_sec as int, so explicitly convert it to time_t to make gmtime_r() happy
- gmtime_r(&secs, &stm);
- char sTime[20] = {};
- strftime(sTime, sizeof(sTime), "%Y-%m-%dT%H:%M:%S", &stm);
- return "@time=" + CString(sTime) + "." + s_msec + "Z " + sStr;
+ return "@time=" + CUtils::FormatServerTime(m_time) + " " + sStr;
} else {
msThisParams["text"] = Client.GetUser()->AddTimestamp(m_time.tv_sec, m_sText);
return CString::NamedFormat(m_sFormat, msThisParams);
View
16 src/Utils.cpp
@@ -428,6 +428,22 @@ CString CUtils::FormatTime(time_t t, const CString& sFormat, const CString& sTim
return s;
}
+CString CUtils::FormatServerTime(const timeval& tv) {
+ CString s_msec(tv.tv_usec / 1000);
+ while (s_msec.length() < 3) {
+ s_msec = "0" + s_msec;
+ }
+ // TODO support leap seconds properly
+ // TODO support message-tags properly
+ struct tm stm;
+ memset(&stm, 0, sizeof(stm));
+ const time_t secs = tv.tv_sec; // OpenBSD has tv_sec as int, so explicitly convert it to time_t to make gmtime_r() happy
+ gmtime_r(&secs, &stm);
+ char sTime[20] = {};
+ strftime(sTime, sizeof(sTime), "%Y-%m-%dT%H:%M:%S", &stm);
+ return CString(sTime) + "." + s_msec + "Z";
+}
+
namespace {
void FillTimezones(const CString& sPath, SCString& result, const CString& sPrefix) {
CDir Dir;
Please sign in to comment.
Something went wrong with that request. Please try again.