summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Guyot-Sionnest <dermoth@users.sourceforge.net>2008-03-31 07:04:07 +0000
committerThomas Guyot-Sionnest <dermoth@users.sourceforge.net>2008-03-31 07:04:07 +0000
commitd043862c154070b2c58172289899dd14776e2d03 (patch)
tree2b660e8f4a73d0237b7dabf7faaad4a17bbe69b6
parent20a8bf1a3ffcdf0e715e03ad654a4a08673e870f (diff)
downloadmonitoring-plugins-d043862c154070b2c58172289899dd14776e2d03.tar.gz
Fix bug with --extra-opts as last argument with no value
Fix problem with duplicate function name (function should eventually move to /lib) git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1969 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--lib/extra_opts.c4
-rw-r--r--lib/tests/test_opts.c16
2 files changed, 16 insertions, 4 deletions
diff --git a/lib/extra_opts.c b/lib/extra_opts.c
index e4251215..d46d124f 100644
--- a/lib/extra_opts.c
+++ b/lib/extra_opts.c
@@ -32,7 +32,7 @@
32 32
33/* FIXME: copied from utils.h; we should move a bunch of libs! */ 33/* FIXME: copied from utils.h; we should move a bunch of libs! */
34int 34int
35is_option (char *str) 35is_option2 (char *str)
36{ 36{
37 if (!str) 37 if (!str)
38 return 0; 38 return 0;
@@ -67,7 +67,7 @@ char **np_extra_opts(int *argc, char **argv, const char *plugin_name){
67 i--; 67 i--;
68 *argc-=1; 68 *argc-=1;
69 }else if(strcmp(argv[i], "--extra-opts")==0){ 69 }else if(strcmp(argv[i], "--extra-opts")==0){
70 if(!is_option(argv[i+1])){ 70 if((i+1<*argc)&&!is_option2(argv[i+1])){
71 /* It is a argument with separate value */ 71 /* It is a argument with separate value */
72 argptr=argv[i+1]; 72 argptr=argv[i+1];
73 /* Delete the extra-opts argument/value */ 73 /* Delete the extra-opts argument/value */
diff --git a/lib/tests/test_opts.c b/lib/tests/test_opts.c
index 54210fba..61370a9c 100644
--- a/lib/tests/test_opts.c
+++ b/lib/tests/test_opts.c
@@ -59,7 +59,7 @@ main (int argc, char **argv)
59 char **argv_test=NULL, **argv_known=NULL; 59 char **argv_test=NULL, **argv_known=NULL;
60 int i, argc_test; 60 int i, argc_test;
61 61
62 plan_tests(11); 62 plan_tests(12);
63 63
64 argv_test=(char **)malloc(2*sizeof(char **)); 64 argv_test=(char **)malloc(2*sizeof(char **));
65 argv_test[0] = "prog_name"; 65 argv_test[0] = "prog_name";
@@ -221,6 +221,18 @@ main (int argc, char **argv)
221 argv_known[5] = NULL; 221 argv_known[5] = NULL;
222 argv_test=np_extra_opts(&argc_test, argv_test, "check_disk"); 222 argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
223 ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 1"); 223 ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 1");
224
225 argv_test=(char **)malloc(3*sizeof(char **));
226 argv_test[0] = "prog_name";
227 argv_test[1] = "--extra-opts";
228 argv_test[2] = NULL;
229 argc_test=2;
230 argv_known=(char **)realloc(argv_known, 3*sizeof(char **));
231 argv_known[0] = "prog_name";
232 argv_known[1] = "--foo=bar";
233 argv_known[2] = NULL;
234 argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
235 ok(array_diff(argc_test, argv_test, 2, argv_known), "Default section 2");
224 my_free(&argc_test,argv_test); 236 my_free(&argc_test,argv_test);
225 237
226 argv_test=(char **)malloc(6*sizeof(char **)); 238 argv_test=(char **)malloc(6*sizeof(char **));
@@ -239,7 +251,7 @@ main (int argc, char **argv)
239 argv_known[4] = "val2"; 251 argv_known[4] = "val2";
240 argv_known[5] = NULL; 252 argv_known[5] = NULL;
241 argv_test=np_extra_opts(&argc_test, argv_test, "check_disk"); 253 argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
242 ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 2"); 254 ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 3");
243 my_free(&argc_test,argv_test); 255 my_free(&argc_test,argv_test);
244 256
245 argv_test=(char **)malloc(6*sizeof(char **)); 257 argv_test=(char **)malloc(6*sizeof(char **));