aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/assuan-pipe-connect.c7
-rw-r--r--src/assuan.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 0636391..d22f869 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
2009-12-08 Marcus Brinkmann <[email protected]>
+ * assuan.h (ASSUAN_SPAWN_DETACHED): New macro.
+ * assuan-pipe-connect.c (pipe_connect): Calculate spawn_flags from
+ flags.
+
* assuan.h (assuan_fd_from_posix_fd): Handle invalid fd early.
* assuan-socket.c (get_nonce): Cast buffer to unsigned.
diff --git a/src/assuan-pipe-connect.c b/src/assuan-pipe-connect.c
index 2b8b264..690d810 100644
--- a/src/assuan-pipe-connect.c
+++ b/src/assuan-pipe-connect.c
@@ -154,6 +154,7 @@ pipe_connect (assuan_context_t ctx,
pid_t pid;
int res;
struct at_pipe_fork atp;
+ unsigned int spawn_flags;
atp.user_atfork = atfork;
atp.user_atforkvalue = atforkvalue;
@@ -173,10 +174,14 @@ pipe_connect (assuan_context_t ctx,
_assuan_close (ctx, rp[1]);
return _assuan_error (ctx, gpg_err_code_from_syserror ());
}
+
+ spawn_flags = 0;
+ if (flags & ASSUAN_PIPE_CONNECT_DETACHED)
+ spawn_flags |= ASSUAN_SPAWN_DETACHED;
/* FIXME: Use atfork handler that closes child fds on Unix. */
res = _assuan_spawn (ctx, &pid, name, argv, wp[0], rp[1],
- fd_child_list, at_pipe_fork_cb, &atp, flags);
+ fd_child_list, at_pipe_fork_cb, &atp, spawn_flags);
if (res < 0)
{
rc = gpg_err_code_from_syserror ();
diff --git a/src/assuan.h b/src/assuan.h
index 7f78c0c..4886608 100644
--- a/src/assuan.h
+++ b/src/assuan.h
@@ -253,6 +253,7 @@ void assuan_set_io_monitor (assuan_context_t ctx,
#define ASSUAN_SYSTEM_HOOKS_VERSION 1
+#define ASSUAN_SPAWN_DETACHED 128
struct assuan_system_hooks
{
/* Always set to ASSUAN_SYTEM_HOOKS_VERSION. */