summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-10-21 23:57:04 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-10-21 23:57:04 +0300
commitac0ead8e1e00e2628373954b4a2e5f6d9d8986ad (patch)
tree92b91141567c063e42547428b3ff27c59f42cc76 /utilities.cpp
parentd5baf212f45c3926ffec3bccad77ca4dd0751d23 (diff)
modified: messages.cpp
modified: utilities.cpp
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp35
1 files changed, 28 insertions, 7 deletions
diff --git a/utilities.cpp b/utilities.cpp
index 02ff474..5bba190 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -289,10 +289,22 @@ int onProtoAck(WPARAM w, LPARAM l)
break;
case ACKRESULT_SUCCESS:
{
+ if(sizeof(*f) != sizeof(PROTOFILETRANSFERSTATUS))
+ break;
+ TCHAR *filename = NULL;
+ if(f->szCurrentFile)
+ filename = mir_utf8decodeW(f->szCurrentFile);
+ else if(f->tszCurrentFile)
+ filename = mir_wstrdup(f->tszCurrentFile);
+ if(!filename)
+ break;
TCHAR *temp = _wgetenv(_T("TEMP"));
- if(f->tszCurrentFile && _tcsstr(f->tszCurrentFile, temp))
+ if(_tcsstr(filename, temp))
+ {
+ mir_free(filename);
break;
- else if(f->tszCurrentFile && _tcsstr(f->tszCurrentFile, _T(".gpg"))) //decrypt it
+ }
+ else if(_tcsstr(filename, _T(".gpg"))) //decrypt it
{ //process encrypted file
if(_waccess(f->tszCurrentFile, 0) == -1)
{
@@ -303,7 +315,7 @@ int onProtoAck(WPARAM w, LPARAM l)
DWORD code;
pxResult result;
wstring cmd = _T("-o ");
- wstring file = f->tszCurrentFile;
+ wstring file = filename;
wstring::size_type p1 = file.find(_T(".gpg"));
file.erase(p1, _tcslen(_T(".gpg")));
if(_waccess(file.c_str(), 0) != -1)
@@ -316,7 +328,7 @@ int onProtoAck(WPARAM w, LPARAM l)
file.insert(file.length(), _T("\" "));
cmd += file;
cmd += _T(" -d \"");
- cmd += f->tszCurrentFile;
+ cmd += filename;
cmd += _T("\"");
gpg_execution_params params;
params.cmd = &cmd;
@@ -334,7 +346,8 @@ int onProtoAck(WPARAM w, LPARAM l)
{
MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK);
}
- DeleteFile(f->tszCurrentFile);
+ DeleteFile(filename);
+ mir_free(filename);
}
}
break;
@@ -918,9 +931,17 @@ string toUTF8(wstring str)
return ustr;
}
-wstring toUTF16(string str)
+wstring toUTF16(string str) //convert as much as possible
{
+ string::iterator end_it = utf8::find_invalid(str.begin(), str.end());
+ int length = utf8::distance(str.begin(), end_it);
wstring ustr;
- utf8::utf8to16(str.begin(), str.end(), back_inserter(ustr));
+ utf8::utf8to16(str.begin(), end_it, back_inserter(ustr));
+ string tmp;
+ while(end_it != str.end())
+ str += *end_it;
+ TCHAR *tmp2 = mir_a2t(tmp.c_str());
+ ustr += tmp2;
+ mir_free(tmp2);
return ustr;
} \ No newline at end of file