From 4382e8b876a3991e1be2827be76630e1b67b8e03 Mon Sep 17 00:00:00 2001 From: Andrew Walton Date: Tue, 12 Nov 2013 13:04:49 -0800 Subject: [PATCH] CLOEXEC fix for older FreeBSDs and OS X. Some older POSIX-flavored operating systems may not have adopted O_CLOEXEC yet. See https://bugzilla.gnome.org/show_bug.cgi?id=712136. --- gio/gsubprocess.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gio/gsubprocess.c b/gio/gsubprocess.c index ca9b00607..bced7a5e3 100644 --- a/gio/gsubprocess.c +++ b/gio/gsubprocess.c @@ -108,6 +108,12 @@ #define O_BINARY 0 #endif +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#else +#define HAVE_O_CLOEXEC 1 +#endif + #define COMMUNICATE_READ_SIZE 4096 /* A GSubprocess can have two possible states: running and not. @@ -356,6 +362,10 @@ unix_open_file (const char *filename, g_free (display_name); /* fall through... */ } +#ifndef HAVE_O_CLOEXEC + else + fcntl (my_fd, F_SETFD, FD_CLOEXEC); +#endif return my_fd; }