From 3d30ed65f9e226b7b183b23ce5dba435ec491f0b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 10 Jan 2025 18:28:28 +0300 Subject: DBEVENTINFO::timestamp to become 64-bit integer --- plugins/Import/src/dbrw/dbevents.cpp | 2 +- plugins/Import/src/import.cpp | 10 ++++------ plugins/Import/src/mcontacts.cpp | 4 ++-- plugins/Import/src/patterns.cpp | 6 +++--- plugins/Import/src/textjson.cpp | 18 +++++++++--------- 5 files changed, 19 insertions(+), 21 deletions(-) (limited to 'plugins/Import/src') diff --git a/plugins/Import/src/dbrw/dbevents.cpp b/plugins/Import/src/dbrw/dbevents.cpp index 605dc3683f..86eccc1712 100644 --- a/plugins/Import/src/dbrw/dbevents.cpp +++ b/plugins/Import/src/dbrw/dbevents.cpp @@ -80,7 +80,7 @@ STDMETHODIMP_(BOOL) CDbxSQLite::GetEvent(MEVENT hDbEvent, DBEVENTINFO *dbei) if (sql_step(stmt) == SQLITE_ROW) { const void *blob = sqlite3_column_blob(stmt, 4); - dbei->timestamp = (uint32_t)sqlite3_column_int(stmt, 1); + dbei->iTimestamp = sqlite3_column_int64(stmt, 1); dbei->flags = (uint32_t)sqlite3_column_int(stmt, 2); dbei->eventType = (uint16_t)sqlite3_column_int(stmt, 3); dbei->szModule = mir_strdup((char*)sqlite3_column_text(stmt, 7)); diff --git a/plugins/Import/src/import.cpp b/plugins/Import/src/import.cpp index 82109692f1..3ab25a43f6 100644 --- a/plugins/Import/src/import.cpp +++ b/plugins/Import/src/import.cpp @@ -867,9 +867,7 @@ void CImportBatch::ImportHistory(MCONTACT hContact, PROTOACCOUNT **protocol, int // custom filtering if (!bSkipThis) { - bool bIsSent = (dbei.flags & DBEF_SENT) != 0; - - if (dbei.timestamp < (uint32_t)m_dwSinceDate) + if (dbei.getUnixtime() < (uint32_t)m_dwSinceDate) bSkipThis = true; if (!bSkipThis) { @@ -877,15 +875,15 @@ void CImportBatch::ImportHistory(MCONTACT hContact, PROTOACCOUNT **protocol, int bSkipThis = 1; switch (dbei.eventType) { case EVENTTYPE_MESSAGE: - if ((bIsSent ? IOPT_MSGSENT : IOPT_MSGRECV) & m_iOptions) + if ((dbei.bSent ? IOPT_MSGSENT : IOPT_MSGRECV) & m_iOptions) bSkipThis = false; break; case EVENTTYPE_FILE: - if ((bIsSent ? IOPT_FILESENT : IOPT_FILERECV) & m_iOptions) + if ((dbei.bSent ? IOPT_FILESENT : IOPT_FILERECV) & m_iOptions) bSkipThis = false; break; default: - if ((bIsSent ? IOPT_OTHERSENT : IOPT_OTHERRECV) & m_iOptions) + if ((dbei.bSent ? IOPT_OTHERSENT : IOPT_OTHERRECV) & m_iOptions) bSkipThis = false; break; } diff --git a/plugins/Import/src/mcontacts.cpp b/plugins/Import/src/mcontacts.cpp index 3340b3af77..db0a673f67 100644 --- a/plugins/Import/src/mcontacts.cpp +++ b/plugins/Import/src/mcontacts.cpp @@ -212,7 +212,7 @@ public: dbei->eventType = hdr.eventType; cbLen = hdr.cbBlob; dbei->flags = hdr.flags; - dbei->timestamp = hdr.timestamp; + dbei->iTimestamp = hdr.timestamp; } else if (dwSize == sizeof(MC_MsgHeader64)) { MC_MsgHeader64 hdr; @@ -223,7 +223,7 @@ public: dbei->eventType = hdr.eventType; cbLen = hdr.cbBlob; dbei->flags = hdr.flags; - dbei->timestamp = hdr.timestamp; + dbei->iTimestamp = hdr.timestamp; } else return 1; diff --git a/plugins/Import/src/patterns.cpp b/plugins/Import/src/patterns.cpp index 27d8787088..c64cbad570 100644 --- a/plugins/Import/src/patterns.cpp +++ b/plugins/Import/src/patterns.cpp @@ -564,8 +564,8 @@ public: dbei->flags = DBEF_READ | DBEF_UTF; if (pMsg[0x1A] != 0) dbei->flags |= DBEF_SENT; - dbei->timestamp = RLInteger(&pMsg[0x12]); - dbei->timestamp -= TimeZone_ToLocal(dbei->timestamp) - dbei->timestamp; // deduct time zone offset from timestamp + dbei->iTimestamp = RLInteger(&pMsg[0x12]); + dbei->iTimestamp -= TimeZone_ToLocal(dbei->getUnixtime()) - dbei->getUnixtime(); // deduct time zone offset from timestamp dbei->cbBlob = RLWord(&pMsg[m_iMsgHeaderSize - 2]); dbei->pBlob = (char *)mir_alloc(dbei->cbBlob + 1); memcpy(dbei->pBlob, pMsg + m_iMsgHeaderSize, dbei->cbBlob); @@ -631,7 +631,7 @@ public: st.tm_hour = str2int(substrings[pPattern->iHours]); st.tm_min = str2int(substrings[pPattern->iMinutes]); st.tm_sec = (pPattern->iSeconds) ? str2int(substrings[pPattern->iSeconds]) : 0; - dbei->timestamp = mktime(&st); + dbei->iTimestamp = mktime(&st); if (pPattern->iDirection) if (pPattern->wszOutgoing == substrings[pPattern->iDirection]) diff --git a/plugins/Import/src/textjson.cpp b/plugins/Import/src/textjson.cpp index 3cfa254c8f..c78e031099 100644 --- a/plugins/Import/src/textjson.cpp +++ b/plugins/Import/src/textjson.cpp @@ -112,7 +112,7 @@ public: auto &node = *pNode; dbei->eventType = node["type"].as_int(); - dbei->timestamp = 0; + dbei->iTimestamp = 0; std::string szTime = node["time"].as_string(); if (!szTime.empty()) { char c; @@ -123,7 +123,7 @@ public: st.tm_year -= 1900; time_t tm = mktime(&st); if (tm != -1) - dbei->timestamp = tm; + dbei->iTimestamp = tm; } } else { @@ -136,13 +136,13 @@ public: st.tm_year -= 1900; time_t tm = _mkgmtime(&st); if (tm != -1) - dbei->timestamp = tm; + dbei->iTimestamp = tm; } } } - if (dbei->timestamp == 0) - dbei->timestamp = node["timeStamp"].as_int(); + if (dbei->iTimestamp == 0) + dbei->iTimestamp = node["timeStamp"].as_int(); dbei->flags = 0; std::string szFlags = node["flags"].as_string(); @@ -343,16 +343,16 @@ public: if (mir_strcmp(dbei.szModule, szProto)) pRoot.push_back(JSONNode("module", dbei.szModule)); - pRoot.push_back(JSONNode("timestamp", dbei.timestamp)); + pRoot.push_back(JSONNode("timestamp", dbei.getUnixtime())); wchar_t szTemp[500]; - TimeZone_PrintTimeStamp(UTC_TIME_HANDLE, dbei.timestamp, L"I", szTemp, _countof(szTemp), 0); + TimeZone_PrintTimeStamp(UTC_TIME_HANDLE, dbei.getUnixtime(), L"I", szTemp, _countof(szTemp), 0); pRoot.push_back(JSONNode("isotime", T2Utf(szTemp).get())); std::string flags; - if (dbei.flags & DBEF_SENT) + if (dbei.bSent) flags += "m"; - if (dbei.flags & DBEF_READ) + if (dbei.bRead) flags += "r"; pRoot.push_back(JSONNode("flags", flags)); -- cgit v1.2.3