]> mj.ucw.cz Git - libucw.git/commitdiff
If `-S' or `-C' is given after some other options (i.e., the config file
authorMartin Mares <mj@ucw.cz>
Sun, 25 Jan 2004 12:45:00 +0000 (12:45 +0000)
committerMartin Mares <mj@ucw.cz>
Sun, 25 Jan 2004 12:45:00 +0000 (12:45 +0000)
has been already loaded automatically), complain loudly.

Also improved the error message for invalid `-S'.

Robert, could you please check this?

lib/conf.c

index 21a28b242487fee90631137fbe40e0f997a0f79f..35f0502b743b007e0591527aabef8a534a24bf08 100644 (file)
@@ -339,9 +339,14 @@ int cf_getopt(int argc,char * const argv[],
                int *longindex)
 {
        int res;
+       static int other_options;
 
        do{
                res=getopt_long(argc,argv,shortopts,longopts,longindex);
+               if(res == 'S' || res == 'C') {
+                       if(other_options)
+                               die("The -S and -C options must precede all other arguments");
+               }
                if(res=='S'){
                        byte *sect,*name,*value;
                        byte *c;
@@ -370,7 +375,7 @@ int cf_getopt(int argc,char * const argv[],
                                msg=cf_set_item(sect,name,value);
                        }
                        if(msg)
-                               die("Invalid command line argument %s.%s=%s: %s",sect,name,value,msg);
+                               die("Invalid command line argument -S%s.%s=%s: %s",sect,name,value,msg);
 
                }else if(res=='C'){
                        cf_read(optarg);
@@ -378,6 +383,7 @@ int cf_getopt(int argc,char * const argv[],
                        /* unhandled option or end of options */
                        if(cfdeffile)
                                cf_read(cfdeffile);
+                       other_options++;
                        return res;
                }
        }while(1);