aboutsummaryrefslogtreecommitdiff
path: root/src/port/noblock.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2004-03-10 21:12:49 +0000
committerBruce Momjian <bruce@momjian.us>2004-03-10 21:12:49 +0000
commit60a068b3897a27cbb1a13a6b050d05a0ca479055 (patch)
tree145b28e9421e24a29df2f9c3ff188af3d98800cf /src/port/noblock.c
parentae22a6c185bb82deb9fe547641969396cc3648b9 (diff)
downloadpostgresql-60a068b3897a27cbb1a13a6b050d05a0ca479055.tar.gz
postgresql-60a068b3897a27cbb1a13a6b050d05a0ca479055.zip
Move non-blocking code into its own /port file, for code clarity.
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
+}