aboutsummaryrefslogtreecommitdiff
path: root/src/port/noblock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/port/noblock.c')
-rw-r--r--src/port/noblock.c35
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
+}