From f3b9748e4ce5d1a5d052cbdc75885c413363651f Mon Sep 17 00:00:00 2001
From: Alex Crichton <alex@alexcrichton.com>
Date: Wed, 16 Sep 2015 14:13:20 -0700
Subject: [PATCH] Start testing types of struct fields

---
 libc-test/build.rs     | 5 +++++
 src/unix/mod.rs        | 2 +-
 src/unix/notbsd/mod.rs | 4 ++--
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/libc-test/build.rs b/libc-test/build.rs
index 0e5cd9f9..233983d9 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -189,5 +189,10 @@ fn main() {
     // Windows dllimport oddness?
     cfg.skip_fn_ptrcheck(move |_| windows);
 
+    cfg.skip_field_type(|struct_, field| {
+        // This is a weird union, don't check the type.
+        struct_ == "ifaddrs" && field == "ifa_ifu"
+    });
+
     cfg.generate("../src/lib.rs", "all.rs");
 }
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 14c427fd..cacecbc3 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -48,7 +48,7 @@ s! {
     }
 
     pub struct in6_addr {
-        pub s6_addr: [u16; 8],
+        pub s6_addr16: [u16; 8],
         __align: [u32; 0],
     }
 
diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs
index 87fec5e1..8591420c 100644
--- a/src/unix/notbsd/mod.rs
+++ b/src/unix/notbsd/mod.rs
@@ -24,7 +24,7 @@ pub enum timezone {}
 s! {
     pub struct sockaddr {
         pub sa_family: sa_family_t,
-        pub sa_data: [u8; 14],
+        pub sa_data: [::c_char; 14],
     }
 
     pub struct sockaddr_in {
@@ -49,7 +49,7 @@ s! {
 
     pub struct sockaddr_storage {
         pub ss_family: sa_family_t,
-        __ss_align: isize,
+        __ss_align: ::size_t,
         #[cfg(target_pointer_width = "32")]
         __ss_pad2: [u8; 128 - 2 * 4],
         #[cfg(target_pointer_width = "64")]
-- 
GitLab