diff options
author | eota <none@none> | 2006-09-26 14:29:13 -0700 |
---|---|---|
committer | eota <none@none> | 2006-09-26 14:29:13 -0700 |
commit | 1ca932730d3439e527d5fe4a15444600d0df7e7e (patch) | |
tree | 021f725c3677f6b8619e3ef76fb7720c121e0520 /usr/src/lib/lvm/libsvm/common/getdrvname.c | |
parent | 23b5c241225a8ade2b6b9f06ebb891ee459e3b02 (diff) | |
download | illumos-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.c | 35 |
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) |