mirror of
https://github.com/znc/znc.git
synced 2026-07-13 21:31:27 +02:00
Merge commit 'refs/pull/1853/head' of github.com:znc/znc
This commit is contained in:
@@ -585,7 +585,22 @@ timeval CUtils::ParseServerTime(const CString& sTime) {
|
|||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
memset(&tv, 0, sizeof(tv));
|
memset(&tv, 0, sizeof(tv));
|
||||||
if (cp) {
|
if (cp) {
|
||||||
|
char* oldTZ = getenv("TZ");
|
||||||
|
if (oldTZ) oldTZ = strdup(oldTZ);
|
||||||
|
setenv("TZ", "UTC", 1);
|
||||||
|
tzset();
|
||||||
|
|
||||||
tv.tv_sec = mktime(&stm);
|
tv.tv_sec = mktime(&stm);
|
||||||
|
|
||||||
|
// restore old value
|
||||||
|
if (oldTZ) {
|
||||||
|
setenv("TZ", oldTZ, 1);
|
||||||
|
free(oldTZ);
|
||||||
|
} else {
|
||||||
|
unsetenv("TZ");
|
||||||
|
}
|
||||||
|
tzset();
|
||||||
|
|
||||||
CString s_usec(cp);
|
CString s_usec(cp);
|
||||||
if (s_usec.TrimPrefix(".") && s_usec.TrimSuffix("Z")) {
|
if (s_usec.TrimPrefix(".") && s_usec.TrimSuffix("Z")) {
|
||||||
tv.tv_usec = s_usec.ToULong() * 1000;
|
tv.tv_usec = s_usec.ToULong() * 1000;
|
||||||
|
|||||||
@@ -109,6 +109,27 @@ TEST(UtilsTest, ServerTime) {
|
|||||||
CString str3 = CUtils::FormatServerTime(tv3);
|
CString str3 = CUtils::FormatServerTime(tv3);
|
||||||
EXPECT_EQ(str3, "1970-01-01T00:00:00.000Z");
|
EXPECT_EQ(str3, "1970-01-01T00:00:00.000Z");
|
||||||
|
|
||||||
|
if (oldTZ) {
|
||||||
|
setenv("TZ", oldTZ, 1);
|
||||||
|
free(oldTZ);
|
||||||
|
} else {
|
||||||
|
unsetenv("TZ");
|
||||||
|
}
|
||||||
|
tzset();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UtilsTest, ParseServerTime) {
|
||||||
|
char* oldTZ = getenv("TZ");
|
||||||
|
if (oldTZ) oldTZ = strdup(oldTZ);
|
||||||
|
setenv("TZ", "America/Montreal", 1);
|
||||||
|
tzset();
|
||||||
|
|
||||||
|
timeval tv4 = CUtils::ParseServerTime("2011-10-19T16:40:51.620Z");
|
||||||
|
CString str4 = CUtils::FormatServerTime(tv4);
|
||||||
|
EXPECT_EQ(str4, "2011-10-19T16:40:51.620Z");
|
||||||
|
|
||||||
|
|
||||||
if (oldTZ) {
|
if (oldTZ) {
|
||||||
setenv("TZ", oldTZ, 1);
|
setenv("TZ", oldTZ, 1);
|
||||||
free(oldTZ);
|
free(oldTZ);
|
||||||
|
|||||||
Reference in New Issue
Block a user