aboutsummaryrefslogtreecommitdiffstats
path: root/common/asshelp.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/asshelp.c')
-rw-r--r--common/asshelp.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/common/asshelp.c b/common/asshelp.c
index 174933a83..83c378786 100644
--- a/common/asshelp.c
+++ b/common/asshelp.c
@@ -527,8 +527,18 @@ start_new_service (assuan_context_t *r_ctx,
if (!(err = lock_spawning (&lock, gnupg_homedir (), lock_name, verbose))
&& assuan_socket_connect (ctx, sockname, 0, connect_flags))
{
+#ifdef HAVE_W32_SYSTEM
err = gnupg_spawn_process_detached (program? program : program_name,
argv, NULL);
+#else /*!W32*/
+ pid_t pid;
+
+ err = gnupg_spawn_process_fd (program? program : program_name,
+ argv, -1, -1, -1, &pid);
+ if (!err)
+ err = gnupg_wait_process (program? program : program_name,
+ pid, 1, NULL);
+#endif /*!W32*/
if (err)
log_error ("failed to start %s '%s': %s\n",
printed_name, program? program : program_name,
@@ -640,7 +650,7 @@ start_new_dirmngr (assuan_context_t *r_ctx,
gpg_error_t (*status_cb)(ctrl_t, int, ...),
ctrl_t status_cb_arg)
{
-#ifdef USE_DIRMNGR_AUTO_START
+#ifndef USE_DIRMNGR_AUTO_START
autostart = 0;
#endif
return start_new_service (r_ctx, GNUPG_MODULE_NAME_DIRMNGR,