From 1de40ac790d3218cc10d37f95f9f1a8c573dbe77 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Tue, 10 Aug 2010 23:51:58 +0300 Subject: modified: main.cpp modified: options.cpp modified: utilities.cpp modified: utilities.h --- options.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 5 deletions(-) (limited to 'options.cpp') diff --git a/options.cpp b/options.cpp index 60cf2d9..b5c690d 100644 --- a/options.cpp +++ b/options.cpp @@ -138,7 +138,12 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA } wfstream f(tmp, std::ios::out); delete [] tmp; - wstring str = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T("")); + wstring str; + { + TCHAR *tmp = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T("")); + str.append(tmp); + mir_free(tmp); + } wstring::size_type s = 0; while((s = str.find(_T("\r"), s)) != wstring::npos) { @@ -191,8 +196,12 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); - SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"))); - SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("gpg"))); + tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe")); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + mir_free(tmp); + tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("gpg")); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + mir_free(tmp); return TRUE; } @@ -203,11 +212,15 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP { case IDC_SET_BIN_PATH: GetFilePath(_T("Choose gpg2.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); - SetDlgItemText(hwndDlg, IDC_BIN_PATH, UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"))); + tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe")); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + mir_free(tmp); break; case IDC_SET_HOME_DIR: GetFolderPath(_T("Set home diractory"), "szHomePath"); - SetDlgItemText(hwndDlg, IDC_HOME_DIR, UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""))); + tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("")); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + mir_free(tmp); break; default: break; @@ -282,6 +295,46 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP tmp = new TCHAR [key_buf.length()+1]; _tcscpy(tmp, key_buf.substr(ws1,ws2-ws1).c_str()); ListView_SetItemText(hwndList_p, item_num, 2, tmp); + { //gpg execute block + TCHAR cmd[40960] = {0}; + TCHAR tmp2[MAX_PATH] = {0}; + TCHAR *ptmp; + string output; + DWORD exitcode; + ptmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("")); + _tcscpy(cmd, ptmp); + mir_free(ptmp); + _tcscat(cmd, _T(" --homedir ")); + _tcscat(cmd, _T("\"")); + ptmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T("")); + _tcscat(cmd, ptmp); + _tcscat(cmd, _T("\"")); + _tcscat(cmd, _T(" --import ")); + { + _tcscpy(tmp2, ptmp); + mir_free(ptmp); + _tcscat(tmp2, _T("\\")); + _tcscat(tmp2, _T("temporary_exported.asc")); + wfstream f(tmp2, std::ios::out); + ptmp = UniGetContactSettingUtf(user_data[item_num+1], szModuleName, "GPGPubKey", _T("")); + wstring str = ptmp; + mir_free(ptmp); + wstring::size_type s = 0; + while((s = str.find(_T("\r"), s)) != wstring::npos) + { + str.erase(s, 1); + } + f<