X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fcompat%2Fwindows%2Fwincompat.h;h=7fe21f4a8bf410a9ab459a193f8a548c218157f0;hb=a71541c2252bd51fb5f02480d8aa902efcf3e858;hp=c736f75f938dc03868c75accbad1354239e21d37;hpb=b9cafcae35680b33ba1e0d6da08a355c5b62faab;p=catta diff --git a/src/compat/windows/wincompat.h b/src/compat/windows/wincompat.h index c736f75..7fe21f4 100644 --- a/src/compat/windows/wincompat.h +++ b/src/compat/windows/wincompat.h @@ -16,6 +16,15 @@ #include +// wrappers around WSAStartup/WSACleanup to avoid clutter +void winsock_init(void); +void winsock_exit(void); + + +// the equivalent of strerror(errno) for Windows sockets +char *errnostrsocket(void); + + // Winsock doesn't have recvmsg/sendmsg but offers the same functionality // with WSARecvMsg/WSASendMsg, so we implement the former in terms of the // latter. @@ -47,14 +56,14 @@ struct msghdr { static inline struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *m) { WSAMSG wm; wm.Control.len = m->msg_controllen; - wm.Control.buf = m->msg_control; + wm.Control.buf = (char*)m->msg_control; return WSA_CMSG_FIRSTHDR(&wm); } static inline struct cmsghdr *CMSG_NXTHDR(struct msghdr *m, struct cmsghdr *c) { WSAMSG wm; wm.Control.len = m->msg_controllen; - wm.Control.buf = m->msg_control; + wm.Control.buf = (char*)m->msg_control; return WSA_CMSG_NXTHDR(&wm, c); } @@ -90,6 +99,11 @@ int ioctl(int d, unsigned long request, int *p); // something to give to WSAPoll, so we fake it with a local TCP socket. (ugh) int pipe(int pipefd[2]); +// pipe(socket)-specific read/write/close equivalents +#define closepipe closesocket +#define writepipe(s,buf,len) send(s, buf, len, 0) +#define readpipe(s,buf,len) recv(s, buf, len, 0) + // Windows logically doesn't have uname, so we supply a replacement.