Commit 4afe429d authored by Philip Withnall's avatar Philip Withnall

gspawn: Use fcntl() to work around systems which don’t support O_CLOEXEC

Somehow, we are still limping along with partial support for OS X
<10.7.
Signed-off-by: Philip Withnall's avatarPhilip Withnall <withnall@endlessm.com>

#1488
parent cce309ae
......@@ -81,6 +81,12 @@
extern char **environ;
#endif
#ifndef O_CLOEXEC
#define O_CLOEXEC 0
#else
#define HAVE_O_CLOEXEC 1
#endif
/**
* SECTION:spawn
* @Short_description: process launching
......@@ -1454,6 +1460,10 @@ do_posix_spawn (gchar **argv,
g_assert (read_null != -1);
parent_close_fds[num_parent_close_fds++] = read_null;
#ifndef HAVE_O_CLOEXEC
fcntl (read_null, F_SETFD, FD_CLOEXEC);
#endif
r = posix_spawn_file_actions_adddup2 (&file_actions, read_null, 0);
if (r != 0)
goto out_close_fds;
......@@ -1474,6 +1484,10 @@ do_posix_spawn (gchar **argv,
g_assert (write_null != -1);
parent_close_fds[num_parent_close_fds++] = write_null;
#ifndef HAVE_O_CLOEXEC
fcntl (read_null, F_SETFD, FD_CLOEXEC);
#endif
r = posix_spawn_file_actions_adddup2 (&file_actions, write_null, 1);
if (r != 0)
goto out_close_fds;
......@@ -1494,6 +1508,10 @@ do_posix_spawn (gchar **argv,
g_assert (write_null != -1);
parent_close_fds[num_parent_close_fds++] = write_null;
#ifndef HAVE_O_CLOEXEC
fcntl (read_null, F_SETFD, FD_CLOEXEC);
#endif
r = posix_spawn_file_actions_adddup2 (&file_actions, write_null, 2);
if (r != 0)
goto out_close_fds;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment