diff options
Diffstat (limited to 'src/port/noblock.c')
-rw-r--r-- | src/port/noblock.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/port/noblock.c b/src/port/noblock.c new file mode 100644 index 00000000000..b7067549cdd --- /dev/null +++ b/src/port/noblock.c @@ -0,0 +1,35 @@ +/*------------------------------------------------------------------------- + * + * noblock.c + * set a file descriptor as non-blocking + * + * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * $PostgreSQL: pgsql/src/port/noblock.c,v 1.1 2004/03/10 21:12:49 momjian Exp $ + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include <sys/types.h> +#include <fcntl.h> + +bool set_noblock(int sock) +{ +#if !defined(WIN32) && !defined(__BEOS__) + return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1); +#else + long ioctlsocket_ret = 1; + + /* Returns non-0 on failure, while fcntl() returns -1 on failure */ +#ifdef WIN32 + return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0); +#endif +#ifdef __BEOS__ + return (ioctl(sock, FIONBIO, &ioctlsocket_ret) == 0); +#endif +#endif +} |