diff --git a/lib/std/c.zig b/lib/std/c.zig index 2da0fea614cfa489a5ebefed4351ba3c8a8511d1..a91fee7274dca60a653013c743543c9dddf3b5bb 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -166,7 +166,7 @@ pub extern "c" fn sendto( dest_addr: ?*const sockaddr, addrlen: socklen_t, ) isize; -pub extern "c" fn sendmsg(sockfd: fd_t, msg: *const std.x.os.Socket.Message, flags: u32) isize; +pub extern "c" fn sendmsg(sockfd: fd_t, msg: *const std.x.os.Socket.Message, flags: c_int) isize; pub extern "c" fn recv(sockfd: fd_t, arg1: ?*c_void, arg2: usize, arg3: c_int) isize; pub extern "c" fn recvfrom( @@ -177,7 +177,7 @@ pub extern "c" fn recvfrom( noalias src_addr: ?*sockaddr, noalias addrlen: ?*socklen_t, ) isize; -pub extern "c" fn recvmsg(sockfd: fd_t, msg: *std.x.os.Socket.Message, flags: u32) isize; +pub extern "c" fn recvmsg(sockfd: fd_t, msg: *std.x.os.Socket.Message, flags: c_int) isize; pub usingnamespace switch (builtin.os.tag) { .netbsd => struct { diff --git a/lib/std/os.zig b/lib/std/os.zig index 4ed0be8f62c9ae501d89e695e7ebfea24c8f382b..c2c4c16bd72f9238f605657e7f8f2894bd46ede6 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -4998,7 +4998,7 @@ pub fn sendmsg( flags: u32, ) SendMsgError!usize { while (true) { - const rc = system.sendmsg(sockfd, &msg, flags); + const rc = system.sendmsg(sockfd, &msg, @intCast(c_int, flags)); if (builtin.os.tag == .windows) { if (rc == windows.ws2_32.SOCKET_ERROR) { switch (windows.ws2_32.WSAGetLastError()) { diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 0d6b87c15ffa22a351a4456c3648e65a52d86ea7..a3a8c8e431c5a6819b4a12a2633132ba7c66fb7c 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -1004,7 +1004,7 @@ pub fn sendmsg(fd: i32, msg: *const msghdr_const, flags: u32) usize { if (native_arch == .i386) { return socketcall(SC_sendmsg, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), flags }); } - return syscall3(.sendmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), flags); + return syscall3(.sendmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), @bitCast(usize, @as(isize, flags))); } pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize { @@ -1058,7 +1058,7 @@ pub fn recvmsg(fd: i32, msg: *msghdr, flags: u32) usize { if (native_arch == .i386) { return socketcall(SC_recvmsg, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), flags }); } - return syscall3(.recvmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), flags); + return syscall3(.recvmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msg), @bitCast(usize, @as(isize, flags))); } pub fn recvfrom(fd: i32, noalias buf: [*]u8, len: usize, flags: u32, noalias addr: ?*sockaddr, noalias alen: ?*socklen_t) usize { diff --git a/lib/std/x/os/socket_posix.zig b/lib/std/x/os/socket_posix.zig index b9fc21a40d8b8e7edd67f66a2d23972ccd661f91..70c8b35b5f73095db839405db38228bf5dbffd95 100644 --- a/lib/std/x/os/socket_posix.zig +++ b/lib/std/x/os/socket_posix.zig @@ -87,7 +87,7 @@ pub fn Mixin(comptime Socket: type) type { /// read into the buffer provided. pub fn readVectorized(self: Socket, msg: *Socket.Message, flags: u32) !usize { while (true) { - const rc = os.system.recvmsg(self.fd, msg, flags); + const rc = os.system.recvmsg(self.fd, msg, @intCast(c_int, flags)); return switch (os.errno(rc)) { 0 => @intCast(usize, rc), os.EBADF => unreachable, // always a race condition