Commit 9babcac7a6

daurnimator <quae@daurnimator.com>
2019-04-21 10:03:57
std: improve msghdr definition
1 parent bb25f21
Changed files (4)
std/c/freebsd.zig
@@ -42,14 +42,19 @@ pub const pthread_attr_t = extern struct {
 };
 
 pub const msghdr = extern struct {
-    msg_name: *u8,
+    /// optional address
+    msg_name: ?*sockaddr,
+    /// size of address
     msg_namelen: socklen_t,
-    msg_iov: *iovec,
+    /// scatter/gather array
+    msg_iov: [*]iovec,
+    /// # elements in msg_iov
     msg_iovlen: i32,
-    __pad1: i32,
-    msg_control: *u8,
+    /// ancillary data
+    msg_control: ?*c_void,
+    /// ancillary data buffer len
     msg_controllen: socklen_t,
-    __pad2: socklen_t,
+    /// flags on received message
     msg_flags: i32,
 };
 
std/c/netbsd.zig
@@ -42,14 +42,19 @@ pub const pthread_attr_t = extern struct {
 };
 
 pub const msghdr = extern struct {
-    msg_name: *u8,
+    /// optional address
+    msg_name: ?*sockaddr,
+    /// size of address
     msg_namelen: socklen_t,
-    msg_iov: *iovec,
+    /// scatter/gather array
+    msg_iov: [*]iovec,
+    /// # elements in msg_iov
     msg_iovlen: i32,
-    __pad1: i32,
-    msg_control: *u8,
+    /// ancillary data
+    msg_control: ?*c_void,
+    /// ancillary data buffer len
     msg_controllen: socklen_t,
-    __pad2: socklen_t,
+    /// flags on received message
     msg_flags: i32,
 };
 
std/os/linux/arm64.zig
@@ -415,12 +415,12 @@ pub fn syscall6(
 pub extern fn clone(func: extern fn (arg: usize) u8, stack: usize, flags: u32, arg: usize, ptid: *i32, tls: usize, ctid: *i32) usize;
 
 pub const msghdr = extern struct {
-    msg_name: *u8,
+    msg_name: ?*sockaddr,
     msg_namelen: socklen_t,
-    msg_iov: *iovec,
+    msg_iov: [*]iovec,
     msg_iovlen: i32,
     __pad1: i32,
-    msg_control: *u8,
+    msg_control: ?*c_void,
     msg_controllen: socklen_t,
     __pad2: socklen_t,
     msg_flags: i32,
std/os/linux/x86_64.zig
@@ -1,5 +1,6 @@
 const std = @import("../../std.zig");
 const linux = std.os.linux;
+const sockaddr = linux.sockaddr;
 const socklen_t = linux.socklen_t;
 const iovec = linux.iovec;
 
@@ -483,12 +484,12 @@ pub nakedcc fn restore_rt() void {
 }
 
 pub const msghdr = extern struct {
-    msg_name: *u8,
+    msg_name: ?*sockaddr,
     msg_namelen: socklen_t,
-    msg_iov: *iovec,
+    msg_iov: [*]iovec,
     msg_iovlen: i32,
     __pad1: i32,
-    msg_control: *u8,
+    msg_control: ?*c_void,
     msg_controllen: socklen_t,
     __pad2: socklen_t,
     msg_flags: i32,