I've have been desperately searching for a tutorial on how to use the mount() function properly (they are very good at hiding this knowledge).
I need to use it to MNT_UPDATE " / "(/dev/disk0s2 in this case) in single user mode but I can't find an example or tutorial on how to use the function.
ps. Please no "Use system()" pps. I know /sbin/mount exists for a reason, I'm doing this for education purposes
As you have probably already read in the man page, you use it like this:
int ret = mount("hfs", "/", MNT_UPDATE, some_data);
The trick is what goes into "data". It is a filesystem-specific structure that can be found by grepping for the filesystem name in system headers. For example, for HFS it's in /usr/include/hfs/hfs_mount.h:
struct hfs_mount_args {
    char     *fspec; /* <--- This is the device to mount */
    uid_t     hfs_uid;
    gid_t     hfs_gid;
    mode_t    hfs_mask;
    u_int32_t hfs_encoding;
    struct    timezone hfs_timezone;
    int       flags;
    int       journal_tbuffer_size;
    int       journal_flags;
    int       journal_disable;
};
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With