diff options
Diffstat (limited to 'common/exechelp-posix.c')
-rw-r--r-- | common/exechelp-posix.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/common/exechelp-posix.c b/common/exechelp-posix.c index 069b07a4b..87c6e5509 100644 --- a/common/exechelp-posix.c +++ b/common/exechelp-posix.c @@ -341,20 +341,28 @@ create_pipe_and_estream (int filedes[2], estream_t *r_fp, /* Portable function to create a pipe. Under Windows the write end is - inheritable. */ + inheritable. If R_FP is not NULL, an estream is created for the + read end and stored at R_FP. */ gpg_error_t -gnupg_create_inbound_pipe (int filedes[2]) +gnupg_create_inbound_pipe (int filedes[2], estream_t *r_fp, int nonblock) { - return do_create_pipe (filedes); + if (r_fp) + return create_pipe_and_estream (filedes, r_fp, 0, nonblock); + else + return do_create_pipe (filedes); } /* Portable function to create a pipe. Under Windows the read end is - inheritable. */ + inheritable. If R_FP is not NULL, an estream is created for the + write end and stored at R_FP. */ gpg_error_t -gnupg_create_outbound_pipe (int filedes[2]) +gnupg_create_outbound_pipe (int filedes[2], estream_t *r_fp, int nonblock) { - return do_create_pipe (filedes); + if (r_fp) + return create_pipe_and_estream (filedes, r_fp, 1, nonblock); + else + return do_create_pipe (filedes); } |