[nagiosplug] Added np_set_args, to set arguments after ...

"Ton Voon" <[email protected]>
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
 Module: nagiosplug
 Branch: ton/state
 Commit: 9ff89b1a99926ebfeaeba7f415ae74f93eaef0a5
 Author: Ton Voon <[email protected]>
   Date: Tue Jun 22 11:47:54 2010 +0100
    URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=9ff89b1

Added np_set_args, to set arguments after np_extra_opts has been run

---

 lib/tests/test_utils.c |   11 ++++++++++-
 lib/utils_base.c       |   15 +++++++++++++--
 lib/utils_base.h       |    1 +
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c
index 4f761a6..deb592d 100644
--- a/lib/tests/test_utils.c
+++ b/lib/tests/test_utils.c
@@ -40,7 +40,7 @@ main (int argc, char **argv)
 	char 	*temp_filename;
 	FILE    *temp_fp;
 
-	plan_tests(137);
+	plan_tests(141);
 
 	ok( this_nagios_plugin==NULL, "nagios_plugin not initialised");
 
@@ -49,6 +49,15 @@ main (int argc, char **argv)
 	ok( this_nagios_plugin!=NULL, "nagios_plugin now initialised");
 	ok( !strcmp(this_nagios_plugin->plugin_name, "check_test"), "plugin name initialised" );
 
+	ok( this_nagios_plugin->argc==argc, "Argc set" );
+	ok( this_nagios_plugin->argv==argv, "Argv set" );
+
+	np_set_args(0,0);
+
+	ok( this_nagios_plugin->argc==0, "argc changed" );
+	ok( this_nagios_plugin->argv==0, "argv changed" );
+
+	np_set_args(argc, argv);
 
 	range = parse_range_string("6");
 	ok( range != NULL, "'6' is valid range");
diff --git a/lib/utils_base.c b/lib/utils_base.c
index 4e8d2ef..6de92cb 100644
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
@@ -48,11 +48,22 @@ void np_init( char *plugin_name, int argc, char **argv ) {
 	}
 }
 
+void np_set_args( int argc, char **argv ) {
+	if (this_nagios_plugin==NULL)
+		die(STATE_UNKNOWN, _("This requires np_init to be called"));
+
+	this_nagios_plugin->argc = argc;
+	this_nagios_plugin->argv = argv;
+}
+
+
 void np_cleanup() {
 	if (this_nagios_plugin!=NULL) {
 		if(this_nagios_plugin->state!=NULL) {
-			np_free(this_nagios_plugin->state->state_data->data);
-			np_free(this_nagios_plugin->state->state_data);
+			if(this_nagios_plugin->state->state_data) { 
+				np_free(this_nagios_plugin->state->state_data->data);
+				np_free(this_nagios_plugin->state->state_data);
+			}
 			np_free(this_nagios_plugin->state->name);
 			np_free(this_nagios_plugin->state);
 		}
diff --git a/lib/utils_base.h b/lib/utils_base.h
index 2fbdfbe..0cb371f 100644
--- a/lib/utils_base.h
+++ b/lib/utils_base.h
@@ -99,6 +99,7 @@ state_data *np_state_read();
 void np_state_write_string(time_t, char *);
 
 void np_init(char *, int argc, char **argv);
+void np_set_args(int argc, char **argv);
 void np_cleanup();
 
 #endif /* _UTILS_BASE_ */


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
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.