From 6d6438a361d25f3b269f702e017f5e39fd1f5c38 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 15 Mar 2022 09:33:09 +0100 Subject: common: New flags for gnupg_spawn_process * common/exechelp.h (GNUPG_SPAWN_KEEP_STDIN): New. (GNUPG_SPAWN_KEEP_STDOUT): New. (GNUPG_SPAWN_KEEP_STDERR): New. * common/exechelp-posix.c (do_exec): Add arg flags and implement new flags. * common/exechelp-w32.c (gnupg_spawn_process): Implement new flags. --- common/exechelp-w32.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'common/exechelp-w32.c') diff --git a/common/exechelp-w32.c b/common/exechelp-w32.c index dee96f5b4..9529c57a0 100644 --- a/common/exechelp-w32.c +++ b/common/exechelp-w32.c @@ -556,11 +556,14 @@ gnupg_spawn_process (const char *pgmname, const char *argv[], return err; if (inpipe[0] == INVALID_HANDLE_VALUE) - nullhd[0] = w32_open_null (0); + nullhd[0] = ((flags & GNUPG_SPAWN_KEEP_STDIN)? + GetStdHandle (STD_INPUT_HANDLE) : w32_open_null (0)); if (outpipe[1] == INVALID_HANDLE_VALUE) - nullhd[1] = w32_open_null (1); + nullhd[1] = ((flags & GNUPG_SPAWN_KEEP_STDOUT)? + GetStdHandle (STD_OUTPUT_HANDLE) : w32_open_null (1)); if (errpipe[1] == INVALID_HANDLE_VALUE) - nullhd[2] = w32_open_null (1); + nullhd[2] = ((flags & GNUPG_SPAWN_KEEP_STDOUT)? + GetStdHandle (STD_ERROR_HANDLE) : w32_open_null (1)); /* Start the process. Note that we can't run the PREEXEC function because this might change our own environment. */ -- cgit v1.2.3