mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 15:22:38 +00:00
Add support in uucore for OpenBSD
- uucore/src/lib/features/fs.rs: add target_os = OpenBSD when needed - uucore/src/lib/features/fsext.rs: implement FsUsage::new for OpenBSD - fixes uutils/coreutils#5448 - initial code by n1000 https://github.com/n1000/coreutils/tree/openbsd_compile_fixes Signed-off-by: Laurent Cheylus <foxy@free.fr>
This commit is contained in:
parent
3cadeb734d
commit
420df3db3d
2 changed files with 38 additions and 6 deletions
|
@ -115,6 +115,7 @@ impl FileInformation {
|
||||||
not(target_os = "android"),
|
not(target_os = "android"),
|
||||||
not(target_os = "freebsd"),
|
not(target_os = "freebsd"),
|
||||||
not(target_os = "netbsd"),
|
not(target_os = "netbsd"),
|
||||||
|
not(target_os = "openbsd"),
|
||||||
not(target_os = "illumos"),
|
not(target_os = "illumos"),
|
||||||
not(target_os = "solaris"),
|
not(target_os = "solaris"),
|
||||||
not(target_arch = "aarch64"),
|
not(target_arch = "aarch64"),
|
||||||
|
@ -130,6 +131,7 @@ impl FileInformation {
|
||||||
target_os = "android",
|
target_os = "android",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd",
|
||||||
target_os = "illumos",
|
target_os = "illumos",
|
||||||
target_os = "solaris",
|
target_os = "solaris",
|
||||||
target_arch = "aarch64",
|
target_arch = "aarch64",
|
||||||
|
@ -146,13 +148,14 @@ impl FileInformation {
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
pub fn inode(&self) -> u64 {
|
pub fn inode(&self) -> u64 {
|
||||||
#[cfg(all(
|
#[cfg(all(
|
||||||
not(any(target_os = "freebsd", target_os = "netbsd")),
|
not(any(target_os = "freebsd", target_os = "netbsd", target_os = "openbsd")),
|
||||||
target_pointer_width = "64"
|
target_pointer_width = "64"
|
||||||
))]
|
))]
|
||||||
return self.0.st_ino;
|
return self.0.st_ino;
|
||||||
#[cfg(any(
|
#[cfg(any(
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd",
|
||||||
not(target_pointer_width = "64")
|
not(target_pointer_width = "64")
|
||||||
))]
|
))]
|
||||||
return self.0.st_ino.into();
|
return self.0.st_ino.into();
|
||||||
|
|
|
@ -497,7 +497,10 @@ impl FsUsage {
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
pub fn new(statvfs: StatFs) -> Self {
|
pub fn new(statvfs: StatFs) -> Self {
|
||||||
{
|
{
|
||||||
#[cfg(all(not(target_os = "freebsd"), target_pointer_width = "64"))]
|
#[cfg(all(
|
||||||
|
not(any(target_os = "freebsd", target_os = "openbsd")),
|
||||||
|
target_pointer_width = "64"
|
||||||
|
))]
|
||||||
return Self {
|
return Self {
|
||||||
blocksize: statvfs.f_bsize as u64, // or `statvfs.f_frsize` ?
|
blocksize: statvfs.f_bsize as u64, // or `statvfs.f_frsize` ?
|
||||||
blocks: statvfs.f_blocks,
|
blocks: statvfs.f_blocks,
|
||||||
|
@ -507,7 +510,10 @@ impl FsUsage {
|
||||||
files: statvfs.f_files,
|
files: statvfs.f_files,
|
||||||
ffree: statvfs.f_ffree,
|
ffree: statvfs.f_ffree,
|
||||||
};
|
};
|
||||||
#[cfg(all(not(target_os = "freebsd"), not(target_pointer_width = "64")))]
|
#[cfg(all(
|
||||||
|
not(any(target_os = "freebsd", target_os = "openbsd")),
|
||||||
|
not(target_pointer_width = "64")
|
||||||
|
))]
|
||||||
return Self {
|
return Self {
|
||||||
blocksize: statvfs.f_bsize as u64, // or `statvfs.f_frsize` ?
|
blocksize: statvfs.f_bsize as u64, // or `statvfs.f_frsize` ?
|
||||||
blocks: statvfs.f_blocks.into(),
|
blocks: statvfs.f_blocks.into(),
|
||||||
|
@ -530,6 +536,19 @@ impl FsUsage {
|
||||||
files: statvfs.f_files,
|
files: statvfs.f_files,
|
||||||
ffree: statvfs.f_ffree.try_into().unwrap(),
|
ffree: statvfs.f_ffree.try_into().unwrap(),
|
||||||
};
|
};
|
||||||
|
#[cfg(target_os = "openbsd")]
|
||||||
|
return Self {
|
||||||
|
blocksize: statvfs.f_bsize.into(),
|
||||||
|
blocks: statvfs.f_blocks,
|
||||||
|
bfree: statvfs.f_bfree,
|
||||||
|
bavail: statvfs.f_bavail.try_into().unwrap(),
|
||||||
|
bavail_top_bit_set: ((std::convert::TryInto::<u64>::try_into(statvfs.f_bavail)
|
||||||
|
.unwrap())
|
||||||
|
& (1u64.rotate_right(1)))
|
||||||
|
!= 0,
|
||||||
|
files: statvfs.f_files,
|
||||||
|
ffree: statvfs.f_ffree,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[cfg(not(unix))]
|
#[cfg(not(unix))]
|
||||||
|
@ -617,6 +636,7 @@ impl FsMeta for StatFs {
|
||||||
not(target_vendor = "apple"),
|
not(target_vendor = "apple"),
|
||||||
not(target_os = "android"),
|
not(target_os = "android"),
|
||||||
not(target_os = "freebsd"),
|
not(target_os = "freebsd"),
|
||||||
|
not(target_os = "openbsd"),
|
||||||
not(target_os = "illumos"),
|
not(target_os = "illumos"),
|
||||||
not(target_os = "solaris"),
|
not(target_os = "solaris"),
|
||||||
not(target_arch = "s390x"),
|
not(target_arch = "s390x"),
|
||||||
|
@ -630,6 +650,7 @@ impl FsMeta for StatFs {
|
||||||
target_arch = "s390x",
|
target_arch = "s390x",
|
||||||
target_vendor = "apple",
|
target_vendor = "apple",
|
||||||
target_os = "android",
|
target_os = "android",
|
||||||
|
target_os = "openbsd",
|
||||||
not(target_pointer_width = "64")
|
not(target_pointer_width = "64")
|
||||||
)
|
)
|
||||||
))]
|
))]
|
||||||
|
@ -655,11 +676,19 @@ impl FsMeta for StatFs {
|
||||||
return self.f_bfree.into();
|
return self.f_bfree.into();
|
||||||
}
|
}
|
||||||
fn avail_blocks(&self) -> u64 {
|
fn avail_blocks(&self) -> u64 {
|
||||||
#[cfg(all(not(target_os = "freebsd"), target_pointer_width = "64"))]
|
#[cfg(all(
|
||||||
|
not(target_os = "freebsd"),
|
||||||
|
not(target_os = "openbsd"),
|
||||||
|
target_pointer_width = "64"
|
||||||
|
))]
|
||||||
return self.f_bavail;
|
return self.f_bavail;
|
||||||
#[cfg(all(not(target_os = "freebsd"), not(target_pointer_width = "64")))]
|
#[cfg(all(
|
||||||
|
not(target_os = "freebsd"),
|
||||||
|
not(target_os = "openbsd"),
|
||||||
|
not(target_pointer_width = "64")
|
||||||
|
))]
|
||||||
return self.f_bavail.into();
|
return self.f_bavail.into();
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(any(target_os = "freebsd", target_os = "openbsd"))]
|
||||||
return self.f_bavail.try_into().unwrap();
|
return self.f_bavail.try_into().unwrap();
|
||||||
}
|
}
|
||||||
fn total_file_nodes(&self) -> u64 {
|
fn total_file_nodes(&self) -> u64 {
|
||||||
|
|
Loading…
Reference in a new issue