aboutsummaryrefslogtreecommitdiff
path: root/sbin/umount
diff options
context:
space:
mode:
authorHajimu UMEMOTO <ume@FreeBSD.org>2010-02-04 15:17:49 +0000
committerHajimu UMEMOTO <ume@FreeBSD.org>2010-02-04 15:17:49 +0000
commita505d4352fa43867ceee7a80662cfc192edb7187 (patch)
tree47de67c389eb6cb8f26bd61cf585c8bbb5343ed0 /sbin/umount
parent0a65b79f42681a884333209007e8b059b67a197a (diff)
downloadsrc-a505d4352fa43867ceee7a80662cfc192edb7187.tar.gz
src-a505d4352fa43867ceee7a80662cfc192edb7187.zip
Notes
Diffstat (limited to 'sbin/umount')
-rw-r--r--sbin/umount/umount.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sbin/umount/umount.c b/sbin/umount/umount.c
index eb51f2a2465c..c42b4bbf6030 100644
--- a/sbin/umount/umount.c
+++ b/sbin/umount/umount.c
@@ -325,14 +325,21 @@ umountfs(struct statfs *sfs)
if ((nfsdirname = strdup(sfs->f_mntfromname)) == NULL)
err(1, "strdup");
orignfsdirname = nfsdirname;
- if ((delimp = strrchr(nfsdirname, ':')) != NULL) {
- *delimp = '\0';
+ if (*nfsdirname == '[' &&
+ (delimp = strchr(nfsdirname + 1, ']')) != NULL &&
+ *(delimp + 1) == ':') {
+ hostp = nfsdirname + 1;
+ nfsdirname = delimp + 2;
+ } else if ((delimp = strrchr(nfsdirname, ':')) != NULL) {
hostp = nfsdirname;
+ nfsdirname = delimp + 1;
+ }
+ if (hostp != NULL) {
+ *delimp = '\0';
getaddrinfo(hostp, NULL, &hints, &ai);
if (ai == NULL) {
warnx("can't get net id for host");
}
- nfsdirname = delimp + 1;
}
/*