diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-27 00:00:01 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-27 00:00:01 +0300 |
commit | 26f425f0153de537bc676c9c38a68ef3edd882c5 (patch) | |
tree | 93f1177bfbc5f6e29bc4de2a64a476edf4264052 /gpg_wrapper.cpp | |
parent | b06316ffd29888f749d927577e15ced4945cc5d0 (diff) |
using threads, gpg execution timeout, fixed high cpu usage when waiting gpg process
Diffstat (limited to 'gpg_wrapper.cpp')
-rw-r--r-- | gpg_wrapper.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/gpg_wrapper.cpp b/gpg_wrapper.cpp index f9f4207..5bcf548 100644 --- a/gpg_wrapper.cpp +++ b/gpg_wrapper.cpp @@ -18,7 +18,8 @@ //thx gpg module from Harald Treder, Zakhar V. Bardymov
-pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD aexitcode)
+
+pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD aexitcode, pxResult *result)
{
extern bool bDebugLog;
extern fstream debuglog;
@@ -38,6 +39,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD if(errno == ENOENT)
{
mir_free(bin_path);
+ *result = pxNotFound;
return pxNotFound;
}
}
@@ -52,6 +54,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD success=CreatePipe(&newstdin,&writestdin,&sattrs,0);
if (!success)
{
+ *result = pxCreatePipeFailed;
return pxCreatePipeFailed;
}
@@ -60,6 +63,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD {
CloseHandle(newstdin);
CloseHandle(writestdin);
+ *result = pxCreatePipeFailed;
return pxCreatePipeFailed;
}
@@ -104,6 +108,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD CloseHandle(writestdin);
CloseHandle(newstdout);
CloseHandle(readstdout);
+ *result = pxCreateProcessFailed;
return pxCreateProcessFailed;
}
@@ -122,6 +127,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD success=WriteFile(writestdin,inputpos,size,&transfered,NULL);
inputpos+=transfered;
+ Sleep(200);
}
storeOutput(readstdout,aoutput);
@@ -139,6 +145,17 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD CloseHandle(newstdout);
CloseHandle(readstdout);
CloseHandle(writestdin);
-
+
+ *result = pxSuccess;
return pxSuccess;
}
+
+void pxEexcute_thread(void *param)
+{
+ gpg_execution_params *params = (gpg_execution_params*)param;
+ pxResult result = pxExecute(params->cmd, params->useless, params->out, params->code, params->result);
+ if(result == pxNotFound)
+ {
+ MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK);
+ }
+}
\ No newline at end of file |