diff options
author | Bruce Evans <bde@FreeBSD.org> | 1998-01-19 18:48:36 +0000 |
---|---|---|
committer | Bruce Evans <bde@FreeBSD.org> | 1998-01-19 18:48:36 +0000 |
commit | bd4f43ff727747d56ff250f37282c197584da783 (patch) | |
tree | 1a9028965fdf48b64c04f465b06c3fec6fadee98 /sbin/umount | |
parent | 281c79d6039f23ea59083a90730c31206d60e3cc (diff) | |
download | src-bd4f43ff727747d56ff250f37282c197584da783.tar.gz src-bd4f43ff727747d56ff250f37282c197584da783.zip |
mount(8) only uses realpath() for the mountpoint, so don't look up the
real path here for the mount device (or path). This fixes difficulties
unmounting devices that are actually symlinks to real devices.
Also, print the original path instead of the real path in early error
messages. nfs path handling and later error messages may still be wrong,
probably only in silly cases where the original path is both a symlink
and a remote path.
PR: 5208
Notes
Notes:
svn path=/head/; revision=32626
Diffstat (limited to 'sbin/umount')
-rw-r--r-- | sbin/umount/umount.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sbin/umount/umount.c b/sbin/umount/umount.c index fe42c19cd3bd..8351cea23bff 100644 --- a/sbin/umount/umount.c +++ b/sbin/umount/umount.c @@ -219,25 +219,25 @@ umountfs(name, typelist) strcpy(rname, name); } - name = rname; - if (stat(name, &sb) < 0) { - if (((mntpt = getmntname(name, MNTFROM, &type)) == NULL) && + if (((mntpt = getmntname(rname, MNTFROM, &type)) == NULL) && ((mntpt = getmntname(name, MNTON, &type)) == NULL)) { warnx("%s: not currently mounted", name); return (1); } + name = rname; } else if (S_ISBLK(sb.st_mode)) { if ((mntpt = getmntname(name, MNTON, &type)) == NULL) { warnx("%s: not currently mounted", name); return (1); } + name = rname; } else if (S_ISDIR(sb.st_mode)) { - mntpt = name; - if ((name = getmntname(mntpt, MNTFROM, &type)) == NULL) { - warnx("%s: not currently mounted", mntpt); + if ((name = getmntname(rname, MNTFROM, &type)) == NULL) { + warnx("%s: not currently mounted", name); return (1); } + mntpt = rname; } else { warnx("%s: not a directory or special device", name); return (1); |