summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-08-24 05:07:08 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-08-24 05:07:08 +0300
commit35c5cc6c13327c36e3e0bf0f5d6431a9c19c897a (patch)
treeb0f884e8e88fe08bb0028836d74b479ae5752938 /options.cpp
parentf6721be1f054f6ecfe25c8722113e97aa1a94de1 (diff)
parse gpg output in utf8 format, possible locales bug fixed (need checks)
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp48
1 files changed, 39 insertions, 9 deletions
diff --git a/options.cpp b/options.cpp
index 42d81d2..e00ebbd 100644
--- a/options.cpp
+++ b/options.cpp
@@ -289,12 +289,16 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
{
if(hdr->hdr.code == LVN_ITEMCHANGED)
{
+ void setClistIcon(HANDLE hContact);
+ void setSrmmIcon(HANDLE hContact);
int i = hdr->iItem;
if(ListView_GetItemState(hwndList, i, 0xF000) == 0x2000)
DBWriteContactSettingByte(user_data[i+1], szGPGModuleName, "GPGEncryption", 1);
else
DBWriteContactSettingByte(user_data[i+1], szGPGModuleName, "GPGEncryption", 0);
item_num = hdr->iItem;
+ setClistIcon(user_data[i+1]);
+ setSrmmIcon(user_data[i+1]);
}
}
switch (((LPNMHDR)lParam)->code)
@@ -592,27 +596,39 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
}
mir_free(begin);
mir_free(end);
- cp866_to_cp1251(&output);
DBDeleteContactSetting(user_data[item_num+1], szGPGModuleName, "bAlwatsTrust");
{
TCHAR *tmp;
+ char *tmp2;
string::size_type s = output.find("gpg: key ") + strlen("gpg: key ");
- string::size_type s2 = output.find(":", s);
- DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyID", output.substr(s,s2-s).c_str());
- tmp = mir_a2t(output.substr(s,s2-s).c_str());
+ string::size_type s2 = output.find(":", s);
+ tmp2 = new char [output.substr(s,s2-s).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s).c_str());
+ mir_utf8decode(tmp2, 0);
+ DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyID", tmp2);
+ mir_free(tmp2);
+ tmp = mir_utf8decodeW(output.substr(s,s2-s).c_str());
ListView_SetItemText(hwndList_p, item_num, 1, tmp);
mir_free(tmp);
s2+=2;
s = output.find("\"", s2)-1;
if(s != s2-1)
- {
+ {
+ tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str());
+ mir_utf8decode(tmp2, 0);
DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyType", output.substr(s2,s-s2).c_str());
+ mir_free(tmp2);
}
s+=2;
if((s2 = output.find("(", s)) == string::npos)
s2 = output.find("<", s);
+ tmp2 = new char [output.substr(s,s2-s-1).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s-1).c_str());
+ mir_utf8decode(tmp2, 0);
DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainName", output.substr(s,s2-s-1).c_str());
- tmp = mir_a2t(output.substr(s,s2-s-1).c_str());
+ mir_free(tmp2);
+ tmp = mir_utf8decodeW(output.substr(s,s2-s-1).c_str());
ListView_SetItemText(hwndList_p, item_num, 2, tmp);
mir_free(tmp);
if((s = output.find(")", s2)) == string::npos)
@@ -620,18 +636,30 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
s2++;
if(output[s] == ')')
{
+ tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str());
+ mir_utf8decode(tmp2, 0);
DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyComment", output.substr(s2,s-s2).c_str());
+ mir_free(tmp2);
s+=3;
s2 = output.find(">", s);
+ tmp2 = new char [output.substr(s,s2-s).length()+1];
+ strcpy(tmp2, output.substr(s,s2-s).c_str());
+ mir_utf8decode(tmp2, 0);
DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainEmail", output.substr(s,s2-s).c_str());
- tmp = mir_a2t(output.substr(s,s2-s).c_str());
+ mir_free(tmp2);
+ tmp = mir_utf8decodeW(output.substr(s,s2-s).c_str());
ListView_SetItemText(hwndList_p, item_num, 3, tmp);
mir_free(tmp);
}
else
{
+ tmp2 = new char [output.substr(s2,s-s2).length()+1];
+ strcpy(tmp2, output.substr(s2,s-s2).c_str());
+ mir_utf8decode(tmp2, 0);
DBWriteContactSettingString(user_data[item_num+1], szGPGModuleName, "KeyMainEmail", output.substr(s2,s-s2).c_str());
- tmp = mir_a2t(output.substr(s2,s-s2).c_str());
+ mir_free(tmp2);
+ tmp = mir_utf8decodeW(output.substr(s2,s-s2).c_str());
ListView_SetItemText(hwndList_p, item_num, 3, tmp);
mir_free(tmp);
}
@@ -640,7 +668,9 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
ListView_SetColumnWidth(hwndList_p, 2, LVSCW_AUTOSIZE);
ListView_SetColumnWidth(hwndList_p, 3, LVSCW_AUTOSIZE);
}
- MessageBoxA(0, output.c_str(), "", MB_OK);
+ tmp = mir_utf8decodeW(output.c_str());
+ MessageBox(0, tmp, _T(""), MB_OK);
+ mir_free(tmp);
DeleteFile(tmp2);
}
delete [] tmp;