Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/autofs/automount.c
Show First 20 Lines • Show All 82 Lines • ▼ Show 20 Lines | unmount_by_statfs(const struct statfs *sb, bool force) | ||||
return (error); | return (error); | ||||
} | } | ||||
static int | static int | ||||
unmount_by_umount(struct statfs* sfp, bool force) | unmount_by_umount(struct statfs* sfp, bool force) | ||||
{ | { | ||||
FILE *f; | FILE *f; | ||||
char fsid[sizeof(sfp->f_fsid)*2+1]; | |||||
size_t i; | |||||
if (sfp->f_fsid.val[0] == 0 || sfp->f_fsid.val[1] == 0) | if (sfp->f_fsid.val[0] == 0 || sfp->f_fsid.val[1] == 0) | ||||
return (-1); | return (-1); | ||||
/* umount(8) expects the file system ID to be in hexadecimal format */ | |||||
for (i = 0; i < sizeof(sfp->f_fsid); i++) | |||||
snprintf(fsid+strlen(fsid), sizeof(fsid) - strlen(fsid), | |||||
"%02x", ((u_char *)&sfp->f_fsid)[i]); | |||||
if (force) | if (force) | ||||
f = auto_popen("umount", "-f", fsid, NULL); | f = auto_popen("umount", "-f", sfp->f_mntfromname, NULL); | ||||
else | else | ||||
f = auto_popen("umount", fsid, NULL); | f = auto_popen("umount", sfp->f_mntfromname, NULL); | ||||
assert(f != NULL); | assert(f != NULL); | ||||
return (auto_pclose(f)); | return (auto_pclose(f)); | ||||
} | } | ||||
static const struct statfs * | static const struct statfs * | ||||
find_statfs(const struct statfs *mntbuf, int nitems, const char *mountpoint) | find_statfs(const struct statfs *mntbuf, int nitems, const char *mountpoint) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 308 Lines • Show Last 20 Lines |