Module Name:    src
Committed By:   christos
Date:           Thu Dec  2 13:26:40 UTC 2021

Modified Files:
        src/sbin/mount: mount.c

Log Message:
PR/56529: RVP: mount should try ffs when DIOCGWEDGEINFO returns an empty
dkw_ptype.


To generate a diff of this commit:
cvs rdiff -u -r1.105 -r1.106 src/sbin/mount/mount.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/mount/mount.c
diff -u src/sbin/mount/mount.c:1.105 src/sbin/mount/mount.c:1.106
--- src/sbin/mount/mount.c:1.105	Sun Nov 21 00:09:15 2021
+++ src/sbin/mount/mount.c	Thu Dec  2 08:26:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: mount.c,v 1.105 2021/11/21 05:09:15 simonb Exp $	*/
+/*	$NetBSD: mount.c,v 1.106 2021/12/02 13:26:39 christos Exp $	*/
 
 /*
  * Copyright (c) 1980, 1989, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
 #if 0
 static char sccsid[] = "@(#)mount.c	8.25 (Berkeley) 5/8/95";
 #else
-__RCSID("$NetBSD: mount.c,v 1.105 2021/11/21 05:09:15 simonb Exp $");
+__RCSID("$NetBSD: mount.c,v 1.106 2021/12/02 13:26:39 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -348,7 +348,7 @@ hasopt(const char *mntopts, const char *
 			found = !negative;
 	}
 	free(optbuf);
-	return (found);
+	return found;
 }
 
 static int
@@ -376,7 +376,7 @@ mountfs(const char *vfstype, const char 
 
 	if (realpath(name, mntpath) == NULL) {
 		warn("realpath `%s'", name);
-		return (1);
+		return 1;
 	}
 
 	name = mntpath;
@@ -399,7 +399,7 @@ mountfs(const char *vfstype, const char 
 	else if (skipmounted) {
 		if ((numfs = getmntinfo(&sfp, MNT_WAIT)) == 0) {
 			warn("getmntinfo");
-			return (1);
+			return 1;
 		}
 		for(i = 0; i < numfs; i++) {
 			const char *mountedtype = sfp[i].f_fstypename;
@@ -427,7 +427,7 @@ mountfs(const char *vfstype, const char 
 					    (int)sizeof(sfp[i].f_fstypename),
 					    sfp[i].f_fstypename,
 					    "already mounted");
-				return (0);
+				return 0;
 			}
 		}
 	}
@@ -482,7 +482,7 @@ mountfs(const char *vfstype, const char 
 		if (optbuf)
 			free(optbuf);
 		free(argv);
-		return (1);
+		return 1;
 
 	case 0:					/* Child. */
 		if (debug)
@@ -543,22 +543,22 @@ mountfs(const char *vfstype, const char 
 
 		if (waitpid(pid, &status, 0) == -1) {
 			warn("waitpid");
-			return (1);
+			return 1;
 		}
 
 		if (WIFEXITED(status)) {
 			if (WEXITSTATUS(status) != 0)
-				return (WEXITSTATUS(status));
+				return WEXITSTATUS(status);
 		} else if (WIFSIGNALED(status)) {
 			warnx("%s: %s", name, strsignal(WTERMSIG(status)));
-			return (1);
+			return 1;
 		}
 
 		if (buf == NULL) {
 			if (verbose) {
 				if (statvfs(name, &sf) == -1) {
 					warn("statvfs %s", name);
-					return (1);
+					return 1;
 				}
 				prmount(&sf);
 			}
@@ -566,7 +566,7 @@ mountfs(const char *vfstype, const char 
 		break;
 	}
 
-	return (0);
+	return 0;
 }
 
 static void
@@ -628,13 +628,13 @@ getmntargs(struct statvfs *sfs, char *bu
 
 	if (mountfs(sfs->f_fstypename, sfs->f_mntfromname, sfs->f_mntonname, 0,
 	    "getargs", NULL, 0, buf, buflen))
-		return (0);
+		return 0;
 	else {
 		if (*buf == '\0')
-			return (0);
+			return 0;
 		if ((buf = strchr(buf, '\n')) != NULL)
 			*buf = '\0';
-		return (1);
+		return 1;
 	}
 }
 
@@ -648,8 +648,8 @@ getmntpt(const char *name)
 	for (i = 0; i < mntsize; i++)
 		if (strcmp(mntbuf[i].f_mntfromname, name) == 0 ||
 		    strcmp(mntbuf[i].f_mntonname, name) == 0)
-			return (&mntbuf[i]);
-	return (NULL);
+			return &mntbuf[i];
+	return NULL;
 }
 
 static void
@@ -736,19 +736,21 @@ getfslab(const char *str)
 
 		/* Silently fail here - mount call can display error */
 		if ((fd = open(buf, O_RDONLY)) == -1)
-			return (NULL);
+			return NULL;
 	}
 
 	/* Check to see if this is a wedge. */
 	if (ioctl(fd, DIOCGWEDGEINFO, &dkw) == 0) {
 		/* Yup, this is easy. */
-		(void) close(fd);
-		return (dkw.dkw_ptype);
+		close(fd);
+		if (dkw.dkw_ptype && *dkw.dkw_ptype)
+			return dkw.dkw_ptype;
+		return NULL;
 	}
 
 	if (ioctl(fd, DIOCGDINFO, &dl) == -1) {
 		(void) close(fd);
-		return (NULL);
+		return NULL;
 	}
 
 	(void) close(fd);
@@ -756,7 +758,7 @@ getfslab(const char *str)
 	part = str[strlen(str) - 1] - 'a';
 
 	if (part < 0 || part >= dl.d_npartitions)
-		return (NULL);
+		return NULL;
 
 	/* Return NULL for unknown types - caller can fall back to ffs */
 	if ((fstype = dl.d_partitions[part].p_fstype) >= FSMAXMOUNTNAMES)
@@ -764,7 +766,7 @@ getfslab(const char *str)
 	else
 		vfstype = mountnames[fstype];
 
-	return (vfstype);
+	return vfstype;
 }
 
 static void

Reply via email to