aboutsummaryrefslogtreecommitdiffstats
path: root/common/exechelp.h
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-05-27 20:48:04 +0000
committerWerner Koch <[email protected]>2016-05-27 20:48:31 +0000
commit44a32455c8e41400ea96db4507c8a42bdb65b3b6 (patch)
tree25672960c35cdc1b7fd4650313c7300782f73f36 /common/exechelp.h
parentcommon: Simplify the fd closing patch 512c56a. (diff)
downloadgnupg-44a32455c8e41400ea96db4507c8a42bdb65b3b6.tar.gz
gnupg-44a32455c8e41400ea96db4507c8a42bdb65b3b6.zip
common: Allow a second input stream for gnupg_exec_tool_stream.
* common/exechelp-posix.c (do_exec): Add arg 'except' and pass to close_all_fds. (gnupg_spawn_process): Add arg 'except'. Change callers to pass NULL for it. * common/exechelp-w32.c (gnupg_spawn_process): Add dummy arg 'except'. * common/exechelp-w32ce.c (gnupg_spawn_process): Ditto. * common/exectool.c (copy_buffer_do_copy): Allow NULL for SINK. (gnupg_exec_tool_stream): Add arg 'inextra'. Change callers to pass NULL for it. Allow NULL for OUTPUT. -- This hack is a first step to allow calling gpg for verification of signatures. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'common/exechelp.h')
-rw-r--r--common/exechelp.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/common/exechelp.h b/common/exechelp.h
index d6ef5f062..c43cd25f1 100644
--- a/common/exechelp.h
+++ b/common/exechelp.h
@@ -90,6 +90,10 @@ gpg_error_t gnupg_create_pipe (int filedes[2]);
If PREEXEC is not NULL, the given function will be called right
before the exec.
+ IF EXCEPT is not NULL, it is expected to be an ordered list of file
+ descriptors, terminated by an entry with the value (-1). These
+ file descriptors won't be closed before spawning a new program.
+
Returns 0 on success or an error code. Calling gnupg_wait_process
and gnupg_release_process is required if the function succeeded.
@@ -116,7 +120,7 @@ gpg_error_t gnupg_create_pipe (int filedes[2]);
*/
gpg_error_t
gnupg_spawn_process (const char *pgmname, const char *argv[],
- void (*preexec)(void), unsigned int flags,
+ int *execpt, void (*preexec)(void), unsigned int flags,
estream_t *r_infp,
estream_t *r_outfp,
estream_t *r_errfp,