]> jfr.im git - solanum.git/blobdiff - ircd/getopt.c
Resolve shfit/reduce conflict in timespec production (#54)
[solanum.git] / ircd / getopt.c
index 9e28ea2f8c9b70a81df9e14ef016b7796a848681..ef972a50ee963bbfa3f571eab3bf44e962fe43fe 100644 (file)
 # define OPTCHAR '-'
 
 void
-parseargs(int *argc, char ***argv, struct lgetopt *opts)
+parseargs(int *argc, char * const **argv, struct lgetopt *opts)
 {
        int i;
-       char *progname = (*argv)[0];
+       const char *progname = (*argv)[0];
 
        /* loop through each argument */
        for (;;)
@@ -53,12 +53,10 @@ parseargs(int *argc, char ***argv, struct lgetopt *opts)
                        return;
                }
 
-               (*argv)[0]++;
-
                /* search through our argument list, and see if it matches */
                for (i = 0; opts[i].opt; i++)
                {
-                       if(!strcmp(opts[i].opt, (*argv)[0]))
+                       if(!strcmp(opts[i].opt, &(*argv)[0][1]))
                        {
                                /* found our argument */
                                found = 1;
@@ -66,7 +64,7 @@ parseargs(int *argc, char ***argv, struct lgetopt *opts)
                                switch (opts[i].argtype)
                                {
                                case YESNO:
-                                       *((int *) opts[i].argloc) = 1;
+                                       *((bool *) opts[i].argloc) = TRUE;
                                        break;
                                case INTEGER:
                                        if(*argc < 2)
@@ -74,7 +72,7 @@ parseargs(int *argc, char ***argv, struct lgetopt *opts)
                                                fprintf(stderr,
                                                        "Error: option '%c%s' requires an argument\n",
                                                        OPTCHAR, opts[i].opt);
-                                               usage((*argv)[0]);
+                                               usage(progname);
                                        }
 
                                        *((int *) opts[i].argloc) = atoi((*argv)[1]);
@@ -111,14 +109,14 @@ parseargs(int *argc, char ***argv, struct lgetopt *opts)
                }
                if(!found)
                {
-                       fprintf(stderr, "error: unknown argument '%c%s'\n", OPTCHAR, (*argv)[0]);
+                       fprintf(stderr, "error: unknown argument '%c%s'\n", OPTCHAR, &(*argv)[0][1]);
                        usage(progname);
                }
        }
 }
 
 void
-usage(char *name)
+usage(const char *name)
 {
        int i = 0;