From 010952c5c2dde278a024f6876e8189b949ea5dcf Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 19 Jan 2024 15:44:57 +0300 Subject: the ancient atavism extincted: PROTORECVFILE structure with its own set of flags --- protocols/Tox/src/tox_transfer.cpp | 23 ++++++++--------------- protocols/Tox/src/tox_transfer.h | 6 +++--- 2 files changed, 11 insertions(+), 18 deletions(-) (limited to 'protocols/Tox') diff --git a/protocols/Tox/src/tox_transfer.cpp b/protocols/Tox/src/tox_transfer.cpp index e5f12a2b8c..1b7b6e4fc3 100644 --- a/protocols/Tox/src/tox_transfer.cpp +++ b/protocols/Tox/src/tox_transfer.cpp @@ -21,11 +21,10 @@ void CToxProto::OnFriendFile(Tox *tox, uint32_t friendNumber, uint32_t fileNumbe { proto->debugLogA(__FUNCTION__": incoming avatar (%d) from %s (%d)", fileNumber, (const char*)pubKey, friendNumber); - ptrW address(proto->getWStringA(hContact, TOX_SETTINGS_ID)); - wchar_t avatarName[MAX_PATH]; - mir_snwprintf(avatarName, MAX_PATH, L"%s.png", address.get()); + CMStringA address(proto->getMStringU(hContact, TOX_SETTINGS_ID)); + address += "%s.png"; - AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, avatarName, fileSize); + AvatarTransferParam *transfer = new AvatarTransferParam(friendNumber, fileNumber, address, fileSize); transfer->pfts.flags |= PFTS_RECEIVING; transfer->pfts.hContact = hContact; proto->transfers.Add(transfer); @@ -45,21 +44,15 @@ void CToxProto::OnFriendFile(Tox *tox, uint32_t friendNumber, uint32_t fileNumbe proto->debugLogA(__FUNCTION__": incoming file (%d) from %s (%d)", fileNumber, (const char*)pubKey, friendNumber); CMStringA rawName((char*)fileName, (int)fileNameLength); - const wchar_t *name = mir_utf8decodeW(rawName); - FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, name, fileSize); + FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, rawName, fileSize); transfer->pfts.flags |= PFTS_RECEIVING; transfer->pfts.hContact = hContact; proto->transfers.Add(transfer); - PROTORECVFILE pre = {}; - pre.dwFlags = PRFF_UNICODE; - pre.fileCount = 1; - pre.timestamp = now(); - pre.descr.w = L""; - pre.files.w = &name; - pre.pUserInfo = transfer; - ProtoChainRecvFile(hContact, &pre); + DB::EventInfo dbei; + dbei.timestamp = now(); + ProtoChainRecvFile(hContact, DB::FILE_BLOB(transfer, rawName), dbei); } break; @@ -270,7 +263,7 @@ HANDLE CToxProto::OnSendFile(Tox *tox, MCONTACT hContact, const wchar_t*, wchar_ } debugLogA(__FUNCTION__": start sending file (%d) to %s (%d)", fileNumber, (const char*)pubKey, friendNumber); - FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, fileName, fileSize); + FileTransferParam *transfer = new FileTransferParam(friendNumber, fileNumber, rawName, fileSize); transfer->pfts.flags |= PFTS_SENDING; transfer->pfts.hContact = hContact; transfer->pfts.szWorkingDir.w = fileDir; diff --git a/protocols/Tox/src/tox_transfer.h b/protocols/Tox/src/tox_transfer.h index 0e72a4cf77..3d79f6d9ca 100644 --- a/protocols/Tox/src/tox_transfer.h +++ b/protocols/Tox/src/tox_transfer.h @@ -11,7 +11,7 @@ struct FileTransferParam TOX_FILE_KIND transferType; - FileTransferParam(uint32_t friendNumber, uint32_t fileNumber, const wchar_t *fileName, uint64_t fileSize) + FileTransferParam(uint32_t friendNumber, uint32_t fileNumber, const char *fileName, uint64_t fileSize) { hFile = nullptr; this->friendNumber = friendNumber; @@ -22,7 +22,7 @@ struct FileTransferParam pfts.hContact = NULL; pfts.totalFiles = 1; pfts.pszFiles.w = (wchar_t**)mir_alloc(sizeof(wchar_t*)*(pfts.totalFiles + 1)); - pfts.pszFiles.w[0] = pfts.szCurrentFile.w = mir_wstrdup(fileName); + pfts.pszFiles.w[0] = pfts.szCurrentFile.w = mir_utf8decodeW(fileName); pfts.pszFiles.w[pfts.totalFiles] = nullptr; pfts.totalBytes = pfts.currentFileSize = fileSize; pfts.totalProgress = pfts.currentFileProgress = 0; @@ -77,7 +77,7 @@ struct AvatarTransferParam : public FileTransferParam { uint8_t hash[TOX_HASH_LENGTH]; - AvatarTransferParam(uint32_t friendNumber, uint32_t fileNumber, const wchar_t *fileName, uint64_t fileSize) + AvatarTransferParam(uint32_t friendNumber, uint32_t fileNumber, const char *fileName, uint64_t fileSize) : FileTransferParam(friendNumber, fileNumber, fileName, fileSize) { transferType = TOX_FILE_KIND_AVATAR; -- cgit v1.2.3