heim_disk/os/unix/usage.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
bitflags::bitflags! {
/// Various options that were employed when mounting this filesystem (see `statvfs(3)`).
///
/// See [UsageExt::flags] method, which returns that structure.
pub struct Flags: libc::c_ulong {
/// Mandatory locking is permitted on the filesystem (see `fcntl(2)`).
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const MANDLOCK = libc::ST_MANDLOCK;
/// Do not update access times; see `mount(2)`.
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const NOATIME = libc::ST_NOATIME;
/// Disallow access to device special files on this filesystem.
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const NODEV = libc::ST_NODEV;
/// Do not update directory access times; see `mount(2)`.
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const NODIRATIME = libc::ST_NODIRATIME;
/// Execution of programs is disallowed on this filesystem.
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const NOEXEC = libc::ST_NOEXEC;
/// The set-user-ID and set-group-ID bits are ignored by `exec(3)`
/// for executable files on this filesystem.
const NOSUID = libc::ST_NOSUID;
/// This filesystem is mounted read-only.
const RDONLY = libc::ST_RDONLY;
/// Update `atime` relative to `mtime`/`ctime`; see `mount(2)`.
///
/// ## Compatibility
///
/// Not available for macOS or any `musl` target environment.
#[cfg(not(any(target_os = "macos", target_env = "musl")))]
const RELATIME = libc::ST_RELATIME;
/// Writes are synced to the filesystem immediately
/// (see the description of `O_SYNC` in `open(2)`).
///
/// ## Compatibility
///
/// Not available for macOS.
#[cfg(not(target_os = "macos"))]
const SYNCHRONOUS = libc::ST_SYNCHRONOUS;
}
}
/// Unix-specific extensions for [Usage] struct.
///
/// [Usage]: ../../struct.Usage.html
pub trait UsageExt {
/// Returns [Flags] for current filesystem;
fn flags(&self) -> Flags;
}
#[cfg(unix)]
impl UsageExt for crate::Usage {
fn flags(&self) -> Flags {
self.as_ref().flags()
}
}