From: zacheiss Date: Sat, 10 Aug 2002 09:36:00 +0000 (+0000) Subject: Redo argument parsing to be more consistant with other applications. X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/1fdfd04e67e11626ac6d7c6d45f306dc15ddb7f7 Redo argument parsing to be more consistant with other applications. Gain ability to specify non-default server in the process. --- diff --git a/clients/mrcheck/mrcheck.c b/clients/mrcheck/mrcheck.c index e8285688..0a0202a4 100644 --- a/clients/mrcheck/mrcheck.c +++ b/clients/mrcheck/mrcheck.c @@ -17,6 +17,8 @@ #include #include +#define argis(a, b) (!strcmp(*arg + 1, a) || !strcmp(*arg + 1, b)) + RCSID("$Header$"); char *atot(char *itime); @@ -165,18 +167,37 @@ int main(int argc, char *argv[]) struct save_queue *sq; int status; int auth_required = 1; + char **arg = argv; + char *server = NULL; if ((whoami = strrchr(argv[0], '/')) == NULL) whoami = argv[0]; else whoami++; - if (argc == 2 && !strcmp(argv[1], "-noauth")) - auth_required = 0; - else if (argc > 1) - usage(); + /* parse our command line options */ + while (++arg - argv < argc) + { + if (**arg == '-') + { + if (argis("n", "noauth")) + auth_required = 0; + else if (argis("db", "database")) + { + if (arg - argv < argc - 1) + { + ++arg; + server = *arg; + } + else + usage(); + } + } + else + usage(); + } - if (mrcl_connect(NULL, NULL, 2, 0) != MRCL_SUCCESS) + if (mrcl_connect(server, NULL, 2, 0) != MRCL_SUCCESS) exit(2); status = mr_auth("mrcheck"); if (status && auth_required) @@ -216,6 +237,7 @@ punt: void usage(void) { - fprintf(stderr, "Usage: %s [-noauth]\n", whoami); + fprintf(stderr, "Usage: %s [-noauth] [-db|-database server[:port]]\n", + whoami); exit(1); }