diff options
-rw-r--r-- | gpg_wrapper.cpp | 24 | ||||
-rw-r--r-- | main.cpp | 42 | ||||
-rw-r--r-- | new_gpg.vcproj | 2 | ||||
-rw-r--r-- | options.cpp | 40 | ||||
-rw-r--r-- | utilities.cpp | 19 | ||||
-rw-r--r-- | utilities.h | 1 |
6 files changed, 100 insertions, 28 deletions
diff --git a/gpg_wrapper.cpp b/gpg_wrapper.cpp index 9c43777..dd8a65d 100644 --- a/gpg_wrapper.cpp +++ b/gpg_wrapper.cpp @@ -35,16 +35,6 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD unsigned long transfered; int size; - TCHAR *bin_path = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("")); - { - if(_waccess(bin_path, 0) == -1) - if(errno == ENOENT) - { - mir_free(bin_path); - *result = pxNotFound; - return pxNotFound; - } - } wstring commandline; sattrs.nLength=sizeof(SECURITY_ATTRIBUTES); @@ -76,11 +66,23 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD sinfo.hStdError=newstdout; sinfo.hStdInput=newstdin; + TCHAR *bin_path = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("")); + { + if(_waccess(bin_path, 0) == -1) + { + if(errno == ENOENT) + { + mir_free(bin_path); + *result = pxNotFound; + return pxNotFound; + } + } + } + TCHAR *home_dir = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); { //form initial command commandline += _T("\""); commandline += bin_path; commandline += _T("\" --homedir \""); - TCHAR *home_dir = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); commandline += home_dir; commandline += _T("\" "); commandline += _T("--display-charset utf-8 "); @@ -414,7 +414,7 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP { TranslateDialogDefault(hwndDlg); DWORD len = MAX_PATH; - TCHAR *path = NULL; + TCHAR *path = new TCHAR [MAX_PATH]; tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", (SHGetValue(HKEY_CURRENT_USER, _T("Software\\GNU\\GnuPG\\gpgProgram"), 0, 0, path, &len) == ERROR_SUCCESS)?path:_T("")); delete [] path; SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); @@ -436,16 +436,40 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP switch (LOWORD(wParam)) { case IDC_SET_BIN_PATH: - GetFilePath(_T("Choose gpg.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); - tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("gpg.exe")); - SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); - mir_free(tmp); + { + GetFilePath(_T("Choose gpg.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); + tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("gpg.exe")); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + char mir_path[MAX_PATH]; + char *atmp = mir_t2a(tmp); + mir_free(tmp); + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)"\\", (LPARAM)mir_path); + char* p_path = NULL; + if(StriStr(atmp, mir_path)) + { + p_path = atmp + strlen(mir_path); + tmp = mir_a2t(p_path); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + } + } break; case IDC_SET_HOME_DIR: - GetFolderPath(_T("Set home diractory"), "szHomePath"); - tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); - SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); - mir_free(tmp); + { + GetFolderPath(_T("Set home diractory"), "szHomePath"); + tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + char mir_path[MAX_PATH]; + char *atmp = mir_t2a(tmp); + mir_free(tmp); + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)"\\", (LPARAM)mir_path); + char* p_path = NULL; + if(StriStr(atmp, mir_path)) + { + p_path = atmp + strlen(mir_path); + tmp = mir_a2t(p_path); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + } + } break; case ID_OK: { diff --git a/new_gpg.vcproj b/new_gpg.vcproj index bb907a5..35370df 100644 --- a/new_gpg.vcproj +++ b/new_gpg.vcproj @@ -162,6 +162,7 @@ AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
@@ -184,6 +185,7 @@ SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
GenerateDebugInformation="true"
+ AssemblyDebug="1"
ProgramDatabaseFile="./$(TargetName).pdb"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
diff --git a/options.cpp b/options.cpp index 03808ae..5dafb05 100644 --- a/options.cpp +++ b/options.cpp @@ -426,16 +426,40 @@ static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP switch (LOWORD(wParam)) { case IDC_SET_BIN_PATH: - GetFilePath(_T("Choose gpg2.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); - tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("gpg2.exe")); - SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); - mir_free(tmp); + { + GetFilePath(_T("Choose gpg.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables")); + tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szGpgBinPath", _T("gpg.exe")); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + char mir_path[MAX_PATH]; + char *atmp = mir_t2a(tmp); + mir_free(tmp); + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)"\\", (LPARAM)mir_path); + char* p_path = NULL; + if(StriStr(atmp, mir_path)) + { + p_path = atmp + strlen(mir_path); + tmp = mir_a2t(p_path); + SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp); + } + } break; case IDC_SET_HOME_DIR: - GetFolderPath(_T("Set home diractory"), "szHomePath"); - tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); - SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); - mir_free(tmp); + { + GetFolderPath(_T("Set home diractory"), "szHomePath"); + tmp = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + char mir_path[MAX_PATH]; + char *atmp = mir_t2a(tmp); + mir_free(tmp); + CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)"\\", (LPARAM)mir_path); + char* p_path = NULL; + if(StriStr(atmp, mir_path)) + { + p_path = atmp + strlen(mir_path); + tmp = mir_a2t(p_path); + SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp); + } + } break; default: break; diff --git a/utilities.cpp b/utilities.cpp index 9c07b89..649b4e1 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -584,3 +584,22 @@ bool isContactHaveKey(HANDLE hContact) return false; } +#define NEWTSTR_MALLOC(A) (A==NULL)?NULL:strcpy((char*)mir_alloc(sizeof(char)*(strlen(A)+1)),A)
+
+const bool StriStr(const char *str, const char *substr)
+{
+ bool i = false;
+ char *str_up = NEWTSTR_MALLOC(str);
+ char *substr_up = NEWTSTR_MALLOC(substr);
+
+ CharUpperBuffA(str_up, strlen(str_up));
+ CharUpperBuffA(substr_up, strlen(substr_up));
+
+ if(strstr (str_up, substr_up))
+ i = true;
+
+ mir_free(str_up);
+ mir_free(substr_up);
+
+ return i;
+}
diff --git a/utilities.h b/utilities.h index dadf5a6..a79221a 100644 --- a/utilities.h +++ b/utilities.h @@ -28,5 +28,6 @@ void storeOutput(HANDLE ahandle, string *output); void HistoryLog(HANDLE hContact, char *data, int event_type, int flags); int ComboBoxAddStringUtf(HWND hCombo, const TCHAR *szString, DWORD data); bool isContactSecured(HANDLE hContact); +const bool StriStr(const char *str, const char *substr); #endif |