mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-09-17 04:06:18 +00:00
Merge pull request #2637 from devnexen/fsext_obsd
fsext build fix for OpenBSD.
This commit is contained in:
commit
fd4fd36a3e
1 changed files with 58 additions and 17 deletions
|
@ -88,13 +88,12 @@ use std::time::UNIX_EPOCH;
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_vendor = "apple",
|
target_vendor = "apple",
|
||||||
target_os = "android",
|
target_os = "android",
|
||||||
target_os = "freebsd"
|
target_os = "freebsd",
|
||||||
|
target_os = "openbsd"
|
||||||
))]
|
))]
|
||||||
pub use libc::statfs as StatFs;
|
pub use libc::statfs as StatFs;
|
||||||
#[cfg(any(
|
#[cfg(any(
|
||||||
target_os = "openbsd",
|
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
target_os = "openbsd",
|
|
||||||
target_os = "bitrig",
|
target_os = "bitrig",
|
||||||
target_os = "dragonfly",
|
target_os = "dragonfly",
|
||||||
target_os = "redox"
|
target_os = "redox"
|
||||||
|
@ -105,13 +104,12 @@ pub use libc::statvfs as StatFs;
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_vendor = "apple",
|
target_vendor = "apple",
|
||||||
target_os = "android",
|
target_os = "android",
|
||||||
target_os = "freebsd"
|
target_os = "freebsd",
|
||||||
|
target_os = "openbsd",
|
||||||
))]
|
))]
|
||||||
pub use libc::statfs as statfs_fn;
|
pub use libc::statfs as statfs_fn;
|
||||||
#[cfg(any(
|
#[cfg(any(
|
||||||
target_os = "openbsd",
|
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
target_os = "openbsd",
|
|
||||||
target_os = "bitrig",
|
target_os = "bitrig",
|
||||||
target_os = "dragonfly",
|
target_os = "dragonfly",
|
||||||
target_os = "redox"
|
target_os = "redox"
|
||||||
|
@ -311,9 +309,19 @@ impl MountInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_vendor = "apple", target_os = "freebsd", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
#[cfg(any(target_os = "freebsd", target_vendor = "apple", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
impl From<StatFs> for MountInfo {
|
impl From<StatFs> for MountInfo {
|
||||||
fn from(statfs: StatFs) -> Self {
|
fn from(statfs: StatFs) -> Self {
|
||||||
let mut info = MountInfo {
|
let mut info = MountInfo {
|
||||||
|
@ -346,9 +354,19 @@ impl From<StatFs> for MountInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "freebsd", target_vendor = "apple", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
use libc::c_int;
|
use libc::c_int;
|
||||||
#[cfg(any(target_os = "freebsd", target_vendor = "apple", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[cfg(all(target_vendor = "apple", target_arch = "x86_64"))]
|
#[cfg(all(target_vendor = "apple", target_arch = "x86_64"))]
|
||||||
#[link_name = "getmntinfo$INODE64"] // spell-checker:disable-line
|
#[link_name = "getmntinfo$INODE64"] // spell-checker:disable-line
|
||||||
|
@ -357,6 +375,7 @@ extern "C" {
|
||||||
#[cfg(any(
|
#[cfg(any(
|
||||||
all(target_os = "freebsd"),
|
all(target_os = "freebsd"),
|
||||||
all(target_os = "netbsd"),
|
all(target_os = "netbsd"),
|
||||||
|
all(target_os = "openbsd"),
|
||||||
all(target_vendor = "apple", target_arch = "aarch64")
|
all(target_vendor = "apple", target_arch = "aarch64")
|
||||||
))]
|
))]
|
||||||
#[link_name = "getmntinfo"] // spell-checker:disable-line
|
#[link_name = "getmntinfo"] // spell-checker:disable-line
|
||||||
|
@ -371,10 +390,16 @@ use std::io::{BufRead, BufReader};
|
||||||
target_vendor = "apple",
|
target_vendor = "apple",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "windows",
|
target_os = "windows",
|
||||||
target_os = "netbsd"
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
))]
|
))]
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
#[cfg(any(target_vendor = "apple", target_os = "freebsd", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
use std::slice;
|
use std::slice;
|
||||||
/// Read file system list.
|
/// Read file system list.
|
||||||
pub fn read_fs_list() -> Vec<MountInfo> {
|
pub fn read_fs_list() -> Vec<MountInfo> {
|
||||||
|
@ -394,7 +419,12 @@ pub fn read_fs_list() -> Vec<MountInfo> {
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
}
|
}
|
||||||
#[cfg(any(target_os = "freebsd", target_vendor = "apple", target_os = "netbsd"))]
|
#[cfg(any(
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
{
|
{
|
||||||
let mut mount_buffer_ptr: *mut StatFs = ptr::null_mut();
|
let mut mount_buffer_ptr: *mut StatFs = ptr::null_mut();
|
||||||
let len = unsafe { get_mount_info(&mut mount_buffer_ptr, 1_i32) };
|
let len = unsafe { get_mount_info(&mut mount_buffer_ptr, 1_i32) };
|
||||||
|
@ -611,13 +641,23 @@ impl FsMeta for StatFs {
|
||||||
//
|
//
|
||||||
// Solaris, Irix and POSIX have a system call statvfs(2) that returns a
|
// Solaris, Irix and POSIX have a system call statvfs(2) that returns a
|
||||||
// struct statvfs, containing an unsigned long f_fsid
|
// struct statvfs, containing an unsigned long f_fsid
|
||||||
#[cfg(any(target_vendor = "apple", target_os = "freebsd", target_os = "linux"))]
|
#[cfg(any(
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "linux",
|
||||||
|
target_os = "openbsd"
|
||||||
|
))]
|
||||||
fn fsid(&self) -> u64 {
|
fn fsid(&self) -> u64 {
|
||||||
let f_fsid: &[u32; 2] =
|
let f_fsid: &[u32; 2] =
|
||||||
unsafe { &*(&self.f_fsid as *const libc::fsid_t as *const [u32; 2]) };
|
unsafe { &*(&self.f_fsid as *const libc::fsid_t as *const [u32; 2]) };
|
||||||
(u64::from(f_fsid[0])) << 32 | u64::from(f_fsid[1])
|
(u64::from(f_fsid[0])) << 32 | u64::from(f_fsid[1])
|
||||||
}
|
}
|
||||||
#[cfg(not(any(target_vendor = "apple", target_os = "freebsd", target_os = "linux")))]
|
#[cfg(not(any(
|
||||||
|
target_vendor = "apple",
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "linux",
|
||||||
|
target_os = "openbsd"
|
||||||
|
)))]
|
||||||
fn fsid(&self) -> u64 {
|
fn fsid(&self) -> u64 {
|
||||||
self.f_fsid as u64
|
self.f_fsid as u64
|
||||||
}
|
}
|
||||||
|
@ -630,7 +670,7 @@ impl FsMeta for StatFs {
|
||||||
fn namelen(&self) -> u64 {
|
fn namelen(&self) -> u64 {
|
||||||
1024
|
1024
|
||||||
}
|
}
|
||||||
#[cfg(any(target_os = "freebsd", target_os = "netbsd"))]
|
#[cfg(any(target_os = "freebsd", target_os = "netbsd", target_os = "openbsd"))]
|
||||||
fn namelen(&self) -> u64 {
|
fn namelen(&self) -> u64 {
|
||||||
self.f_namemax as u64 // spell-checker:disable-line
|
self.f_namemax as u64 // spell-checker:disable-line
|
||||||
}
|
}
|
||||||
|
@ -639,7 +679,8 @@ impl FsMeta for StatFs {
|
||||||
target_vendor = "apple",
|
target_vendor = "apple",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_os = "netbsd"
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd"
|
||||||
)))]
|
)))]
|
||||||
fn namelen(&self) -> u64 {
|
fn namelen(&self) -> u64 {
|
||||||
self.f_namemax as u64 // spell-checker:disable-line
|
self.f_namemax as u64 // spell-checker:disable-line
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue