diff options
Diffstat (limited to 'win32/win32sck.c')
-rw-r--r-- | win32/win32sck.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/win32/win32sck.c b/win32/win32sck.c index 64d1a0a65c..a6e7a990b8 100644 --- a/win32/win32sck.c +++ b/win32/win32sck.c @@ -223,7 +223,7 @@ win32_getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen) return r; } -int +DllExport int win32_ioctlsocket(SOCKET s, long cmd, u_long *argp) { int r; @@ -466,6 +466,28 @@ win32_getservbyport(int port, const char *proto) return r; } +int +win32_ioctl(int i, unsigned int u, char *data) +{ + u_long argp = (u_long)data; + int retval; + + if (!wsock_started) { + croak("ioctl implemented only on sockets"); + /* NOTREACHED */ + } + + retval = ioctlsocket(TO_SOCKET(i), (long)u, &argp); + if (retval == SOCKET_ERROR) { + if (WSAGetLastError() == WSAENOTSOCK) { + croak("ioctl implemented only on sockets"); + /* NOTREACHED */ + } + errno = WSAGetLastError(); + } + return retval; +} + char FAR * win32_inet_ntoa(struct in_addr in) { |