summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--messages.cpp17
-rw-r--r--utilities.cpp12
-rw-r--r--utilities.h1
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();