add io_block
parent
6e7198e23a
commit
d468ea9eb7
@ -0,0 +1,15 @@
|
||||
.TH io_block 3
|
||||
.SH NAME
|
||||
io_block \- switch to blocking I/O
|
||||
.SH SYNTAX
|
||||
.B #include <io.h>
|
||||
|
||||
void \fBio_block\fP(int64 fd);
|
||||
.SH DESCRIPTION
|
||||
io_block puts UNIX descriptor fd into ``blocking mode.''
|
||||
|
||||
File descriptors are normally in blocking mode, except if they come from
|
||||
accept() or io_accept() and the listening socket was in non-blocking
|
||||
mode.
|
||||
.SH "SEE ALSO"
|
||||
io_nonblock(3)
|
@ -0,0 +1,25 @@
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "io_internal.h"
|
||||
|
||||
#ifdef __MINGW32__
|
||||
#include <winsock2.h>
|
||||
#include "windoze.h"
|
||||
#endif
|
||||
|
||||
#ifndef O_NDELAY
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
#endif
|
||||
|
||||
void io_block(int64 d) {
|
||||
io_entry* e=array_get(&io_fds,sizeof(io_entry),d);
|
||||
#ifdef __MINGW32__
|
||||
unsigned long i=0;
|
||||
if (ioctlsocket( d, FIONBIO, &i)==0)
|
||||
if (e) e->nonblock=0;
|
||||
#else
|
||||
if (fcntl(d,F_SETFL,fcntl(d,F_GETFL,0) & ~O_NDELAY)==0)
|
||||
if (e) e->nonblock=0;
|
||||
#endif
|
||||
}
|
Loading…
Reference in New Issue