Index: fusl/src/network/recvmsg.c |
diff --git a/fusl/src/network/recvmsg.c b/fusl/src/network/recvmsg.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4f526659183defd2405ed6961b8ccca9e8ded1f5 |
--- /dev/null |
+++ b/fusl/src/network/recvmsg.c |
@@ -0,0 +1,22 @@ |
+#include <sys/socket.h> |
+#include <limits.h> |
+#include "syscall.h" |
+#include "libc.h" |
+ |
+ssize_t recvmsg(int fd, struct msghdr *msg, int flags) |
+{ |
+ ssize_t r; |
+#if LONG_MAX > INT_MAX |
+ struct msghdr h, *orig = msg; |
+ if (msg) { |
+ h = *msg; |
+ h.__pad1 = h.__pad2 = 0; |
+ msg = &h; |
+ } |
+#endif |
+ r = socketcall_cp(recvmsg, fd, msg, flags, 0, 0, 0); |
+#if LONG_MAX > INT_MAX |
+ if (orig) *orig = h; |
+#endif |
+ return r; |
+} |