]> git.meshlink.io Git - catta/blobdiff - src/compat/windows/wincompat.c
make ioctl() work for setting values
[catta] / src / compat / windows / wincompat.c
index 9aecac44340b1f204b8488e333c33f869581a7f8..98bc2d788aac5222f4007b8d7cb5e76fb7103a2a 100644 (file)
@@ -138,7 +138,12 @@ ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags)
     msg->msg_flags = (int)wsamsg.dwFlags;
         // all flags that fit into dwFlags also fit into msg_flags (see above)
 
-    catta_log_debug("recvmsg: %u bytes received", (unsigned int)bytesrcvd);
+    // XXX debug, remove
+    {
+        char where[64];
+        getnameinfo(msg->msg_name, msg->msg_namelen, where, sizeof(where), NULL, 0, NI_NUMERICHOST);
+        catta_log_debug("recvmsg: %u bytes from %s", (unsigned int)bytesrcvd, where);
+    }
     return bytesrcvd;
 }
 
@@ -218,12 +223,7 @@ ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags)
     // XXX debug, remove
     {
         char where[64];
-        struct sockaddr *sa = msg->msg_name;
-
-        if(sa->sa_family == AF_INET)
-            inet_ntop(sa->sa_family, &((struct sockaddr_in *)sa)->sin_addr, where, sizeof(where));
-        else
-            inet_ntop(sa->sa_family, &((struct sockaddr_in6 *)sa)->sin6_addr, where, sizeof(where));
+        getnameinfo(msg->msg_name, msg->msg_namelen, where, sizeof(where), NULL, 0, NI_NUMERICHOST);
         catta_log_debug("sendmsg: %u bytes to %s", (unsigned int)bytessent, where);
     }
     return bytessent;
@@ -231,7 +231,7 @@ ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags)
 
 int ioctl(int d, unsigned long request, int *p)
 {
-    u_long arg = 0;
+    u_long arg = *p;
 
     if(ioctlsocket(d, request, &arg) == SOCKET_ERROR) {
         errno = wsa_errno();