torture3: Add some brlock entries in cleanup2
[Samba.git] / ctdb / lib / util / util.c
blobaf5280599547e199272e22746d43ac3844d0f39b
1 /*
2 Unix SMB/CIFS implementation.
4 Copyright (C) Andrew Tridgell 2005
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 #include "includes.h"
21 #include "system/filesys.h"
24 /**
25 Set a fd into blocking/nonblocking mode. Uses POSIX O_NONBLOCK if available,
26 else
27 if SYSV use O_NDELAY
28 if BSD use FNDELAY
29 **/
31 _PUBLIC_ int set_blocking(int fd, bool set)
33 int val;
34 #ifdef O_NONBLOCK
35 #define FLAG_TO_SET O_NONBLOCK
36 #else
37 #ifdef SYSV
38 #define FLAG_TO_SET O_NDELAY
39 #else /* BSD */
40 #define FLAG_TO_SET FNDELAY
41 #endif
42 #endif
44 if((val = fcntl(fd, F_GETFL, 0)) == -1)
45 return -1;
46 if(set) /* Turn blocking on - ie. clear nonblock flag */
47 val &= ~FLAG_TO_SET;
48 else
49 val |= FLAG_TO_SET;
50 return fcntl( fd, F_SETFL, val);
51 #undef FLAG_TO_SET