diff options
Diffstat (limited to 'common/asshelp.c')
-rw-r--r-- | common/asshelp.c | 12 |
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, |