summaryrefslogtreecommitdiff
path: root/usr/src/lib/lvm/libsvm/common/getdrvname.c
diff options
context:
space:
mode:
authoreota <none@none>2006-09-26 14:29:13 -0700
committereota <none@none>2006-09-26 14:29:13 -0700
commit1ca932730d3439e527d5fe4a15444600d0df7e7e (patch)
tree021f725c3677f6b8619e3ef76fb7720c121e0520 /usr/src/lib/lvm/libsvm/common/getdrvname.c
parent23b5c241225a8ade2b6b9f06ebb891ee459e3b02 (diff)
downloadillumos-joyent-1ca932730d3439e527d5fe4a15444600d0df7e7e.tar.gz
6311701 /etc/minor_perm is ignored if it contains comments
6459253 i.nametomajor holds the obsolete shell function 6460892 add_drv and update_drv can accept the invalid names 6462571 should clean up duplicate code in update_minor_entry()
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)