From 8c3922f9103953174228cf81ab0ecb9396286d55 Mon Sep 17 00:00:00 2001 From: zacheiss Date: Fri, 16 May 2008 16:49:38 +0000 Subject: [PATCH] Add support for -db option for selecting alternate moira server. --- clients/chpobox/chpobox.c | 77 ++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/clients/chpobox/chpobox.c b/clients/chpobox/chpobox.c index 9388ac48..1184cd57 100644 --- a/clients/chpobox/chpobox.c +++ b/clients/chpobox/chpobox.c @@ -36,6 +36,8 @@ #include #endif +#define argis(a, b) (!strcmp(*arg + 1, a) || !strcmp(*arg + 1, b)) + RCSID("$Header$"); int get_pobox(int argc, char **argv, void *callarg); @@ -49,6 +51,8 @@ int main(int argc, char *argv[]) { char *mrarg[3]; char *address, *uname; + char **arg = argv; + char *server = NULL; int c, setflag, splitflag, prevflag, status; setflag = splitflag = prevflag = 0; @@ -62,35 +66,50 @@ int main(int argc, char *argv[]) if (argc > 5) usage(); - while ((c = getopt(argc, argv, "s:S:pu:")) != -1) - switch (c) - { - case 's': - setflag++; - address = optarg; - break; - - case 'S': - splitflag++; - address = optarg; - break; - - case 'p': - prevflag++; - break; - - case 'u': - uname = optarg; - break; - - default: + while (++arg - argv < argc) + { + if (**arg == '-') + { + if (argis("s", "set")) { + if (arg - argv < argc - 1) { + arg++; + setflag++; + address = *arg; + } else + usage(); + } + else if (argis("S", "split")) { + if (arg - argv < argc - 1) { + arg++; + splitflag++; + address = *arg; + } else + usage(); + } + else if (argis("p", "previous")) + prevflag++; + else if (argis("u", "username")) { + if (arg - argv < argc - 1) { + arg++; + uname = *arg; + } else + usage(); + } + else if (argis("db", "database")) { + if (arg - argv < argc - 1) { + arg++; + server = *arg; + } else + usage(); + } + } + else if (uname == NULL) + uname = *arg; + else usage(); - break; - } - if (argc == 2 && optind == 1 && !uname) - uname = argv[optind++]; + } - if (optind != argc || (prevflag + splitflag + setflag > 1)) + if (prevflag + splitflag + setflag > 1) usage(); if (!uname) @@ -101,7 +120,7 @@ int main(int argc, char *argv[]) } mrarg[0] = uname; - if (mrcl_connect(NULL, "chpobox", 2, 1) != MRCL_SUCCESS) + if (mrcl_connect(server, "chpobox", 2, 1) != MRCL_SUCCESS) exit(1); if (setflag || splitflag) @@ -180,6 +199,6 @@ int get_pobox(int argc, char **argv, void *callarg) void usage(void) { - fprintf(stderr, "Usage: %s [-s|-S address] [-p] [-u user]\n", whoami); + fprintf(stderr, "Usage: %s [-s|-S address] [-p] [-u user] [-db database]\n", whoami); exit(1); } -- 2.45.2