]> andersk Git - moira.git/commitdiff
Add support for -db option for selecting alternate moira server.
authorzacheiss <zacheiss>
Fri, 16 May 2008 16:49:38 +0000 (16:49 +0000)
committerzacheiss <zacheiss>
Fri, 16 May 2008 16:49:38 +0000 (16:49 +0000)
clients/chpobox/chpobox.c

index 9388ac48fa886f1b913598402157f9304f86f14c..1184cd57abf894f39b50932abc2d27f24cf041ea 100644 (file)
@@ -36,6 +36,8 @@
 #include <getopt.h>
 #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);
 }
This page took 0.374275 seconds and 5 git commands to generate.