From 9495c292b1e94f2901409e6351c018c97ac3767d Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Mon, 24 Dec 2012 01:00:25 +0200 Subject: merged fixes from miranda_ng main repo --- src/gpg_wrapper.cpp | 2 ++ src/messages.cpp | 5 +++ src/utilities.cpp | 97 ++++++++++++++++++++++++++++++++++++++++++----------- src/utilities.h | 4 +++ 4 files changed, 88 insertions(+), 20 deletions(-) diff --git a/src/gpg_wrapper.cpp b/src/gpg_wrapper.cpp index e420faa..d743af4 100755 --- a/src/gpg_wrapper.cpp +++ b/src/gpg_wrapper.cpp @@ -140,6 +140,8 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD storeOutput(readstdout,aoutput); + fix_line_term(*aoutput); + debuglog<c_str(); WaitForSingleObject(pri.hProcess,INFINITE); diff --git a/src/messages.cpp b/src/messages.cpp index 292ad10..5e3e609 100755 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -333,6 +333,7 @@ void RecvMsgSvc_func(HANDLE hContact, std::wstring str, char *msg, DWORD flags, } else { + fix_line_term(str); if(bAppendTags) { str.insert(0, inopentag); @@ -780,7 +781,10 @@ void SendMsgSvc_func(HANDLE hContact, char *msg, DWORD flags) path.append(_T(".asc")); wfstream f(path.c_str(), std::ios::in | std::ios::ate | std::ios::binary); while(!f.is_open()) + { + boost::this_thread::sleep(boost::posix_time::milliseconds(100)); f.open(path.c_str(), std::ios::in | std::ios::ate | std::ios::binary); + } str.clear(); if(f.is_open()) { @@ -821,6 +825,7 @@ void SendMsgSvc_func(HANDLE hContact, char *msg, DWORD flags) HistoryLog(hContact, db_event((char*)str_event.c_str(), 0,0, dbflags|DBEF_SENT)); if(!(flags & PREF_UTF)) flags |= PREF_UTF; + fix_line_term(str); sent_msgs.push_back((HANDLE)CallContactService(hContact, PSS_MESSAGE, (WPARAM)flags, (LPARAM)toUTF8(str).c_str())); mir_free(msg); return; diff --git a/src/utilities.cpp b/src/utilities.cpp index 3f25394..16a3022 100755 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -739,13 +739,10 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU p1 = data.find(_T("Encoding: "), p1); p1 = data.find(_T("\n"), p1); } - p1+=2; + p1+=3; wstring::size_type p2 = data.find(_T("-----END PGP MESSAGE-----")); - wstring data2 = data.substr(p1, p2-p1); - for(std::wstring::size_type i = data2.find(_T("\r")); i != std::wstring::npos; i = data2.find(_T("\r"), i+1)) - data2.erase(i, 1); - for(std::wstring::size_type i = data2.find(_T("\n")); i != std::wstring::npos; i = data2.find(_T("\n"), i+1)) - data2.erase(i, 1); + wstring data2 = data.substr(p1, p2-p1-2); + strip_line_term(data2); HXML encrypted_data = xi.addChild(node, _T("x"), data2.c_str()); xi.addAttr(encrypted_data, _T("xmlns"), _T("jabber:x:encrypted")); return FALSE; @@ -832,7 +829,7 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU cmd += _T(" --default-key "); cmd += path_c; mir_free(path_c); - cmd += _T(" --batch --yes -a -s \""); + cmd += _T(" --batch --yes -a -b -s \""); cmd += path_out; cmd += _T("\" "); gpg_execution_params params; @@ -871,9 +868,9 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU debuglog<