From 51ec51a8dcbe003a0fe5cd0ad1d78f5590f5d40f Mon Sep 17 00:00:00 2001
From: Thomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Date: Tue, 4 Nov 2008 17:41:53 +0000
Subject: Make extra-opts (C plugins) behave more like N::P:

  N::P allows both '#' and ';' for comments. Extra-opts used to allow only '#', it now allows both (';' is the standard for ini files)
  Extra-opts does not allow trailing comments anymore (like N::P)



git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2063 f882894a-f735-0410-b71e-b25c423dba1c

diff --git a/NEWS b/NEWS
index 0156701..42eb761 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,8 @@ This file documents the major additions and syntax changes between releases.
 	check_ifoperstatus -n flag now works as expected (sf.net #1569488)
 	check_ifoperstatus now supports ifType based lookup for ifIndex
 	check_ups now sends a LOGOUT string (debian bug #387001)
+	Extra-opts (C plugins) now allows both '#' and ';' for comments (like N::P)
+	Extra-opts (C plugins) does not allow trailing comments anymore (like N::P)
 
 1.4.13 25th Sept 2008
 	Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen)
diff --git a/lib/parse_ini.c b/lib/parse_ini.c
index 654452d..5732175 100644
--- a/lib/parse_ini.c
+++ b/lib/parse_ini.c
@@ -132,6 +132,7 @@ static int read_defaults(FILE *f, const char *stanza, np_arg_list **opts){
 		if(isspace(c)) continue;
 		switch(c){
 			/* globble up coment lines */
+			case ';':
 			case '#':
 				GOBBLE_TO(f, c, '\n');
 				break;
@@ -232,10 +233,8 @@ static int add_option(FILE *f, np_arg_list **optlst){
 	if(optptr==eqptr) die(STATE_UNKNOWN, _("Config file error\n"));
 	/* continue from '=' to start of value or EOL */
 	for(valptr=eqptr+1; valptr<lineend && isspace(*valptr); valptr++);
-	/* continue to the end of value (FIXME: watching for trailing comments) */
-	for(valend=valptr; valend<lineend; valend++)
-		/* FIXME: N::P doesn't allow comments here. Remove next line and parse_ini won't either */
-		if(*valend=='#') break;
+	/* continue to the end of value */
+	for(valend=valptr; valend<lineend; valend++);
 	--valend;
 	/* Finally trim off trailing spaces */
 	for(valend; isspace(*valend); valend--);
diff --git a/lib/tests/plugin.ini b/lib/tests/plugin.ini
index e22f8bd..511fd9f 100644
--- a/lib/tests/plugin.ini
+++ b/lib/tests/plugin.ini
@@ -1,7 +1,10 @@
+# Non-standard (but accepted) comment
+; standard ini comment
 
 [check_mysql]
 username=operator
-password=secret		# Remember to change later
+; comment in the middle
+password=secret  
 
 [section_twice]
 foo=bar
-- 
cgit v0.10-9-g596f

