aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 @@
/* FIXME: copied from utils.h; we should move a bunch of libs! */
int
-is_option (char *str)
+is_option2 (char *str)
{
if (!str)
return 0;
@@ -67,7 +67,7 @@ char **np_extra_opts(int *argc, char **argv, const char *plugin_name){
i--;
*argc-=1;
}else if(strcmp(argv[i], "--extra-opts")==0){
- if(!is_option(argv[i+1])){
+ if((i+1<*argc)&&!is_option2(argv[i+1])){
/* It is a argument with separate value */
argptr=argv[i+1];
/* 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)
char **argv_test=NULL, **argv_known=NULL;
int i, argc_test;
- plan_tests(11);
+ plan_tests(12);
argv_test=(char **)malloc(2*sizeof(char **));
argv_test[0] = "prog_name";
@@ -221,6 +221,18 @@ main (int argc, char **argv)
argv_known[5] = NULL;
argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 1");
+
+ argv_test=(char **)malloc(3*sizeof(char **));
+ argv_test[0] = "prog_name";
+ argv_test[1] = "--extra-opts";
+ argv_test[2] = NULL;
+ argc_test=2;
+ argv_known=(char **)realloc(argv_known, 3*sizeof(char **));
+ argv_known[0] = "prog_name";
+ argv_known[1] = "--foo=bar";
+ argv_known[2] = NULL;
+ argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
+ ok(array_diff(argc_test, argv_test, 2, argv_known), "Default section 2");
my_free(&argc_test,argv_test);
argv_test=(char **)malloc(6*sizeof(char **));
@@ -239,7 +251,7 @@ main (int argc, char **argv)
argv_known[4] = "val2";
argv_known[5] = NULL;
argv_test=np_extra_opts(&argc_test, argv_test, "check_disk");
- ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 2");
+ ok(array_diff(argc_test, argv_test, 5, argv_known), "Default section 3");
my_free(&argc_test,argv_test);
argv_test=(char **)malloc(6*sizeof(char **));