Project

General

Profile

Feature #4906 ยป add_socket.1_9.patch

ghazel (Greg Hazel), 06/19/2011 10:35 PM

View differences:

include/ruby/win32.h (working copy)
extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *, int *);
extern int flock(int fd, int oper);
extern int rb_w32_has_cancel_io(void);
extern int rb_w32_add_socket(SOCKET, int);
extern void rb_w32_remove_socket(int);
extern int rb_w32_is_socket(int);
extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *);
extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int);
win32/win32.c (working copy)
}
#endif
int
rb_w32_add_socket(SOCKET sock, int flag)
{
int fd = rb_w32_open_osfhandle(sock, O_RDWR|O_BINARY|O_NOINHERIT);
if (fd != -1) {
st_insert(socklist, (st_data_t)sock, (st_data_t)flag);
}
return fd;
}
void
rb_w32_remove_socket(int fd)
{
SOCKET sock = TO_SOCKET(fd);
st_data_t key = (st_data_t)sock;
st_delete(socklist, &key, NULL);
_set_osfhnd(fd, (SOCKET)INVALID_HANDLE_VALUE);
_close(fd);
}
#undef getsockopt
static int
    (1-1/1)