diff options
-rw-r--r-- | messages.cpp | 17 | ||||
-rw-r--r-- | utilities.cpp | 12 | ||||
-rw-r--r-- | utilities.h | 1 |
3 files changed, 24 insertions, 6 deletions
diff --git a/messages.cpp b/messages.cpp index 1509958..3601604 100644 --- a/messages.cpp +++ b/messages.cpp @@ -150,7 +150,7 @@ int RecvMsgSvc(WPARAM w, LPARAM l) { setSrmmIcon(metaGetContact(hContact)); setClistIcon(metaGetContact(hContact)); - HistoryLog(metaGetContact(hContact), "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, DBEF_READ); + HistoryLog(metaGetContact(hContact), "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, 0); } HistoryLog(hContact, "PGP Encryption turned on by key autoexchange feature", EVENTTYPE_MESSAGE, 0); } @@ -610,9 +610,16 @@ int SendMsgSvc(WPARAM w, LPARAM l) if(!isContactSecured(hContact)) return CallService(MS_PROTO_CHAINSEND, w, l); - { //encrypt data here - wstring str = toUTF16(msg); + wstring str; + if(!metaIsSubcontact(hContact)) + str = toUTF16(msg); + else + {//workaround ... + wchar_t *tmp = mir_a2t(msg); + str.append(tmp); + mir_free(tmp); + } { //not xmpp, just replace whole message string out; DWORD code; @@ -730,8 +737,8 @@ int SendMsgSvc(WPARAM w, LPARAM l) str_event.insert(0, toUTF8(outopentag)); str_event.append(toUTF8(outclosetag)); } - HistoryLog(hContact, (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT | DBEF_UTF); - HistoryLog(metaGetContact(hContact), (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT | DBEF_UTF); + HistoryLog(hContact, (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT); + HistoryLog(metaGetContact(hContact), (char*)str_event.c_str(), EVENTTYPE_MESSAGE, DBEF_SENT); hcontact_data[hContact].msgs_to_ignore.push_back((char*)ccs->lParam); hcontact_data[metaGetContact(hContact)].msgs_to_ignore.push_back((char*)ccs->lParam); //hmm, twice ? metacontacts !! %) CallContactService(hContact, PSS_MESSAGE, (WPARAM)PREF_UTF, (LPARAM)toUTF8(str).c_str()); diff --git a/utilities.cpp b/utilities.cpp index 66389f0..b462a23 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -438,7 +438,7 @@ void HistoryLog(HANDLE hContact, char *data, int event_type, int flags) Event.cbSize = sizeof(Event); Event.szModule = szGPGModuleName; Event.eventType = event_type; - Event.flags = flags, DBEF_UTF; + Event.flags = flags; Event.timestamp = (DWORD)time(NULL); Event.cbBlob = strlen(data)+1; Event.pBlob = (PBYTE)_strdup(data); @@ -940,6 +940,16 @@ string toUTF8(wstring str) return ustr;
}
+string toUTF8(string str)
+{
+ string ustr;
+ wstring tmpstr;
+ utf8::replace_invalid(str.begin(), str.end(), back_inserter(tmpstr));
+ utf8::utf16to8(tmpstr.begin(), tmpstr.end(), back_inserter(ustr));
+ return ustr;
+}
+
+
wstring toUTF16(string str) //convert as much as possible
{
wstring ustr;
diff --git a/utilities.h b/utilities.h index 7255724..3871f67 100644 --- a/utilities.h +++ b/utilities.h @@ -32,6 +32,7 @@ bool isContactHaveKey(HANDLE hContact); bool isGPGConfigured(); const bool StriStr(const char *str, const char *substr); string toUTF8(wstring str); +string toUTF8(string str); wstring toUTF16(string str); string get_random(int length); string time_str(); |