summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_protosvc.h1
-rw-r--r--protocols/JabberG/src/jabber_iq_handlers.cpp1
-rw-r--r--protocols/JabberG/src/jabber_thread.cpp1
-rw-r--r--protocols/Telegram/src/utils.cpp1
-rw-r--r--src/core/stdfile/src/file.cpp9
5 files changed, 11 insertions, 2 deletions
diff --git a/include/m_protosvc.h b/include/m_protosvc.h
index e98a13c489..d61165f403 100644
--- a/include/m_protosvc.h
+++ b/include/m_protosvc.h
@@ -769,6 +769,7 @@ EXTERN_C MIR_APP_DLL(MEVENT) Proto_AuthRecv(const char *szProtoName, PROTORECVEV
// lParam = (LPARAM)(PROTORECVFILE*)&prf
#define PRFF_UNICODE 1
+#define PRFF_UTF 2
struct PROTORECVFILE
{
diff --git a/protocols/JabberG/src/jabber_iq_handlers.cpp b/protocols/JabberG/src/jabber_iq_handlers.cpp
index 2c3b25b90c..2b21589caa 100644
--- a/protocols/JabberG/src/jabber_iq_handlers.cpp
+++ b/protocols/JabberG/src/jabber_iq_handlers.cpp
@@ -321,6 +321,7 @@ bool CJabberProto::OnIqRequestOOB(const TiXmlElement*, CJabberIqInfo *pInfo)
str2 = ft->httpPath;
PROTORECVFILE pre = {};
+ pre.dwFlags = PRFF_UTF;
pre.timestamp = time(0);
pre.descr.a = desc;
pre.files.a = &str2;
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index 5e4fae32b9..5ee69b908e 100644
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1342,6 +1342,7 @@ void CJabberProto::OnProcessMessage(const TiXmlElement *node, ThreadData *info)
ft->std.szCurrentFile.w = mir_utf8decodeW(szName);
PROTORECVFILE pre = {};
+ pre.dwFlags = PRFF_UTF;
pre.fileCount = 1;
pre.timestamp = time(0);
pre.files.a = &pszName;
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp
index 0884188c16..ef2636563f 100644
--- a/protocols/Telegram/src/utils.cpp
+++ b/protocols/Telegram/src/utils.cpp
@@ -248,6 +248,7 @@ CMStringA CTelegramProto::GetMessageText(TG_USER *pUser, TD::MessageContent *pBo
auto *pszFileName = pDoc->document_->file_name_.c_str();
PROTORECVFILE pre = {};
+ pre.dwFlags = PRFF_UTF;
pre.fileCount = 1;
pre.timestamp = time(0);
pre.files.a = &pszFileName;
diff --git a/src/core/stdfile/src/file.cpp b/src/core/stdfile/src/file.cpp
index 4d007ec3ed..e8573eca6b 100644
--- a/src/core/stdfile/src/file.cpp
+++ b/src/core/stdfile/src/file.cpp
@@ -339,15 +339,20 @@ static INT_PTR Proto_RecvFileT(WPARAM, LPARAM lParam)
blob.write(dbei);
}
else {
+ bool bUtf = (pre->dwFlags & PRFF_UTF) != 0;
CMStringW wszFiles;
for (int i = 0; i < pre->fileCount; i++) {
if (i != 0)
wszFiles.AppendChar(',');
- wszFiles.Append(_A2T(pre->files.a[i]));
+
+ if (bUtf)
+ wszFiles.Append(Utf2T(pre->files.a[i]));
+ else
+ wszFiles.Append(_A2T(pre->files.a[i]));
}
- DB::FILE_BLOB blob(wszFiles, _A2T(pre->descr.a));
+ DB::FILE_BLOB blob(wszFiles, bUtf ? Utf2T(pre->descr.a).get() : _A2T(pre->descr.a));
blob.write(dbei);
}