summaryrefslogtreecommitdiffstats
path: root/sbin/umount
diff options
context:
space:
mode:
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 eb51f2a..c42b4bb 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;
}
/*
OpenPOWER on IntegriCloud