aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/posix-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpgme/posix-io.c')
-rw-r--r--gpgme/posix-io.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/gpgme/posix-io.c b/gpgme/posix-io.c
index 2043854e..eaa8950c 100644
--- a/gpgme/posix-io.c
+++ b/gpgme/posix-io.c
@@ -75,10 +75,21 @@ _gpgme_io_write ( int fd, const void *buffer, size_t count )
}
int
-_gpgme_io_pipe ( int filedes[2], int inherit_idx )
+_gpgme_io_pipe (int filedes[2], int inherit_idx)
{
- /* we don't need inherit_idx in this implementation */
- return pipe ( filedes );
+ int err;
+
+ err = pipe (filedes);
+ if (err < 0)
+ return err;
+ /* FIXME: Should get the old flags first. */
+ err = fcntl (filedes[1 - inherit_idx], F_SETFD, FD_CLOEXEC);
+ if (err < 0)
+ {
+ close (filedes[0]);
+ close (filedes[1]);
+ }
+ return err;
}
int