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.
This commit is contained in:
Andrew Walton 2013-11-12 13:04:49 -08:00 committed by Matthias Clasen
parent f969f1fc25
commit 4382e8b876

View File

@ -108,6 +108,12 @@
#define O_BINARY 0 #define O_BINARY 0
#endif #endif
#ifndef O_CLOEXEC
#define O_CLOEXEC 0
#else
#define HAVE_O_CLOEXEC 1
#endif
#define COMMUNICATE_READ_SIZE 4096 #define COMMUNICATE_READ_SIZE 4096
/* A GSubprocess can have two possible states: running and not. /* A GSubprocess can have two possible states: running and not.
@ -356,6 +362,10 @@ unix_open_file (const char *filename,
g_free (display_name); g_free (display_name);
/* fall through... */ /* fall through... */
} }
#ifndef HAVE_O_CLOEXEC
else
fcntl (my_fd, F_SETFD, FD_CLOEXEC);
#endif
return my_fd; return my_fd;
} }