aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32-io.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2015-10-28 15:27:49 +0000
committerWerner Koch <[email protected]>2015-10-28 15:28:48 +0000
commitbb2d11c1eebd4bcfb0f2cfce728026a7420dca47 (patch)
treef5eed1c9ca06c6d4a5bfdb6110bd92b58d8679a5 /src/w32-io.c
parentw32: Improve locating gpgconf on 64 bit systems. (diff)
downloadgpgme-bb2d11c1eebd4bcfb0f2cfce728026a7420dca47.tar.gz
gpgme-bb2d11c1eebd4bcfb0f2cfce728026a7420dca47.zip
w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.
* src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/w32-io.c')
-rw-r--r--src/w32-io.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/w32-io.c b/src/w32-io.c
index 42961e31..a6d52388 100644
--- a/src/w32-io.c
+++ b/src/w32-io.c
@@ -1550,6 +1550,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
int debug_me = 0;
int tmp_fd;
char *tmp_name;
+ const char *spawnhelper;
TRACE_BEG1 (DEBUG_SYSIO, "_gpgme_io_spawn", path,
"path=%s", path);
@@ -1603,7 +1604,8 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
if ((flags & IOSPAWN_FLAG_DETACHED))
cr_flags |= DETACHED_PROCESS;
cr_flags |= GetPriorityClass (GetCurrentProcess ());
- if (!CreateProcessA (_gpgme_get_w32spawn_path (),
+ spawnhelper = _gpgme_get_w32spawn_path ();
+ if (!CreateProcessA (spawnhelper,
arg_string,
&sec_attr, /* process security attributes */
&sec_attr, /* thread security attributes */
@@ -1614,7 +1616,10 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
&si, /* startup information */
&pi)) /* returns process information */
{
- TRACE_LOG1 ("CreateProcess failed: ec=%d", (int) GetLastError ());
+ int lasterr = (int)GetLastError ();
+ TRACE_LOG1 ("CreateProcess failed: ec=%d", lasterr);
+ if (lasterr == ERROR_INVALID_PARAMETER)
+ TRACE_LOG1 ("(is '%s' correctly installed?)", spawnhelper);
free (arg_string);
close (tmp_fd);
DeleteFileA (tmp_name);