//! POSIX-style filesystem functions which operate on bare paths. #[cfg(not(any( target_os = "haiku", target_os = "illumos", target_os = "netbsd", target_os = "redox", target_os = "solaris", target_os = "wasi", )))] use crate::fs::StatFs; #[cfg(not(any( target_os = "haiku", target_os = "illumos", target_os = "redox", target_os = "solaris", target_os = "wasi", )))] use { crate::fs::StatVfs, crate::{backend, io, path}, }; /// `statfs`—Queries filesystem metadata. /// /// Compared to [`statvfs`], this function often provides more information, /// though it's less portable. /// /// # References /// - [Linux] /// /// [Linux]: https://man7.org/linux/man-pages/man2/statfs.2.html #[cfg(not(any( target_os = "haiku", target_os = "illumos", target_os = "netbsd", target_os = "redox", target_os = "solaris", target_os = "wasi", )))] #[inline] pub fn statfs(path: P) -> io::Result { path.into_with_c_str(backend::fs::syscalls::statfs) } /// `statvfs`—Queries filesystem metadata, POSIX version. /// /// Compared to [`statfs`], this function often provides less information, /// but it is more portable. But even so, filesystems are very diverse and not /// all the fields are meaningful for every filesystem. And `f_fsid` doesn't /// seem to have a clear meaning anywhere. /// /// # References /// - [POSIX] /// - [Linux] /// /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/statvfs.html /// [Linux]: https://man7.org/linux/man-pages/man2/statvfs.2.html #[cfg(not(any( target_os = "haiku", target_os = "illumos", target_os = "redox", target_os = "solaris", target_os = "wasi", )))] #[inline] pub fn statvfs(path: P) -> io::Result { path.into_with_c_str(backend::fs::syscalls::statvfs) }