SF.net SVN: nagiosplug:[2144] nagiosplug/trunk

[email protected]
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
Revision: 2144
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=2144&view=rev
Author:   dermoth
Date:     2009-02-03 07:28:32 +0000 (Tue, 03 Feb 2009)

Log Message:
-----------
Make extract_value more generic:

Add a separator argument passed using defines.

From: Thomas Guyot-Sionnest <[email protected]>

Modified Paths:
--------------
    nagiosplug/trunk/lib/tests/test_utils.c
    nagiosplug/trunk/lib/utils_base.c
    nagiosplug/trunk/lib/utils_base.h
    nagiosplug/trunk/plugins/check_ntp_peer.c

Modified: nagiosplug/trunk/lib/tests/test_utils.c
===================================================================
--- nagiosplug/trunk/lib/tests/test_utils.c	2009-01-24 12:44:31 UTC (rev 2143)
+++ nagiosplug/trunk/lib/tests/test_utils.c	2009-02-03 07:28:32 UTC (rev 2144)
@@ -172,83 +172,83 @@
 	test = np_escaped_string("everything");
 	ok( strcmp(test, "everything") == 0, "everything okay");
 
-	/* np_extract_value tests (23) */
-	test=np_extract_value("foo=bar, bar=foo, foobar=barfoo\n", "foo");
+	/* np_extract_ntpvar tests (23) */
+	test=np_extract_ntpvar("foo=bar, bar=foo, foobar=barfoo\n", "foo");
 	ok(test && !strcmp(test, "bar"), "1st test as expected");
 	free(test);
 
-	test=np_extract_value("foo=bar,bar=foo,foobar=barfoo\n", "bar");
+	test=np_extract_ntpvar("foo=bar,bar=foo,foobar=barfoo\n", "bar");
 	ok(test && !strcmp(test, "foo"), "2nd test as expected");
 	free(test);
 
-	test=np_extract_value("foo=bar, bar=foo, foobar=barfoo\n", "foobar");
+	test=np_extract_ntpvar("foo=bar, bar=foo, foobar=barfoo\n", "foobar");
 	ok(test && !strcmp(test, "barfoo"), "3rd test as expected");
 	free(test);
 
-	test=np_extract_value("foo=bar\n", "foo");
+	test=np_extract_ntpvar("foo=bar\n", "foo");
 	ok(test && !strcmp(test, "bar"), "Single test as expected");
 	free(test);
 
-	test=np_extract_value("foo=bar, bar=foo, foobar=barfooi\n", "abcd");
+	test=np_extract_ntpvar("foo=bar, bar=foo, foobar=barfooi\n", "abcd");
 	ok(!test, "Key not found 1");
 
-	test=np_extract_value("foo=bar\n", "abcd");
+	test=np_extract_ntpvar("foo=bar\n", "abcd");
 	ok(!test, "Key not found 2");
 
-	test=np_extract_value("foo=bar=foobar", "foo");
+	test=np_extract_ntpvar("foo=bar=foobar", "foo");
 	ok(test && !strcmp(test, "bar=foobar"), "Strange string 1");
 	free(test);
 
-	test=np_extract_value("foo", "foo");
+	test=np_extract_ntpvar("foo", "foo");
 	ok(!test, "Malformed string 1");
 
-	test=np_extract_value("foo,", "foo");
+	test=np_extract_ntpvar("foo,", "foo");
 	ok(!test, "Malformed string 2");
 
-	test=np_extract_value("foo=", "foo");
+	test=np_extract_ntpvar("foo=", "foo");
 	ok(!test, "Malformed string 3");
 
-	test=np_extract_value("foo=,bar=foo", "foo");
+	test=np_extract_ntpvar("foo=,bar=foo", "foo");
 	ok(!test, "Malformed string 4");
 
-	test=np_extract_value(",foo", "foo");
+	test=np_extract_ntpvar(",foo", "foo");
 	ok(!test, "Malformed string 5");
 
-	test=np_extract_value("=foo", "foo");
+	test=np_extract_ntpvar("=foo", "foo");
 	ok(!test, "Malformed string 6");
 
-	test=np_extract_value("=foo,", "foo");
+	test=np_extract_ntpvar("=foo,", "foo");
 	ok(!test, "Malformed string 7");
 
-	test=np_extract_value(",,,", "foo");
+	test=np_extract_ntpvar(",,,", "foo");
 	ok(!test, "Malformed string 8");
 
-	test=np_extract_value("===", "foo");
+	test=np_extract_ntpvar("===", "foo");
 	ok(!test, "Malformed string 9");
 
-	test=np_extract_value(",=,=,", "foo");
+	test=np_extract_ntpvar(",=,=,", "foo");
 	ok(!test, "Malformed string 10");
 
-	test=np_extract_value("=,=,=", "foo");
+	test=np_extract_ntpvar("=,=,=", "foo");
 	ok(!test, "Malformed string 11");
 
-	test=np_extract_value("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "foo");
+	test=np_extract_ntpvar("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "foo");
 	ok(test && !strcmp(test, "bar"), "Random spaces and newlines 1");
 	free(test);
 
-	test=np_extract_value("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "bar");
+	test=np_extract_ntpvar("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "bar");
 	ok(test && !strcmp(test, "foo"), "Random spaces and newlines 2");
 	free(test);
 
-	test=np_extract_value("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "foobar");
+	test=np_extract_ntpvar("  foo=bar  ,\n bar=foo\n , foobar=barfoo  \n  ", "foobar");
 	ok(test && !strcmp(test, "barfoo"), "Random spaces and newlines 3");
 	free(test);
 
-	test=np_extract_value("  foo=bar  ,\n bar\n \n= \n foo\n , foobar=barfoo  \n  ", "bar");
+	test=np_extract_ntpvar("  foo=bar  ,\n bar\n \n= \n foo\n , foobar=barfoo  \n  ", "bar");
 	ok(test && !strcmp(test, "foo"), "Random spaces and newlines 4");
 	free(test);
 
-	test=np_extract_value("", "foo");
+	test=np_extract_ntpvar("", "foo");
 	ok(!test, "Empty string return NULL");
 
 	return exit_status();

Modified: nagiosplug/trunk/lib/utils_base.c
===================================================================
--- nagiosplug/trunk/lib/utils_base.c	2009-01-24 12:44:31 UTC (rev 2143)
+++ nagiosplug/trunk/lib/utils_base.c	2009-02-03 07:28:32 UTC (rev 2144)
@@ -258,7 +258,7 @@
  * This function can be used to parse NTP control packet data and performance
  * data strings.
  */
-char *np_extract_value(const char *varlist, const char *name) {
+char *np_extract_value(const char *varlist, const char *name, char sep) {
 	char *tmp=NULL, *value=NULL;
 	int i;
 
@@ -277,7 +277,7 @@
 				/* strip leading spaces */
 				for (varlist; isspace(varlist[0]); varlist++);
 
-				if (tmp = index(varlist, ',')) {
+				if (tmp = index(varlist, sep)) {
 					/* Value is delimited by a comma */
 					if (tmp-varlist == 0) continue;
 					value = (char *)malloc(tmp-varlist+1);
@@ -293,7 +293,7 @@
 				break;
 			}
 		}
-		if (tmp = index(varlist, ',')) {
+		if (tmp = index(varlist, sep)) {
 			/* More keys, keep going... */
 			varlist = tmp + 1;
 		} else {

Modified: nagiosplug/trunk/lib/utils_base.h
===================================================================
--- nagiosplug/trunk/lib/utils_base.h	2009-01-24 12:44:31 UTC (rev 2143)
+++ nagiosplug/trunk/lib/utils_base.h	2009-02-03 07:28:32 UTC (rev 2144)
@@ -56,6 +56,12 @@
  * This function can be used to parse NTP control packet data and performance
  * data strings.
  */
-char *np_extract_value(const char*, const char*);
+char *np_extract_value(const char*, const char*, char);
 
+/*
+ * Same as np_extract_value with separator suitable for NTP control packet
+ * payloads (comma)
+ */
+#define np_extract_ntpvar(l, n) np_extract_value(l, n, ',')
+
 #endif /* _UTILS_BASE_ */

Modified: nagiosplug/trunk/plugins/check_ntp_peer.c
===================================================================
--- nagiosplug/trunk/plugins/check_ntp_peer.c	2009-01-24 12:44:31 UTC (rev 2143)
+++ nagiosplug/trunk/plugins/check_ntp_peer.c	2009-02-03 07:28:32 UTC (rev 2144)
@@ -333,7 +333,7 @@
 			if(verbose)
 				printf("parsing offset from peer %.2x: ", ntohs(peers[i].assoc));
 
-			value = np_extract_value(data, "offset");
+			value = np_extract_ntpvar(data, "offset");
 			nptr=NULL;
 			/* Convert the value if we have one */
 			if(value != NULL)
@@ -357,7 +357,7 @@
 				if(verbose) {
 					printf("parsing %s from peer %.2x: ", strstr(getvar, "dispersion") != NULL ? "dispersion" : "jitter", ntohs(peers[i].assoc));
 				}
-				value = np_extract_value(data, strstr(getvar, "dispersion") != NULL ? "dispersion" : "jitter");
+				value = np_extract_ntpvar(data, strstr(getvar, "dispersion") != NULL ? "dispersion" : "jitter");
 				nptr=NULL;
 				/* Convert the value if we have one */
 				if(value != NULL)
@@ -376,7 +376,7 @@
 				if(verbose) {
 					printf("parsing stratum from peer %.2x: ", ntohs(peers[i].assoc));
 				}
-				value = np_extract_value(data, "stratum");
+				value = np_extract_ntpvar(data, "stratum");
 				nptr=NULL;
 				/* Convert the value if we have one */
 				if(value != NULL)


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.