version 1.7, 2001/05/08 19:45:24 |
version 1.8, 2001/05/11 14:59:56 |
|
|
set_nonblock(int fd) |
set_nonblock(int fd) |
{ |
{ |
int val; |
int val; |
|
|
val = fcntl(fd, F_GETFL, 0); |
val = fcntl(fd, F_GETFL, 0); |
if (val < 0) { |
if (val < 0) { |
error("fcntl(%d, F_GETFL, 0): %s", fd, strerror(errno)); |
error("fcntl(%d, F_GETFL, 0): %s", fd, strerror(errno)); |
return; |
return; |
} |
} |
if (val & O_NONBLOCK) { |
if (val & O_NONBLOCK) { |
debug("fd %d IS O_NONBLOCK", fd); |
debug2("fd %d is O_NONBLOCK", fd); |
return; |
return; |
} |
} |
debug("fd %d setting O_NONBLOCK", fd); |
debug("fd %d setting O_NONBLOCK", fd); |
val |= O_NONBLOCK; |
val |= O_NONBLOCK; |
|
if (fcntl(fd, F_SETFL, val) == -1) |
|
if (errno != ENODEV) |
|
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
|
fd, strerror(errno)); |
|
} |
|
|
|
void |
|
unset_nonblock(int fd) |
|
{ |
|
int val; |
|
|
|
val = fcntl(fd, F_GETFL, 0); |
|
if (val < 0) { |
|
error("fcntl(%d, F_GETFL, 0): %s", fd, strerror(errno)); |
|
return; |
|
} |
|
if (!(val & O_NONBLOCK)) { |
|
debug2("fd %d is not O_NONBLOCK", fd); |
|
return; |
|
} |
|
debug("fd %d setting O_NONBLOCK", fd); |
|
val &= ~O_NONBLOCK; |
if (fcntl(fd, F_SETFL, val) == -1) |
if (fcntl(fd, F_SETFL, val) == -1) |
if (errno != ENODEV) |
if (errno != ENODEV) |
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |