int win32_ioctl(int i, unsigned int u, char *data) { dTHX; u_long u_long_arg; int retval; if (!wsock_started) { Perl_croak_nocontext("ioctl implemented only on sockets"); /* NOTREACHED */ } /* mauke says using memcpy avoids alignment issues */ memcpy(&u_long_arg, data, sizeof u_long_arg); retval = ioctlsocket(TO_SOCKET(i), (long)u, &u_long_arg); memcpy(data, &u_long_arg, sizeof u_long_arg); if (retval == SOCKET_ERROR) { if (WSAGetLastError() == WSAENOTSOCK) { Perl_croak_nocontext("ioctl implemented only on sockets"); /* NOTREACHED */ } errno = WSAGetLastError(); } return retval; }
struct servent * win32_getservent(void) { dTHX; Perl_croak_nocontext("getservent not implemented!\n"); return (struct servent *) NULL; }
struct netent * win32_getnetbyaddr(long net, int type) { dTHX; Perl_croak_nocontext("getnetbyaddr not implemented!\n"); return (struct netent *)NULL; }
struct netent * win32_getnetbyname(char *name) { dTHX; Perl_croak_nocontext("getnetbyname not implemented!\n"); return (struct netent *)NULL; }
void start_sockets(void) { unsigned short version; WSADATA retdata; int ret; /* * initalize the winsock interface and insure that it is * cleaned up at exit. */ version = 0x2; if(ret = WSAStartup(version, &retdata)) Perl_croak_nocontext("Unable to locate winsock library!\n"); if(retdata.wVersion != version) Perl_croak_nocontext("Could not find version 2.0 of winsock dll\n"); /* atexit((void (*)(void)) EndSockets); */ wsock_started = 1; }
int win32_ioctl(int i, unsigned int u, char *data) { dTHXo; u_long argp = (u_long)data; int retval; if (!wsock_started) { Perl_croak_nocontext("ioctl implemented only on sockets"); /* NOTREACHED */ } retval = ioctlsocket(TO_SOCKET(i), (long)u, &argp); if (retval == SOCKET_ERROR) { if (WSAGetLastError() == WSAENOTSOCK) { Perl_croak_nocontext("ioctl implemented only on sockets"); /* NOTREACHED */ } errno = WSAGetLastError(); } return retval; }
void win32_setservent(int stayopen) { dTHX; Perl_croak_nocontext("setservent not implemented!\n"); }
void win32_endservent() { dTHX; Perl_croak_nocontext("endservent not implemented!\n"); }
void win32_endprotoent() { dTHXo; Perl_croak_nocontext("endprotoent not implemented!\n"); }