diff options
author | Chris Rankin <rankincj@yahoo.com> | 2011-10-03 12:38:45 +0100 |
---|---|---|
committer | Chris Rankin <rankincj@yahoo.com> | 2011-10-03 12:38:45 +0100 |
commit | a39a950269d165f18448cc7d6da691bf14b9e03b (patch) | |
tree | 2ff0626b06e3e87cb9f3d7678af4859b5d65b594 /src/xine-utils/utils.c | |
parent | cba782a23ee5c9c668e02f9c6d95acba70464d18 (diff) | |
download | xine-lib-a39a950269d165f18448cc7d6da691bf14b9e03b.tar.gz xine-lib-a39a950269d165f18448cc7d6da691bf14b9e03b.tar.bz2 |
Prefix open_cloexec() and create_cloexec() with xine_, and add new xine_socket_cloexec() function.
Diffstat (limited to 'src/xine-utils/utils.c')
-rw-r--r-- | src/xine-utils/utils.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/xine-utils/utils.c b/src/xine-utils/utils.c index 02a06aa24..61f2d71c5 100644 --- a/src/xine-utils/utils.c +++ b/src/xine-utils/utils.c @@ -35,10 +35,12 @@ #include <errno.h> #include <pwd.h> +#include <sys/types.h> #include <sys/time.h> #include <time.h> #include <unistd.h> #include <fcntl.h> +#include <sys/socket.h> #if HAVE_EXECINFO_H #include <execinfo.h> @@ -734,7 +736,7 @@ static int set_close_on_execute(int fd) } -int open_cloexec(const char *name, int flags) +int xine_open_cloexec(const char *name, int flags) { int fd = open(name, (flags | O_CLOEXEC)); @@ -745,7 +747,7 @@ int open_cloexec(const char *name, int flags) return fd; } -int create_cloexec(const char *name, int flags, mode_t mode) +int xine_create_cloexec(const char *name, int flags, mode_t mode) { int fd = open(name, (flags | O_CREAT | O_CLOEXEC), mode); @@ -756,3 +758,18 @@ int create_cloexec(const char *name, int flags, mode_t mode) return fd; } +int xine_socket_cloexec(int domain, int type, int protocol) +{ + int s = socket(domain, type, protocol); + + if (s >= 0) { +#ifndef WIN32 + fcntl(s, F_SETFD, FD_CLOEXEC); +#else + SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0); +#endif + } + + return s; +} + |