PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
noblock.c
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* noblock.c
4
* set a file descriptor as blocking or non-blocking
5
*
6
* Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7
* Portions Copyright (c) 1994, Regents of the University of California
8
*
9
* IDENTIFICATION
10
* src/port/noblock.c
11
*
12
*-------------------------------------------------------------------------
13
*/
14
15
#include "
c.h
"
16
17
#include <fcntl.h>
18
19
20
/*
21
* Put socket into nonblock mode.
22
* Returns true on success, false on failure.
23
*/
24
bool
25
pg_set_noblock
(
pgsocket
sock)
26
{
27
#if !defined(WIN32)
28
int
flags;
29
30
flags =
fcntl
(sock,
F_GETFL
);
31
if
(flags < 0)
32
return
false
;
33
if
(
fcntl
(sock,
F_SETFL
, (flags |
O_NONBLOCK
)) == -1)
34
return
false
;
35
return
true
;
36
#else
37
unsigned
long
ioctlsocket_ret
= 1;
38
39
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
40
return
(
ioctlsocket
(sock,
FIONBIO
, &
ioctlsocket_ret
) == 0);
41
#endif
42
}
43
44
/*
45
* Put socket into blocking mode.
46
* Returns true on success, false on failure.
47
*/
48
bool
49
pg_set_block
(
pgsocket
sock)
50
{
51
#if !defined(WIN32)
52
int
flags;
53
54
flags =
fcntl
(sock,
F_GETFL
);
55
if
(flags < 0)
56
return
false
;
57
if
(
fcntl
(sock,
F_SETFL
, (flags & ~
O_NONBLOCK
)) == -1)
58
return
false
;
59
return
true
;
60
#else
61
unsigned
long
ioctlsocket_ret
= 0;
62
63
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
64
return
(
ioctlsocket
(sock,
FIONBIO
, &
ioctlsocket_ret
) == 0);
65
#endif
66
}
c.h
pg_set_noblock
bool pg_set_noblock(pgsocket sock)
Definition
noblock.c:25
pg_set_block
bool pg_set_block(pgsocket sock)
Definition
noblock.c:49
pgsocket
int pgsocket
Definition
port.h:29
fb
static int fb(int x)
Definition
preproc-init.c:92
src
port
noblock.c
Generated on Tue Jan 27 2026 12:13:17 for PostgreSQL Source Code by
1.9.8