summaryrefslogtreecommitdiff
path: root/usr/src/lib/lvm/libsvm/common/getdrvname.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/lvm/libsvm/common/getdrvname.c')
-rw-r--r--usr/src/lib/lvm/libsvm/common/getdrvname.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/usr/src/lib/lvm/libsvm/common/getdrvname.c b/usr/src/lib/lvm/libsvm/common/getdrvname.c
index 9bef7fa115..a24b85e040 100644
--- a/usr/src/lib/lvm/libsvm/common/getdrvname.c
+++ b/usr/src/lib/lvm/libsvm/common/getdrvname.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -28,6 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <ctype.h>
#include <string.h>
#include <limits.h>
#include <sys/types.h>
@@ -42,6 +42,23 @@
#define QUOTE(x) #x
#define VAL2STR(x) QUOTE(x)
+static int is_blank(char *);
+
+/*
+ * is_blank() returns 1 (true) if a line specified is composed of
+ * whitespace characters only. otherwise, it returns 0 (false).
+ *
+ * Note. the argument (line) must be null-terminated.
+ */
+static int
+is_blank(char *line)
+{
+ for (/* nothing */; *line != '\0'; line++)
+ if (!isspace(*line))
+ return (0);
+ return (1);
+}
+
/*
* FUNCTION:
* Return the driver name for a major number
@@ -61,7 +78,7 @@ get_drv_name(major_t major, char *mnt, char *buf)
FILE *fp;
char drv[FILENAME_MAX + 1];
char entry[FILENAME_MAX + 1];
- char line[MAX_N2M_ALIAS_LINE];
+ char line[MAX_N2M_ALIAS_LINE], *cp;
char fname[PATH_MAX];
int status = RET_NOERROR;
@@ -73,6 +90,13 @@ get_drv_name(major_t major, char *mnt, char *buf)
while ((fgets(line, sizeof (line), fp) != NULL) &&
status == RET_NOERROR) {
+ /* cut off comments starting with '#' */
+ if ((cp = strchr(line, '#')) != NULL)
+ *cp = '\0';
+ /* ignore comment or blank lines */
+ if (is_blank(line))
+ continue;
+ /* sanity-check */
if (sscanf(line,
"%" VAL2STR(FILENAME_MAX) "s %" VAL2STR(FILENAME_MAX) "s",
drv, entry) != 2) {
@@ -80,7 +104,6 @@ get_drv_name(major_t major, char *mnt, char *buf)
}
if (atoi(entry) == major)
break;
-
}
if (status == RET_NOERROR)