Remove internal vldbClientInit prototype
[openafs.git] / src / bucoord / main.c
index 069433a..5d7adfd 100644 (file)
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID
-    ("$Header$");
 
 #include <afs/stds.h>
 #include <sys/types.h>
-#include <stdio.h>
+#include <sys/stat.h>
+
 #ifdef AFS_AIX32_ENV
 #include <signal.h>
 #endif
@@ -26,6 +25,7 @@ RCSID
 #include <netinet/in.h>
 #include <netdb.h>
 #endif
+
 #include <errno.h>
 #include <afs/cmd.h>
 #include <rx/rx.h>
@@ -44,44 +44,19 @@ RCSID
 #include <afs/com_err.h>
 #include <lock.h>
 #include <afs/budb.h>
+#include <afs/kautils.h>
+#include <afs/vlserver.h>
+#include <afs/butm.h>
+#include <afs/butx.h>
+#include <afs/tcdata.h>
 
 #include "bc.h"                        /*Backup Coordinator structs and defs */
-
+#include "bucoord_internal.h"
+#include "bucoord_prototypes.h"
 
 int localauth, interact;
 char tcell[64];
 
-extern int bc_AddDumpCmd();
-extern int bc_AddHostCmd();
-extern int bc_AddVolEntryCmd();
-extern int bc_AddVolSetCmd();
-/* extern int bc_CheckDumpStatCmd(); */
-extern int bc_DeleteDumpCmd();
-extern int bc_DeleteHostCmd();
-extern int bc_DeleteVolEntryCmd();
-extern int bc_DeleteVolSetCmd();
-extern int bc_DiskRestoreCmd();
-extern int bc_VolsetRestoreCmd();
-extern int bc_DumpCmd();
-extern int bc_GetTapeStatusCmd();
-extern int bc_JobsCmd();
-extern int bc_KillCmd();
-extern int bc_LabelTapeCmd();
-extern int bc_ListDumpScheduleCmd();
-extern int bc_ListHostsCmd();
-extern int bc_ListVolSetCmd();
-extern int bc_QuitCmd();
-extern int bc_ReadLabelCmd();
-extern int bc_ScanDumpsCmd();
-extern int bc_SetExpCmd();
-extern int bc_VolRestoreCmd();
-extern int bc_dblookupCmd();
-extern int bc_dbVerifyCmd();
-extern int bc_deleteDumpCmd();
-extern int bc_dumpInfoCmd();
-extern int bc_restoreDbCmd();
-extern int bc_saveDbCmd();
-
 /*
  * Global configuration information for the Backup Coordinator.
  */
@@ -96,7 +71,8 @@ char *whoami = "backup";
 
 /* dummy routine for the audit work.  It should do nothing since audits */
 /* occur at the server level and bos is not a server. */
-osi_audit()
+int
+osi_audit(void)
 {
     return 0;
 }
@@ -106,7 +82,7 @@ osi_audit()
  * in this module.
  */
 void
-InitErrTabs()
+InitErrTabs(void)
 {
     initialize_ACFG_error_table();
     initialize_KA_error_table();
@@ -127,8 +103,7 @@ InitErrTabs()
  * not dealt with by standard errno and com_err stuff.
  */
 void
-bc_HandleMisc(code)
-     afs_int32 code;
+bc_HandleMisc(afs_int32 code)
 {
     if (((code <= VMOVED) && (code >= VSALVAGE)) || (code < 0)) {
        switch (code) {
@@ -177,13 +152,12 @@ bc_HandleMisc(code)
 }
 
 /* Return true if line is all whitespace */
-static
-LineIsBlank(aline)
-     register char *aline;
+static int
+LineIsBlank(char *aline)
 {
     register int tc;
 
-    while (tc = *aline++)
+    while ((tc = *aline++))
        if ((tc != ' ') && (tc != '\t') && (tc != '\n'))
            return (0);
 
@@ -196,11 +170,10 @@ LineIsBlank(aline)
  */
 
 afs_int32
-bc_InitTextConfig()
+bc_InitTextConfig(void)
 {
     udbClientTextP ctPtr;
     int i;
-    afs_int32 code = 0;
 
     extern struct bc_config *bc_globalConfig;
 
@@ -238,28 +211,26 @@ bc_InitTextConfig()
  */
 
 static int
-backupInit()
+backupInit(void)
 {
     register afs_int32 code;
     static int initd = 0;      /* ever called? */
     PROCESS watcherPid;
     PROCESS pid;               /* LWP process ID */
 
-    extern statusWatcher();
-
     /* Initialization */
     initialize_CMD_error_table();
 
     /* don't run more than once */
     if (initd) {
-       com_err(whoami, 0, "Backup already initialized.");
+       afs_com_err(whoami, 0, "Backup already initialized.");
        return 0;
     }
     initd = 1;
 
-    code = bc_InitConfig(DefaultConfDir);
+    code = bc_InitConfig((char *)DefaultConfDir);
     if (code) {
-       com_err(whoami, code,
+       afs_com_err(whoami, code,
                "Can't initialize from config files in directory '%s'",
                DefaultConfDir);
        return (code);
@@ -270,13 +241,13 @@ backupInit()
      */
     code = LWP_InitializeProcessSupport(LWP_NORMAL_PRIORITY, &pid);
     if (code) {
-       com_err(whoami, code, "; Can't initialize LWP");
+       afs_com_err(whoami, code, "; Can't initialize LWP");
        return (code);
     }
 
     code = rx_Init(htons(0));
     if (code) {
-       com_err(whoami, code, "; Can't initialize Rx");
+       afs_com_err(whoami, code, "; Can't initialize Rx");
        return (code);
     }
 
@@ -298,7 +269,7 @@ backupInit()
        LWP_CreateProcess(statusWatcher, 20480, LWP_NORMAL_PRIORITY,
                          (void *)2, "statusWatcher", &watcherPid);
     if (code) {
-       com_err(whoami, code, "; Can't create status monitor task");
+       afs_com_err(whoami, code, "; Can't create status monitor task");
        return (code);
     }
 
@@ -327,8 +298,7 @@ backupInit()
  */
 
 static int
-MyBeforeProc(as)
-     register struct cmd_syndesc *as;
+MyBeforeProc(register struct cmd_syndesc *as, void *arock)
 {
     afs_int32 code;
 
@@ -342,14 +312,14 @@ MyBeforeProc(as)
 
        code = backupInit();
        if (code) {
-           com_err(whoami, code, "; Can't initialize backup");
+           afs_com_err(whoami, code, "; Can't initialize backup");
            exit(1);
        }
 
        /* Get initial information from the database */
        code = bc_InitTextConfig();
        if (code) {
-           com_err(whoami, code,
+           afs_com_err(whoami, code,
                    "; Can't obtain configuration text from backup database");
            exit(1);
        }
@@ -386,10 +356,9 @@ struct Lock dispatchLock;  /* lock on the Dispatch call */
 #define unlock_Dispatch()   ReleaseWriteLock(&dispatchLock)
 
 afs_int32
-doDispatch(targc, targv, dispatchCount)
-     char *targv[MAXV];
-     afs_int32 targc;
-     afs_int32 dispatchCount;  /* to prevent infinite recursion */
+doDispatch(afs_int32 targc,
+          char *targv[MAXV], 
+          afs_int32 dispatchCount) /* to prevent infinite recursion */
 {
     char *sargv[MAXV];
     afs_int32 sargc;
@@ -410,7 +379,7 @@ doDispatch(targc, targv, dispatchCount)
 
     if (internalLoadFile) {    /* Load a file in */
        if (dispatchCount > MAXRECURSION) {     /* Beware recursive loops. */
-           com_err(whoami, 0, "Potential recursion: will not load file %s",
+           afs_com_err(whoami, 0, "Potential recursion: will not load file %s",
                    internalLoadFile);
            code = -1;
            goto done;
@@ -418,7 +387,7 @@ doDispatch(targc, targv, dispatchCount)
 
        fd = fopen(internalLoadFile, "r");      /* Open the load file */
        if (!fd) {
-           com_err(whoami, errno, "; Cannot open file %s", internalLoadFile);
+           afs_com_err(whoami, errno, "; Cannot open file %s", internalLoadFile);
            code = -1;
            goto done;
        }
@@ -445,7 +414,7 @@ doDispatch(targc, targv, dispatchCount)
                (!noExecute)) { /*      or no execute */
                c = cmd_ParseLine(lineBuffer, sargv, &sargc, MAXV);
                if (c) {
-                   com_err(whoami, c, "; Can't parse line");
+                   afs_com_err(whoami, c, "; Can't parse line");
                } else {
                    doDispatch(sargc, sargv, dispatchCount + 1);        /* Recursive - ignore error */
                    cmd_FreeArgv(sargv);        /* Free up arguments */
@@ -463,17 +432,14 @@ doDispatch(targc, targv, dispatchCount)
 }
 
 int
-bc_interactCmd(as, arock)
-     struct cmd_syndesc *as;
-     char *arock;
+bc_interactCmd(struct cmd_syndesc *as, void *arock)
 {
     interact = 1;
     return 0;
 }
 
 static void
-add_std_args(ts)
-     register struct cmd_syndesc *ts;
+add_std_args(struct cmd_syndesc *ts)
 {
     cmd_Seek(ts, 14);
     cmd_AddParm(ts, "-localauth", CMD_FLAG, CMD_OPTIONAL,
@@ -481,10 +447,8 @@ add_std_args(ts)
     cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
 }
 
-
-main(argc, argv)
-     int argc;
-     char **argv;
+int
+main(int argc, char **argv)
 {                              /*main */
     char *targv[MAXV];         /*Ptr to parsed argv stuff */
     afs_int32 targc;           /*Num parsed arguments */
@@ -517,7 +481,7 @@ main(argc, argv)
 
     cmd_SetBeforeProc(MyBeforeProc, NULL);
 
-    ts = cmd_CreateSyntax("dump", bc_DumpCmd, 0, "start dump");
+    ts = cmd_CreateSyntax("dump", bc_DumpCmd, NULL, "start dump");
     cmd_AddParm(ts, "-volumeset", CMD_SINGLE, CMD_OPTIONAL,
                "volume set name");
     cmd_AddParm(ts, "-dump", CMD_SINGLE, CMD_OPTIONAL, "dump level name");
@@ -531,7 +495,7 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("volrestore", bc_VolRestoreCmd, 0,
+    ts = cmd_CreateSyntax("volrestore", bc_VolRestoreCmd, NULL,
                          "restore volume");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED,
                "destination machine");
@@ -545,10 +509,12 @@ main(argc, argv)
                "date from which to restore");
     cmd_AddParm(ts, "-portoffset", CMD_LIST, CMD_OPTIONAL, "TC port offsets");
     cmd_AddParm(ts, "-n", CMD_FLAG, CMD_OPTIONAL, "don't really execute it");
+    cmd_AddParm(ts, "-usedump", CMD_SINGLE, CMD_OPTIONAL,
+               "specify the dumpID to restore from");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("diskrestore", bc_DiskRestoreCmd, 0,
+    ts = cmd_CreateSyntax("diskrestore", bc_DiskRestoreCmd, NULL,
                          "restore partition");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED,
                "machine to restore");
@@ -566,9 +532,9 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("quit", bc_QuitCmd, 0, "leave the program");
+    ts = cmd_CreateSyntax("quit", bc_QuitCmd, NULL, "leave the program");
 
-    ts = cmd_CreateSyntax("volsetrestore", bc_VolsetRestoreCmd, 0,
+    ts = cmd_CreateSyntax("volsetrestore", bc_VolsetRestoreCmd, NULL,
                          "restore a set of volumes");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL, "volume set name");
     cmd_AddParm(ts, "-file", CMD_SINGLE, CMD_OPTIONAL, "file name");
@@ -579,7 +545,7 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addhost", bc_AddHostCmd, 0, "add host to config");
+    ts = cmd_CreateSyntax("addhost", bc_AddHostCmd, NULL, "add host to config");
     cmd_AddParm(ts, "-tapehost", CMD_SINGLE, CMD_REQUIRED,
                "tape machine name");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
@@ -587,7 +553,7 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delhost", bc_DeleteHostCmd, 0,
+    ts = cmd_CreateSyntax("delhost", bc_DeleteHostCmd, NULL,
                          "delete host to config");
     cmd_AddParm(ts, "-tapehost", CMD_SINGLE, CMD_REQUIRED,
                "tape machine name");
@@ -596,29 +562,29 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("listhosts", bc_ListHostsCmd, 0,
+    ts = cmd_CreateSyntax("listhosts", bc_ListHostsCmd, NULL,
                          "list config hosts");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("jobs", bc_JobsCmd, 0, "list running jobs");
+    ts = cmd_CreateSyntax("jobs", bc_JobsCmd, NULL, "list running jobs");
 
-    ts = cmd_CreateSyntax("kill", bc_KillCmd, 0, "kill running job");
+    ts = cmd_CreateSyntax("kill", bc_KillCmd, NULL, "kill running job");
     cmd_AddParm(ts, "-id", CMD_SINGLE, CMD_REQUIRED,
                "job ID or dump set name");
 
-    ts = cmd_CreateSyntax("listvolsets", bc_ListVolSetCmd, 0,
+    ts = cmd_CreateSyntax("listvolsets", bc_ListVolSetCmd, NULL,
                          "list volume sets");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL, "volume set name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("listdumps", bc_ListDumpScheduleCmd, 0,
+    ts = cmd_CreateSyntax("listdumps", bc_ListDumpScheduleCmd, NULL,
                          "list dump schedules");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addvolset", bc_AddVolSetCmd, 0,
+    ts = cmd_CreateSyntax("addvolset", bc_AddVolSetCmd, NULL,
                          "create a new volume set");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-temporary", CMD_FLAG, CMD_OPTIONAL,
@@ -626,20 +592,20 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("status", bc_GetTapeStatusCmd, 0,
+    ts = cmd_CreateSyntax("status", bc_GetTapeStatusCmd, NULL,
                          "get tape coordinator status");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delvolset", bc_DeleteVolSetCmd, 0,
+    ts = cmd_CreateSyntax("delvolset", bc_DeleteVolSetCmd, NULL,
                          "delete a volume set");
     cmd_AddParm(ts, "-name", CMD_LIST, CMD_REQUIRED, "volume set name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("addvolentry", bc_AddVolEntryCmd, 0,
+    ts = cmd_CreateSyntax("addvolentry", bc_AddVolEntryCmd, NULL,
                          "add a new volume entry");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED, "machine name");
@@ -649,26 +615,26 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("delvolentry", bc_DeleteVolEntryCmd, 0,
+    ts = cmd_CreateSyntax("delvolentry", bc_DeleteVolEntryCmd, NULL,
                          "delete a volume set sub-entry");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_REQUIRED, "volume set name");
     cmd_AddParm(ts, "-entry", CMD_SINGLE, CMD_REQUIRED, "volume set index");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("adddump", bc_AddDumpCmd, 0, "add dump schedule");
+    ts = cmd_CreateSyntax("adddump", bc_AddDumpCmd, NULL, "add dump schedule");
     cmd_AddParm(ts, "-dump", CMD_LIST, CMD_REQUIRED, "dump level name");
     cmd_AddParm(ts, "-expires", CMD_LIST, CMD_OPTIONAL, "expiration date");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("deldump", bc_DeleteDumpCmd, 0,
+    ts = cmd_CreateSyntax("deldump", bc_DeleteDumpCmd, NULL,
                          "delete dump schedule");
     cmd_AddParm(ts, "-dump", CMD_SINGLE, CMD_REQUIRED, "dump level name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("labeltape", bc_LabelTapeCmd, 0, "label a tape");
+    ts = cmd_CreateSyntax("labeltape", bc_LabelTapeCmd, NULL, "label a tape");
     cmd_AddParm(ts, "-name", CMD_SINGLE, CMD_OPTIONAL,
                "AFS tape name, defaults to NULL");
     cmd_AddParm(ts, "-size", CMD_SINGLE, CMD_OPTIONAL,
@@ -680,14 +646,14 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("readlabel", bc_ReadLabelCmd, 0,
+    ts = cmd_CreateSyntax("readlabel", bc_ReadLabelCmd, NULL,
                          "read the label on tape");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("scantape", bc_ScanDumpsCmd, 0,
+    ts = cmd_CreateSyntax("scantape", bc_ScanDumpsCmd, NULL,
                          "dump information recovery from tape");
     cmd_AddParm(ts, "-dbadd", CMD_FLAG, CMD_OPTIONAL,
                "add information to the database");
@@ -696,34 +662,34 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("volinfo", bc_dblookupCmd, 0,
+    ts = cmd_CreateSyntax("volinfo", bc_dblookupCmd, NULL,
                          "query the backup database");
     cmd_AddParm(ts, "-volume", CMD_SINGLE, CMD_REQUIRED, "volume name");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("setexp", bc_SetExpCmd, 0,
+    ts = cmd_CreateSyntax("setexp", bc_SetExpCmd, NULL,
                          "set/clear dump expiration dates");
     cmd_AddParm(ts, "-dump", CMD_LIST, CMD_REQUIRED, "dump level name");
     cmd_AddParm(ts, "-expires", CMD_LIST, CMD_OPTIONAL, "expiration date");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("savedb", bc_saveDbCmd, 0, "save backup database");
+    ts = cmd_CreateSyntax("savedb", bc_saveDbCmd, NULL, "save backup database");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     cmd_AddParm(ts, "-archive", CMD_LIST, CMD_OPTIONAL, "date time");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("restoredb", bc_restoreDbCmd, 0,
+    ts = cmd_CreateSyntax("restoredb", bc_restoreDbCmd, NULL,
                          "restore backup database");
     cmd_AddParm(ts, "-portoffset", CMD_SINGLE, CMD_OPTIONAL,
                "TC port offset");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("dumpinfo", bc_dumpInfoCmd, 0,
+    ts = cmd_CreateSyntax("dumpinfo", bc_dumpInfoCmd, NULL,
                          "provide information about a dump in the database");
     cmd_AddParm(ts, "-ndumps", CMD_SINGLE, CMD_OPTIONAL, "no. of dumps");
     cmd_AddParm(ts, "-id", CMD_SINGLE, CMD_OPTIONAL, "dump id");
@@ -732,13 +698,13 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("dbverify", bc_dbVerifyCmd, 0,
+    ts = cmd_CreateSyntax("dbverify", bc_dbVerifyCmd, NULL,
                          "check ubik database integrity");
     cmd_AddParm(ts, "-detail", CMD_FLAG, CMD_OPTIONAL, "additional details");
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("deletedump", bc_deleteDumpCmd, 0,
+    ts = cmd_CreateSyntax("deletedump", bc_deleteDumpCmd, NULL,
                          "delete dumps from the database");
     cmd_AddParm(ts, "-dumpid", CMD_LIST, CMD_OPTIONAL, "dump id");
     cmd_AddParm(ts, "-from", CMD_LIST, CMD_OPTIONAL, "date time");
@@ -755,7 +721,7 @@ main(argc, argv)
     if (!interact)
        add_std_args(ts);
 
-    ts = cmd_CreateSyntax("interactive", bc_interactCmd, 0,
+    ts = cmd_CreateSyntax("interactive", bc_interactCmd, NULL,
                          "enter interactive mode");
     add_std_args(ts);
 
@@ -797,8 +763,8 @@ main(argc, argv)
        if (!LineIsBlank(lineBuffer)) {
            code = cmd_ParseLine(lineBuffer, targv, &targc, MAXV);
            if (code)
-               com_err(whoami, code, "; Can't parse line: '%s'",
-                       error_message(code));
+               afs_com_err(whoami, code, "; Can't parse line: '%s'",
+                       afs_error_message(code));
            else {
                doDispatch(targc, targv, 1);
                cmd_FreeArgv(targv);