From bd4f43ff727747d56ff250f37282c197584da783 Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Mon, 19 Jan 1998 18:48:36 +0000 Subject: [PATCH] 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 --- sbin/umount/umount.c | 12 ++++++------ 1 file 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);