]> granicus.if.org Git - postgresql/blob - src/port/noblock.c
Remove BEOS port.
[postgresql] / src / port / noblock.c
1 /*-------------------------------------------------------------------------
2  *
3  * noblock.c
4  *        set a file descriptor as non-blocking
5  *
6  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * IDENTIFICATION
10  *        $PostgreSQL: pgsql/src/port/noblock.c,v 1.9 2006/01/05 03:01:38 momjian Exp $
11  *
12  *-------------------------------------------------------------------------
13  */
14
15 #include "c.h"
16
17 #include <fcntl.h>
18
19
20 bool
21 pg_set_noblock(int sock)
22 {
23 #if !defined(WIN32)
24         return (fcntl(sock, F_SETFL, O_NONBLOCK) != -1);
25 #else
26         long            ioctlsocket_ret = 1;
27
28         /* Returns non-0 on failure, while fcntl() returns -1 on failure */
29         return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0);
30 #endif
31 }
32
33
34 bool
35 pg_set_block(int sock)
36 {
37 #if !defined(WIN32)
38         int                     flags;
39
40         flags = fcntl(sock, F_GETFL);
41         if (flags < 0 || fcntl(sock, F_SETFL, (long) (flags & ~O_NONBLOCK)))
42                 return false;
43         return true;
44 #else
45         long            ioctlsocket_ret = 0;
46
47         /* Returns non-0 on failure, while fcntl() returns -1 on failure */
48         return (ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0);
49 #endif
50 }