[lvm-devel] LVM2 ./WHATS_NEW lib/config/config.c

agk at sourceware.org agk at sourceware.org
Thu Nov 16 17:36:01 UTC 2006


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk at sourceware.org	2006-11-16 17:36:01

Modified files:
	.              : WHATS_NEW 
	lib/config     : config.c 

Log message:
	Warn if certain duplicate config file entries are seen.
	(not thoroughly tested)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.498&r2=1.499
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/config.c.diff?cvsroot=lvm2&r1=1.48&r2=1.49

--- LVM2/WHATS_NEW	2006/11/16 16:44:48	1.498
+++ LVM2/WHATS_NEW	2006/11/16 17:36:00	1.499
@@ -1,5 +1,6 @@
 Version 2.02.15 -
 ====================================
+  Warn if certain duplicate config file entries are seen.
   Enhance lvm_dump.sh for sysreport integration and add man page.
   Fix --autobackup argument which could never disable backups.
   Fix a label_verify error path.
--- LVM2/lib/config/config.c	2006/11/04 03:34:09	1.48
+++ LVM2/lib/config/config.c	2006/11/16 17:36:00	1.49
@@ -772,6 +772,7 @@
 					     const char *path)
 {
 	const char *e;
+	const struct config_node *cn_found;
 
 	while (cn) {
 		/* trim any leading slashes */
@@ -782,22 +783,30 @@
 		for (e = path; *e && (*e != sep); e++) ;
 
 		/* hunt for the node */
+		cn_found = NULL;
 		while (cn) {
-			if (_tok_match(cn->key, path, e))
-				break;
+			if (_tok_match(cn->key, path, e)) {
+				/* Inefficient */
+				if (!cn_found)
+					cn_found = cn;
+				else
+					log_error("WARNING: Ignoring duplicate"
+						  " config node: %s ("
+						  "seeking %s)", cn->key, path);
+			}
 
 			cn = cn->sib;
 		}
 
-		if (cn && *e)
-			cn = cn->child;
+		if (cn_found && *e)
+			cn = cn_found->child;
 		else
 			break;	/* don't move into the last node */
 
 		path = e;
 	}
 
-	return (struct config_node *) cn;
+	return (struct config_node *) cn_found;
 }
 
 static struct config_node *_find_first_config_node(const struct config_node *cn1,




More information about the lvm-devel mailing list