about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndy Russell <arussell123@gmail.com>2020-01-04 18:11:56 -0500
committerAndy Russell <arussell123@gmail.com>2020-01-04 19:44:49 -0500
commitc8774302d18a1b704b797f387108c5115cd87d3a (patch)
treebc913a32b7ed3a01f407f90ffd2f3f37f90f7394
parent760ce94c69ca510d44087291c311296f6d9ccdf5 (diff)
downloadrust-c8774302d18a1b704b797f387108c5115cd87d3a.tar.gz
rust-c8774302d18a1b704b797f387108c5115cd87d3a.zip
remove bespoke flock bindings
-rw-r--r--src/librustc_data_structures/flock.rs121
1 files changed, 15 insertions, 106 deletions
diff --git a/src/librustc_data_structures/flock.rs b/src/librustc_data_structures/flock.rs
index 01f25a054f0..e3282c5d276 100644
--- a/src/librustc_data_structures/flock.rs
+++ b/src/librustc_data_structures/flock.rs
@@ -13,96 +13,9 @@ use std::path::Path;
 cfg_if! {
     if #[cfg(unix)] {
         use std::ffi::{CString, OsStr};
+        use std::mem;
         use std::os::unix::prelude::*;
 
-        #[cfg(any(target_os = "linux", target_os = "android"))]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_pid: libc::pid_t,
-
-                // not actually here, but brings in line with freebsd
-                pub l_sysid: libc::c_int,
-            }
-        }
-
-        #[cfg(target_os = "freebsd")]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_pid: libc::pid_t,
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-                pub l_sysid: libc::c_int,
-            }
-        }
-
-        #[cfg(any(target_os = "dragonfly",
-                  target_os = "netbsd",
-                  target_os = "openbsd"))]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_pid: libc::pid_t,
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-
-                // not actually here, but brings in line with freebsd
-                pub l_sysid: libc::c_int,
-            }
-        }
-
-        #[cfg(target_os = "haiku")]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_pid: libc::pid_t,
-
-                // not actually here, but brings in line with freebsd
-                pub l_sysid: libc::c_int,
-            }
-        }
-
-        #[cfg(any(target_os = "macos", target_os = "ios"))]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_pid: libc::pid_t,
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-
-                // not actually here, but brings in line with freebsd
-                pub l_sysid: libc::c_int,
-            }
-        }
-
-        #[cfg(target_os = "solaris")]
-        mod os {
-            #[repr(C)]
-            pub struct flock {
-                pub l_type: libc::c_short,
-                pub l_whence: libc::c_short,
-                pub l_start: libc::off_t,
-                pub l_len: libc::off_t,
-                pub l_sysid: libc::c_int,
-                pub l_pid: libc::pid_t,
-            }
-        }
-
         #[derive(Debug)]
         pub struct Lock {
             fd: libc::c_int,
@@ -132,19 +45,17 @@ cfg_if! {
                 }
 
                 let lock_type = if exclusive {
-                    libc::F_WRLCK as libc::c_short
+                    libc::F_WRLCK
                 } else {
-                    libc::F_RDLCK as libc::c_short
+                    libc::F_RDLCK
                 };
 
-                let flock = os::flock {
-                    l_start: 0,
-                    l_len: 0,
-                    l_pid: 0,
-                    l_whence: libc::SEEK_SET as libc::c_short,
-                    l_type: lock_type,
-                    l_sysid: 0,
-                };
+                let mut flock: libc::flock = unsafe { mem::zeroed() };
+                flock.l_type = lock_type as libc::c_short;
+                flock.l_whence = libc::SEEK_SET as libc::c_short;
+                flock.l_start = 0;
+                flock.l_len = 0;
+
                 let cmd = if wait { libc::F_SETLKW } else { libc::F_SETLK };
                 let ret = unsafe {
                     libc::fcntl(fd, cmd, &flock)
@@ -161,14 +72,12 @@ cfg_if! {
 
         impl Drop for Lock {
             fn drop(&mut self) {
-                let flock = os::flock {
-                    l_start: 0,
-                    l_len: 0,
-                    l_pid: 0,
-                    l_whence: libc::SEEK_SET as libc::c_short,
-                    l_type: libc::F_UNLCK as libc::c_short,
-                    l_sysid: 0,
-                };
+                let mut flock: libc::flock = unsafe { mem::zeroed() };
+                flock.l_type = libc::F_UNLCK as libc::c_short;
+                flock.l_whence = libc::SEEK_SET as libc::c_short;
+                flock.l_start = 0;
+                flock.l_len = 0;
+
                 unsafe {
                     libc::fcntl(self.fd, libc::F_SETLK, &flock);
                     libc::close(self.fd);