]> andersk Git - moira.git/blobdiff - clients/moira/main.c
second code style cleanup: void/void * usage, proper #includes. try to
[moira.git] / clients / moira / main.c
index c3fe52982d403b035f2319103cc882217b927b02..3507931fd9ae6981ed3aed127e09255d6a3621ac 100644 (file)
@@ -1,58 +1,43 @@
-#if (!defined(lint) && !defined(SABER))
-  static char rcsid_module_c[] = "$Header$";
-#endif lint
-
-/*     This is the file main.c for the Moira Client, which allows a nieve
- *      user to quickly and easily maintain most parts of the Moira database.
+/* $Id $
+ *
+ *     This is the file main.c for the Moira Client, which allows users
+ *      to quickly and easily maintain most parts of the Moira database.
  *     It Contains: The main driver for the Moira Client.
- *     
+ *
  *     Created:        4/12/88
  *     By:             Chris D. Peterson
  *
- *      $Source$
- *      $Author$
- *      $Header$
- *     
- *     Copyright 1988 by the Massachusetts Institute of Technology.
- *
- *     For further information on copyright and distribution 
- *     see the file mit-copyright.h
+ * Copyright (C) 1988-1998 by the Massachusetts Institute of Technology.
+ * For copying and distribution information, please see the file
+ * <mit-copyright.h>.
  */
 
-#include <pwd.h>
-#include <signal.h>
-#include <stdio.h>
-#include <strings.h>
-#include <sys/types.h>
+#include <mit-copyright.h>
 #include <moira.h>
-#include <menu.h>
-#include <krb_et.h>
-
-#include "mit-copyright.h"
 #include "defs.h"
 #include "f_defs.h"
 #include "globals.h"
 
-char * whoami;                 /* used by menu.c ugh!!! */
-char * moira_server;
-int interrupt = 0;
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
 
-extern Menu moira_top_menu, list_menu, user_menu, dcm_menu;
+RCSID("$Header$");
 
-#ifndef DEBUG
-static void SignalHandler(), CatchInterrupt();
-#endif DEBUG
+static void ErrorExit(char *buf, int status);
+static void Usage(void);
+static void Signal_Handler(void);
+static void CatchInterrupt(void);
 
-static void ErrorExit(), Usage();
-char *getlogin();
-uid_t getuid();
-struct passwd *getpwuid();
+char *whoami;                  /* used by menu.c ugh!!! */
+char *moira_server;
+int interrupt = 0;
+
+extern Menu moira_top_menu, list_menu, user_menu, dcm_menu;
 
-#ifdef _AIX
-Bool use_menu = FALSE;         /* whether or not we are using a menu. */
-#else
 Bool use_menu = TRUE;          /* whether or not we are using a menu. */
-#endif
 
 /*     Function Name: main
  *     Description: The main driver for the Moira Client.
@@ -60,62 +45,73 @@ Bool use_menu = TRUE;               /* whether or not we are using a menu. */
  *     Returns: doesn't return.
  */
 
-void
-main(argc, argv)
-    int argc;
-    char ** argv;
+void main(int argc, char **argv)
 {
-    int status;
-    Menu *menu;
-    char *motd, **arg;
-
-    if ((user = getlogin()) == NULL) 
-       user = getpwuid((int) getuid())->pw_name;
-    user = (user && strlen(user)) ? Strsave(user) : "";
-
-    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 !!! */
-
-    verbose = TRUE;
-    arg = argv;
-    moira_server = NULL;
-
-    while (++arg - argv < argc) {
-       if (**arg == '-') {
-           if (!strcmp(*arg, "-nomenu"))
-             use_menu = FALSE;
-           else if (!strcmp(*arg, "-db"))
-             if (arg - argv < argc - 1) {
+  int status;
+  Menu *menu;
+  char *motd, **arg;
+  struct sigaction act;
+
+  if (!(user = getlogin()))
+    user = getpwuid(getuid())->pw_name;
+  user = (user && strlen(user)) ? strdup(user) : "";
+
+  if (!(program_name = strrchr(argv[0], '/')))
+    program_name = argv[0];
+  else
+    program_name++;
+  program_name = strdup(program_name);
+  whoami = strdup(program_name); /* used by menu.c,  ugh !!! */
+
+  verbose = TRUE;
+  arg = argv;
+  moira_server = NULL;
+
+  while (++arg - argv < argc)
+    {
+      if (**arg == '-')
+       {
+         if (!strcmp(*arg, "-nomenu"))
+           use_menu = FALSE;
+         else if (!strcmp(*arg, "-menu"))
+           use_menu = TRUE;
+         else if (!strcmp(*arg, "-db"))
+           {
+             if (arg - argv < argc - 1)
+               {
                  ++arg;
                  moira_server = *arg;
-             } else
-               Usage(argv);
-           else
-             Usage(argv);
+               } else
+                 Usage();
+           }
+         else
+           Usage();
        }
     }
 
-    if ( status = mr_connect(moira_server) ) 
-       ErrorExit("\nConnection to Moira server failed", status);
-
-    if ( status = mr_motd(&motd) )
-        ErrorExit("\nUnable to check server status", status);
-    if (motd) {
-       fprintf(stderr, "The Moira server is currently unavailable:\n%s\n", motd);
-       mr_disconnect();
-       exit(1);
+  if ((status = mr_connect(moira_server)))
+    ErrorExit("\nConnection to Moira server failed", status);
+
+  if ((status = mr_motd(&motd)))
+    ErrorExit("\nUnable to check server status", status);
+  if (motd)
+    {
+      fprintf(stderr, "The Moira server is currently unavailable:\n%s\n",
+             motd);
+      mr_disconnect();
+      exit(1);
     }
 
-    if ( status = mr_auth(program_name) ) {
-       if (status == MR_USER_AUTH) {
-           char buf[BUFSIZ];
-           com_err(program_name, status, "\nPress [RETURN] to continue");
-           gets(buf);
-       } else {
+  if ((status = mr_auth(program_name)))
+    {
+      if (status == MR_USER_AUTH)
+       {
+         char buf[BUFSIZ];
+         com_err(program_name, status, "\nPress [RETURN] to continue");
+         fgets(buf, BUFSIZ, stdin);
+       }
+      else
+       {
          if (status >= ERROR_TABLE_BASE_krb &&
              status <= ERROR_TABLE_BASE_krb + 256)
            ErrorExit("\nAuthorization failed -- please run kinit", status);
@@ -124,39 +120,46 @@ main(argc, argv)
        }
     }
 
-/*
- * These signals should not be set until just before we fire up the menu
- * system. 
- */
+  /*
+   * These signals should not be set until just before we fire up the menu
+   * system.
+   */
+
+  sigemptyset(&act.sa_mask);
+  act.sa_flags = 0;
+  act.sa_handler = Signal_Handler;
+  sigaction(SIGHUP, &act, NULL);
+  sigaction(SIGQUIT, &act, NULL);
+  if (use_menu)
+    sigaction(SIGINT, &act, NULL);
+  else
+    {
+      act.sa_handler = CatchInterrupt;
+      sigaction(SIGINT, &act, NULL);
+    }
 
-#ifndef DEBUG
-    (void) signal(SIGHUP, SignalHandler);
-    (void) signal(SIGQUIT, SignalHandler);
-    if (use_menu)
-      (void) signal(SIGINT, SignalHandler); 
-    else
-      (void) signal(SIGINT, CatchInterrupt); 
-#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 = &moira_top_menu;
-
-    if (use_menu) {            /* Start menus that execute program */
-        Start_paging();
-       Start_menu(menu);
-       Stop_paging();
+  initialize_gdss_error_table();
+
+  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 = &moira_top_menu;
+
+  if (use_menu)                /* Start menus that execute program */
+    {
+      Start_paging();
+      Start_menu(menu);
+      Stop_paging();
     }
-    else                       /* Start program without menus. */
-       Start_no_menu(menu);
+  else                 /* Start program without menus. */
+    Start_no_menu(menu);
 
-    mr_disconnect();
-    exit(0);
+  mr_disconnect();
+  exit(0);
 }
 
 /*     Function Name: ErrorExit
@@ -166,14 +169,11 @@ main(argc, argv)
  *     Returns: doesn't return.
  */
 
-static void
-ErrorExit(buf,status)
-int status;
-char * buf;    
+static void ErrorExit(char *buf, int status)
 {
-    com_err(program_name, status, buf);
-    mr_disconnect();
-    exit(1);
+  com_err(program_name, status, buf);
+  mr_disconnect();
+  exit(1);
 }
 
 /*     Function Name: usage
@@ -182,35 +182,31 @@ char * buf;
  *     Returns: doesn't return.
  */
 
-static void
-Usage()
+static void Usage(void)
 {
-    fprintf(stderr, "Usage: %s [-nomenu]\n", program_name);
-    exit(1);
+  fprintf(stderr, "Usage: %s [-nomenu | -menu] [-db server[:port]]\n",
+         program_name);
+  exit(1);
 }
 
-#ifndef DEBUG
-/*     Function Name: SignalHandler
+/*     Function Name: Signal_Handler
  *     Description: This function cleans up from a signal interrupt.
  *     Arguments: none.
  *     Returns: doesn't
  */
 
-static void
-SignalHandler()
+static void Signal_Handler(void)
 {
-    Put_message("Signal caught - exiting");
-    if (use_menu)
-      Cleanup_menu();
-    mr_disconnect();
-    exit(1);
+  Put_message("Signal caught - exiting");
+  if (use_menu)
+    Cleanup_menu();
+  mr_disconnect();
+  exit(1);
 }
 
 
-static void
-CatchInterrupt()
+static void CatchInterrupt(void)
 {
-    Put_message("Interrupt! Press RETURN to continue");
-    interrupt = 1;
+  Put_message("Interrupt! Press RETURN to continue");
+  interrupt = 1;
 }
-#endif DEBUG
This page took 0.088822 seconds and 4 git commands to generate.