Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  apple.rs   Sprache: unbekannt

 
use crate::{Errno, NixPath, Result};
use libc::c_int;

libc_bitflags!(
    /// Used with [`mount()`] and [`unmount()`].
    pub struct MntFlags: c_int {
        /// Do not interpret special files on the filesystem.
        MNT_NODEV;
        /// Enable data protection on the filesystem if the filesystem is configured for it.
        MNT_CPROTECT;
        /// file system is quarantined
        MNT_QUARANTINE;
        /// filesystem is stored locally
        MNT_LOCAL;
        /// quotas are enabled on filesystem
        MNT_QUOTA;
        /// identifies the root filesystem
        MNT_ROOTFS;
        /// file system is not appropriate path to user data
        MNT_DONTBROWSE;
        /// VFS will ignore ownership information on filesystem objects
        MNT_IGNORE_OWNERSHIP;
        /// filesystem was mounted by automounter
        MNT_AUTOMOUNTED;
        /// filesystem is journaled
        MNT_JOURNALED;
        /// Don't allow user extended attributes
        MNT_NOUSERXATTR;
        /// filesystem should defer writes
        MNT_DEFWRITE;
        /// don't block unmount if not responding
        MNT_NOBLOCK;
        /// file system is exported
        MNT_EXPORTED;
        /// file system written asynchronously
        MNT_ASYNC;
        /// Force a read-write mount even if the file system appears to be
        /// unclean.
        MNT_FORCE;
        /// MAC support for objects.
        MNT_MULTILABEL;
        /// Do not update access times.
        MNT_NOATIME;
        /// Disallow program execution.
        MNT_NOEXEC;
        /// Do not honor setuid or setgid bits on files when executing them.
        MNT_NOSUID;
        /// Mount read-only.
        MNT_RDONLY;
        /// Causes the vfs subsystem to update its data structures pertaining to
        /// the specified already mounted file system.
        MNT_RELOAD;
        /// Create a snapshot of the file system.
        MNT_SNAPSHOT;
        /// All I/O to the file system should be done synchronously.
        MNT_SYNCHRONOUS;
        /// Union with underlying fs.
        MNT_UNION;
        /// Indicates that the mount command is being applied to an already
        /// mounted file system.
        MNT_UPDATE;
    }
);

/// Mount a file system.
///
/// # Arguments
/// - `source`  -   Specifies the file system.  e.g. `/dev/sd0`.
/// - `target` -    Specifies the destination.  e.g. `/mnt`.
/// - `flags` -     Optional flags controlling the mount.
/// - `data` -      Optional file system specific data.
///
/// # see also
/// [`mount`](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/mount.2.html)
pub fn mount<
    P1: ?Sized + NixPath,
    P2: ?Sized + NixPath,
    P3: ?Sized + NixPath,
>(
    source: &P1,
    target: &P2,
    flags: MntFlags,
    data: Option<&P3>,
) -> Result<()> {
    let res = source.with_nix_path(|s| {
        target.with_nix_path(|t| {
            crate::with_opt_nix_path(data, |d| unsafe {
                libc::mount(
                    s.as_ptr(),
                    t.as_ptr(),
                    flags.bits(),
                    d.cast_mut().cast(),
                )
            })
        })
    })???;

    Errno::result(res).map(drop)
}

/// Umount the file system mounted at `target`.
pub fn unmount<P>(target: &P, flags: MntFlags) -> Result<()>
where
    P: ?Sized + NixPath,
{
    let res = target.with_nix_path(|cstr| unsafe {
        libc::unmount(cstr.as_ptr(), flags.bits())
    })?;

    Errno::result(res).map(drop)
}

[ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge