X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Ffdutil.c;h=ca5f65b8f2bed79f12393ae513bc9716e48f3269;hb=bb142eb202fda78982305d8aeffc4ae5c16ab1ae;hp=c483ce8de1e4859a7d2c366246d938ed0dc8d393;hpb=a4c3af8516b1384e2856904719e75cda5bf6d669;p=catta diff --git a/src/fdutil.c b/src/fdutil.c index c483ce8..ca5f65b 100644 --- a/src/fdutil.c +++ b/src/fdutil.c @@ -23,9 +23,14 @@ #include #include -#include #include +#ifdef HAVE_FCNTL +#include +#else +#include +#endif + #include "fdutil.h" int catta_set_cloexec(int fd) { @@ -33,6 +38,7 @@ int catta_set_cloexec(int fd) { assert(fd >= 0); +#if defined(HAVE_FCNTL) if ((n = fcntl(fd, F_GETFD)) < 0) return -1; @@ -40,6 +46,15 @@ int catta_set_cloexec(int fd) { return 0; return fcntl(fd, F_SETFD, n|FD_CLOEXEC); +#elif defined(_WIN32) + (void)n; + if(!SetHandleInformation((HANDLE)fd, HANDLE_FLAG_INHERIT, 0)) + return -1; + return 0; +#else + (void)n; + return -1; +#endif } int catta_set_nonblock(int fd) { @@ -47,6 +62,7 @@ int catta_set_nonblock(int fd) { assert(fd >= 0); +#ifdef HAVE_FCNTL if ((n = fcntl(fd, F_GETFL)) < 0) return -1; @@ -54,6 +70,10 @@ int catta_set_nonblock(int fd) { return 0; return fcntl(fd, F_SETFL, n|O_NONBLOCK); +#else + n = 1; + return ioctl(fd, FIONBIO, &n); +#endif } int catta_wait_for_write(int fd) {