diff options
author | George Hazan <george.hazan@gmail.com> | 2024-01-19 15:44:57 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-01-19 15:44:57 +0300 |
commit | 010952c5c2dde278a024f6876e8189b949ea5dcf (patch) | |
tree | 06d2a2cadd982b4c742e4d839d7c1924faefc351 /src/mir_app | |
parent | b509e969b7e5e6991c0590cbe43282f219bcc2c1 (diff) |
the ancient atavism extincted: PROTORECVFILE structure with its own set of flags
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/db_events.cpp | 6 | ||||
-rw-r--r-- | src/mir_app/src/file.cpp | 52 | ||||
-rw-r--r-- | src/mir_app/src/file.h | 2 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 5 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 5 | ||||
-rw-r--r-- | src/mir_app/src/netlib_http.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/proto_chains.cpp | 4 | ||||
-rw-r--r-- | src/mir_app/src/proto_interface.cpp | 4 | ||||
-rw-r--r-- | src/mir_app/src/proto_internal.cpp | 4 | ||||
-rw-r--r-- | src/mir_app/src/protocols.cpp | 2 |
10 files changed, 30 insertions, 56 deletions
diff --git a/src/mir_app/src/db_events.cpp b/src/mir_app/src/db_events.cpp index e4296816b1..f8e34191de 100644 --- a/src/mir_app/src/db_events.cpp +++ b/src/mir_app/src/db_events.cpp @@ -331,6 +331,12 @@ wchar_t* DB::EventInfo::getString(const char *str) const /////////////////////////////////////////////////////////////////////////////////////////
// File blob helper
+DB::FILE_BLOB::FILE_BLOB(void *pUserInfo, const char *pszName, const char *pszDescr, bool bUtf) :
+ m_wszFileName(bUtf ? mir_utf8decodeW(pszName) : mir_a2u(pszName)),
+ m_wszDescription(bUtf ? mir_utf8decodeW(pszDescr) : mir_a2u(pszDescr)),
+ m_pUserInfo(pUserInfo)
+{}
+
DB::FILE_BLOB::FILE_BLOB(const wchar_t *pwszName, const wchar_t *pwszDescr) :
m_wszFileName(mir_wstrdup(pwszName)),
m_wszDescription(mir_wstrdup(pwszDescr))
diff --git a/src/mir_app/src/file.cpp b/src/mir_app/src/file.cpp index 4be92ea9be..7410ac05f4 100644 --- a/src/mir_app/src/file.cpp +++ b/src/mir_app/src/file.cpp @@ -211,58 +211,20 @@ INT_PTR openRecDir(WPARAM, LPARAM) ///////////////////////////////////////////////////////////////////////////////////////// -MEVENT Proto_RecvFile(MCONTACT hContact, PROTORECVFILE *pre) +MEVENT Proto_RecvFile(MCONTACT hContact, DB::FILE_BLOB &blob, DB::EventInfo &dbei) { - if (!pre || !pre->fileCount) - return 0; - - bool bSilent = (pre->dwFlags & PRFF_SILENT) != 0; - bool bSent = (pre->dwFlags & PRFF_SENT) != 0; - bool bRead = (pre->dwFlags & PRFF_READ) != 0; + bool bSilent = (dbei.flags & DBEF_TEMPORARY) != 0; + bool bSent = (dbei.flags & DBEF_SENT) != 0; + bool bRead = (dbei.flags & DBEF_READ) != 0; - DB::EventInfo dbei; dbei.szModule = Proto_GetBaseAccountName(hContact); - dbei.timestamp = pre->timestamp; - dbei.szId = pre->szId; - dbei.szUserId = pre->szUserId; - dbei.szReplyId = pre->szReplyId; dbei.eventType = EVENTTYPE_FILE; - dbei.flags = DBEF_UTF; - if (bSent) - dbei.flags |= DBEF_SENT; - if (bRead) - dbei.flags |= DBEF_READ; + dbei.flags = (dbei.flags & ~DBEF_TEMPORARY) | DBEF_UTF; CMStringW wszFiles, wszDescr; - if ((pre->dwFlags & PRFF_UNICODE) == PRFF_UNICODE) { - for (int i = 0; i < pre->fileCount; i++) { - if (i != 0) - wszFiles.AppendChar(','); - wszFiles.Append(pre->files.w[i]); - } - - wszDescr = pre->descr.w; - } - else { - bool bUtf = (pre->dwFlags & PRFF_UTF) != 0; - - for (int i = 0; i < pre->fileCount; i++) { - if (i != 0) - wszFiles.AppendChar(','); - - if (bUtf) - wszFiles.Append(Utf2T(pre->files.a[i])); - else - wszFiles.Append(_A2T(pre->files.a[i])); - } - - wszDescr = (bUtf) ? Utf2T(pre->descr.a).get() : _A2T(pre->descr.a); - } - - DB::FILE_BLOB blob(wszFiles, wszDescr); if (auto *ppro = Proto_GetContactInstance(hContact)) - ppro->OnReceiveOfflineFile(blob, pre->pUserInfo); + ppro->OnReceiveOfflineFile(blob, blob.getUserInfo()); blob.write(dbei); MEVENT hdbe = db_event_add(hContact, &dbei); @@ -273,7 +235,7 @@ MEVENT Proto_RecvFile(MCONTACT hContact, PROTORECVFILE *pre) CLISTEVENT cle = {}; cle.hContact = hContact; cle.hDbEvent = hdbe; - cle.lParam = LPARAM(pre->pUserInfo); + cle.lParam = LPARAM(blob.getUserInfo()); if (!bSilent && File::bAutoAccept && Contact::OnList(hContact)) LaunchRecvDialog(&cle); diff --git a/src/mir_app/src/file.h b/src/mir_app/src/file.h index a0d3937872..28ce186397 100644 --- a/src/mir_app/src/file.h +++ b/src/mir_app/src/file.h @@ -68,7 +68,7 @@ struct FileDlgData : public MZeroedObject }; // file.c -MEVENT Proto_RecvFile(MCONTACT hContact, PROTORECVFILE *pre); +MEVENT Proto_RecvFile(MCONTACT hContact, DB::FILE_BLOB &blob, DB::EventInfo &dbei); // filerecv.c void LaunchRecvDialog(CLISTEVENT *cle); diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 20d41c159c..1fa9ad6573 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -54,7 +54,7 @@ Button_SetSkin_IcoLib @24 ?OnProtoRefresh@CProtoIntDlgBase@@MAEXIJ@Z @55 NONAME
?ProtoBroadcastAck@PROTO_INTERFACE@@QAEHIHHPAXJ@Z @56 NONAME
?RecvContacts@PROTO_INTERFACE@@UAEHIPAUPROTORECVEVENT@@@Z @58 NONAME
-?RecvFile@PROTO_INTERFACE@@UAEIIPAUPROTORECVFILE@@@Z @59 NONAME
+?RecvFile@PROTO_INTERFACE@@UAEIIAAVFILE_BLOB@DB@@AAVEventInfo@3@@Z @59 NONAME
?RecvMsg@PROTO_INTERFACE@@UAEIIPAUPROTORECVEVENT@@@Z @60 NONAME
?SearchAdvanced@PROTO_INTERFACE@@UAEPAXPAUHWND__@@@Z @62 NONAME
?SearchBasic@PROTO_INTERFACE@@UAEPAXPB_W@Z @63 NONAME
@@ -960,3 +960,6 @@ Netlib_HttpResult @1096 ?SetData@MHttpRequest@@QAEXPBXI@Z @1097 NONAME
?DeleteHeader@MHttpHeaders@@QAEXPBD@Z @1098 NONAME
_Netlib_DownloadFile@20 @1099 NONAME
+??0FILE_BLOB@DB@@QAE@PAXPBD1_N@Z @1100 NONAME
+?getUserInfo@FILE_BLOB@DB@@QBEPAXXZ @1101 NONAME
+?setUserInfo@FILE_BLOB@DB@@QAEXPAX@Z @1102 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 5761132572..6b2391f2cb 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -54,7 +54,7 @@ Button_SetSkin_IcoLib @24 ?OnProtoRefresh@CProtoIntDlgBase@@MEAAX_K_J@Z @55 NONAME
?ProtoBroadcastAck@PROTO_INTERFACE@@QEAA_JIHHPEAX_J@Z @56 NONAME
?RecvContacts@PROTO_INTERFACE@@UEAAHIPEAUPROTORECVEVENT@@@Z @58 NONAME
-?RecvFile@PROTO_INTERFACE@@UEAAIIPEAUPROTORECVFILE@@@Z @59 NONAME
+?RecvFile@PROTO_INTERFACE@@UEAAIIAEAVFILE_BLOB@DB@@AEAVEventInfo@3@@Z @59 NONAME
?RecvMsg@PROTO_INTERFACE@@UEAAIIPEAUPROTORECVEVENT@@@Z @60 NONAME
?SearchAdvanced@PROTO_INTERFACE@@UEAAPEAXPEAUHWND__@@@Z @62 NONAME
?SearchBasic@PROTO_INTERFACE@@UEAAPEAXPEB_W@Z @63 NONAME
@@ -960,3 +960,6 @@ Netlib_HttpResult @1090 ?SetData@MHttpRequest@@QEAAXPEBX_K@Z @1091 NONAME
?DeleteHeader@MHttpHeaders@@QEAAXPEBD@Z @1092 NONAME
Netlib_DownloadFile @1093 NONAME
+??0FILE_BLOB@DB@@QEAA@PEAXPEBD1_N@Z @1094 NONAME
+?getUserInfo@FILE_BLOB@DB@@QEBAPEAXXZ @1095 NONAME
+?setUserInfo@FILE_BLOB@DB@@QEAAXPEAX@Z @1096 NONAME
diff --git a/src/mir_app/src/netlib_http.cpp b/src/mir_app/src/netlib_http.cpp index de0a5255cd..cfe28998f1 100644 --- a/src/mir_app/src/netlib_http.cpp +++ b/src/mir_app/src/netlib_http.cpp @@ -1150,7 +1150,7 @@ void MFileChunkStorage::apply(MHttpResponse *nlhr) bool MFileChunkStorage::updateChunk(const void *pData, size_t cbLen)
{
- if (cbLen != _write(fileId, pData, unsigned(cbLen))) {
+ if (cbLen != (unsigned)_write(fileId, pData, unsigned(cbLen))) {
_close(fileId);
fileId = -1;
return false;
diff --git a/src/mir_app/src/proto_chains.cpp b/src/mir_app/src/proto_chains.cpp index 707e8996f9..315ad6ff2b 100644 --- a/src/mir_app/src/proto_chains.cpp +++ b/src/mir_app/src/proto_chains.cpp @@ -105,10 +105,10 @@ MIR_APP_DLL(INT_PTR) Proto_ChainRecv(int iOrder, CCSDATA *ccs) for (int i = iOrder - 1; i >= 0; i--)
if ((ret = CallProtoService(g_arFilters[i]->szName, ccs->szProtoService, i + 1, (LPARAM)ccs)) != CALLSERVICE_NOTFOUND)
- //chain was started, exit
+ // chain was started, exit
return ret;
- //end of chain, call network protocol again
+ // end of chain, call network protocol again
char szProto[40];
if (GetProtocolP(ccs->hContact, szProto, sizeof(szProto)))
return 1;
diff --git a/src/mir_app/src/proto_interface.cpp b/src/mir_app/src/proto_interface.cpp index 42584b0f86..31f04aaf0d 100644 --- a/src/mir_app/src/proto_interface.cpp +++ b/src/mir_app/src/proto_interface.cpp @@ -204,9 +204,9 @@ int PROTO_INTERFACE::RecvContacts(MCONTACT, PROTORECVEVENT*) return 1; // error
}
-MEVENT PROTO_INTERFACE::RecvFile(MCONTACT hContact, PROTORECVFILE *pre)
+MEVENT PROTO_INTERFACE::RecvFile(MCONTACT hContact, DB::FILE_BLOB &blob, DB::EventInfo &dbei)
{
- return Proto_RecvFile(hContact, pre);
+ return Proto_RecvFile(hContact, blob, dbei);
}
MEVENT PROTO_INTERFACE::RecvMsg(MCONTACT hContact, PROTORECVEVENT *pre)
diff --git a/src/mir_app/src/proto_internal.cpp b/src/mir_app/src/proto_internal.cpp index 6a17124f8e..d70491b902 100644 --- a/src/mir_app/src/proto_internal.cpp +++ b/src/mir_app/src/proto_internal.cpp @@ -175,9 +175,9 @@ struct DEFAULT_PROTO_INTERFACE : public PROTO_INTERFACE return (int)ProtoCallService(m_szModuleName, PSR_CONTACTS, 0, (LPARAM)&ccs);
}
- MEVENT RecvFile(MCONTACT hContact, PROTORECVFILE* evt) override
+ MEVENT RecvFile(MCONTACT hContact, DB::FILE_BLOB &blob, DB::EventInfo &dbei) override
{
- CCSDATA ccs = { hContact, PSR_FILE, 0, (LPARAM)evt };
+ CCSDATA ccs = { hContact, PSR_FILE, (WPARAM)&blob, (LPARAM)&dbei };
return ProtoCallService(m_szModuleName, PSR_FILE, 0, (LPARAM)&ccs);
}
diff --git a/src/mir_app/src/protocols.cpp b/src/mir_app/src/protocols.cpp index 4b14130520..509f1bbedb 100644 --- a/src/mir_app/src/protocols.cpp +++ b/src/mir_app/src/protocols.cpp @@ -418,7 +418,7 @@ INT_PTR CallContactServiceInt(MCONTACT hContact, const char *szModule, const cha case 18: return (INT_PTR)ppi->SearchAdvanced((HWND)lParam);
case 19: return (INT_PTR)ppi->CreateExtendedSearchUI((HWND)lParam);
case 20: return (INT_PTR)ppi->RecvContacts(hContact, (PROTORECVEVENT *)lParam);
- case 21: return (INT_PTR)ppi->RecvFile(hContact, (PROTORECVFILE *)lParam);
+ case 21: return (INT_PTR)ppi->RecvFile(hContact, *(DB::FILE_BLOB*)wParam, *(DB::EventInfo*)lParam);
case 22: return (INT_PTR)ppi->RecvMsg(hContact, (PROTORECVEVENT *)lParam);
case 23: return (INT_PTR)ppi->SendContacts(hContact, LOWORD(wParam), HIWORD(wParam), (MCONTACT *)lParam);
case 24: return (INT_PTR)ppi->SendFile(hContact, (wchar_t *)wParam, (wchar_t **)lParam);
|