]> andersk Git - moira.git/blobdiff - clients/moira/main.c
take command line arguemnt to specify SMS server
[moira.git] / clients / moira / main.c
index 0a4fff291f32a08d499f68ca382aca4cc4e1d9a7..b63d8971c77c863bc37451e831b5cde4cf7c7b2f 100644 (file)
@@ -34,7 +34,7 @@
 
 char * whoami;                 /* used by menu.c ugh!!! */
 
-extern Menu sms_top_menu;
+extern Menu sms_top_menu, list_menu, user_menu, dcm_menu;
 
 #ifndef DEBUG
 static void SignalHandler();
@@ -59,39 +59,50 @@ main(argc, argv)
     char ** argv;
 {
     int status;
+    Menu *menu;
+    char *motd, **arg, *server;
 
     if ((user = getlogin()) == NULL) 
        user = getpwuid((int) getuid())->pw_name;
     user = (user && strlen(user)) ? Strsave(user) : "";
 
-    init_sms_err_tbl();
-    init_krb_err_tbl();
-    verbose = TRUE;
-
-    switch (argc) {
-    case 2:
-      if (strcmp(argv[1], "-nomenu") == 0)
-       use_menu = FALSE;
-      else 
-       Usage();
-                               /* Fall Through. */
-    case 1:
-      if ((program_name = rindex(argv[0], '/')) == NULL)
-       program_name = argv[0];
-      else
-       program_name++;
-      break;
-    default:
-      Usage();
-      break;
-    }
-
+    if ((program_name = rindex(argv[0], '/')) == NULL)
+      program_name = argv[0];
+    else
+      program_name++;
     program_name = Strsave(program_name);
     whoami = Strsave(program_name); /* used by menu.c,  ugh !!! */
 
-    if ( status = sms_connect() ) 
+    verbose = TRUE;
+    arg = argv;
+    server = SMS_SERVER;
+
+    while (++arg - argv < argc) {
+       if (**arg == '-') {
+           if (!strcmp(*arg, "-nomenu"))
+             use_menu = FALSE;
+           else if (!strcmp(*arg, "-db"))
+             if (arg - argv < argc - 1) {
+                 ++arg;
+                 server = *arg;
+             } else
+               Usage(argv);
+           else
+             Usage(argv);
+       }
+    }
+
+    if ( status = sms_connect(server) ) 
        ErrorExit("\nConnection to SMS server failed", status);
 
+    if ( status = sms_motd(&motd) )
+        ErrorExit("\nUnable to check server status", status);
+    if (motd) {
+       fprintf(stderr, "The SMS server is currently unavailable:\n%s\n", motd);
+       sms_disconnect();
+       exit(1);
+    }
+
     if ( status = sms_auth(program_name) ) 
        ErrorExit("\nAuthorization failed -- please run kinit", status);
 
@@ -106,13 +117,22 @@ main(argc, argv)
     (void) signal(SIGQUIT, SignalHandler);
 #endif DEBUG
 
+    if (!strcmp(program_name, "listmaint"))
+      menu = &list_menu;
+    else if (!strcmp(program_name, "usermaint"))
+      menu = &user_menu;
+    else if (!strcmp(program_name, "dcmmaint"))
+      menu = &dcm_menu;
+    else
+      menu = &sms_top_menu;
+
     if (use_menu) {            /* Start menus that execute program */
         Start_paging();
-       Start_menu(&sms_top_menu);
+       Start_menu(menu);
        Stop_paging();
     }
     else                       /* Start program without menus. */
-       Start_no_menu(&sms_top_menu);
+       Start_no_menu(menu);
 
     sms_disconnect();
     exit(0);
This page took 0.035612 seconds and 4 git commands to generate.