]> git.meshlink.io Git - catta/blobdiff - src/compat/windows/wincompat.h
add ioctl as a wrapper around ioctlsocket
[catta] / src / compat / windows / wincompat.h
index 6510183a870b86f95644cd6b7c64ce9bfdff9f19..b5020226a8e5465ea406bc56105e3d61a7fdd0c9 100644 (file)
@@ -69,6 +69,19 @@ static inline struct cmsghdr *CMSG_NXTHDR(struct msghdr *m, struct cmsghdr *c) {
 ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
 ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
 
+// ESHUTDOWN does not seem to exist on Windows, even though WSAESHUTDOWN does.
+// MingW doesn't define it and MSDN doesn't list it, so we alias it to EBADF.
+// cf. http://msdn.microsoft.com/en-us/library/5814770t.aspx
+#ifndef ESHUTDOWN
+#define ESHUTDOWN EBADF
+#endif
+
+
+// Windows doesn't have ioctl but offers ioctlsocket for some socket-related
+// functions. Unfortunately, argument types differ, so we implement a
+// (restricted) wrapper.
+int ioctl(int d, unsigned long request, int *p);
+
 
 // Windows logically doesn't have uname, so we supply a replacement.