bozo: Tidy header includes
[openafs.git] / src / bozo / cronbnodeops.c
index 9e16f5b..f4eeab1 100644 (file)
@@ -1,38 +1,43 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#include <afs/param.h>
 #include <afsconfig.h>
+#include <afs/param.h>
 
-RCSID("$Header$");
+#include <afs/procmgmt.h>
+#include <roken.h>
 
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <lwp.h>
-#include <time.h>
 #include <ctype.h>
-#include <stdio.h>
+
 #ifdef AFS_NT40_ENV
 #include <io.h>
 #endif
+
+#include <lwp.h>
 #include <afs/ktime.h>
 #include <afs/afsutil.h>
-#include <afs/procmgmt.h>  /* signal(), kill(), wait(), etc. */
+
 #include "bnode.h"
+#include "bosprototypes.h"
 
-static int cron_timeout(), cron_getstat(), cron_setstat(), cron_delete();
-static int cron_procexit(), cron_getstring(), cron_getparm(), cron_restartp();
-static int cron_hascore();
-struct bnode *cron_create();
-extern char *ktime_DateOf();
+struct bnode *cron_create(char *, char *, char *, char *, char *, char *);
+static int cron_hascore(struct bnode *bnode);
+static int cron_restartp(struct bnode *bnode);
+static int cron_delete(struct bnode *bnode);
+static int cron_timeout(struct bnode *bnode);
+static int cron_getstat(struct bnode *bnode, afs_int32 *status);
+static int cron_setstat(struct bnode *bnode, afs_int32 status);
+static int cron_procexit(struct bnode *bnode, struct bnode_proc *proc);
+static int cron_getstring(struct bnode *bnode, char *abuffer, afs_int32 alen);
+static int cron_getparm(struct bnode *bnode, afs_int32, char *, afs_int32);
 
-#define        SDTIME          60          /* time in seconds given to a process to evaporate */
+#define        SDTIME          60      /* time in seconds given to a process to evaporate */
 
 struct bnode_ops cronbnode_ops = {
     cron_create,
@@ -46,45 +51,49 @@ struct bnode_ops cronbnode_ops = {
     cron_restartp,
     cron_hascore,
 };
-    
+
 struct cronbnode {
     struct bnode b;
     afs_int32 zapTime;         /* time we sent a sigterm */
     char *command;
     char *whenString;          /* string rep. of when to run */
     struct bnode_proc *proc;
-    afs_int32 lastStart;               /* time last started process */
+    afs_int32 lastStart;       /* time last started process */
     afs_int32 nextRun;         /* next time to run, if no proc running */
     struct ktime whenToRun;    /* high-level rep of when should we run this guy */
-    afs_int32 when;                    /* computed at creation time and procexit time */
+    afs_int32 when;            /* computed at creation time and procexit time */
     char everRun;              /* true if ever ran */
     char waitingForShutdown;   /* have we started any shutdown procedure? */
-    char running;   /* is process running? */
-    char killSent;  /* have we tried sigkill signal? */
+    char running;              /* is process running? */
+    char killSent;             /* have we tried sigkill signal? */
 };
 
-static int cron_hascore(abnode)
-register struct ezbnode *abnode; {
+static int
+cron_hascore(struct bnode *abnode)
+{
     char tbuffer[256];
 
-    bnode_CoreName(abnode, (char *) 0, tbuffer);
-    if (access(tbuffer, 0) == 0) return 1;
-    else return 0;
+    bnode_CoreName(abnode, NULL, tbuffer);
+    if (access(tbuffer, 0) == 0)
+       return 1;
+    else
+       return 0;
 }
 
 /* run at creation or after process exit.  figures out if we're all done (if a
     one shot run) or when we should run again.  Sleeps until we should run again.
     Note that the computation of when we should run again is made in procexit
     and/or create procs.  This guy only schedules the sleep */
-ScheduleCronBnode(abnode)
-register struct cronbnode *abnode; {
-    register afs_int32 code;
-    register afs_int32 temp;
+int
+ScheduleCronBnode(struct cronbnode *abnode)
+{
+    afs_int32 code;
+    afs_int32 temp;
     struct bnode_proc *tp;
 
     /* If this proc is shutdown, tell bproc() to no longer run this job */
     if (abnode->b.goal == BSTAT_SHUTDOWN) {
-        bnode_SetTimeout(abnode, 0);
+       bnode_SetTimeout((struct bnode *)abnode, 0);
        return 0;
     }
 
@@ -93,14 +102,14 @@ register struct cronbnode *abnode; {
        /* one shot */
        if (abnode->everRun) {
            /* once is enough */
-           bnode_Delete(abnode);
+           bnode_Delete((struct bnode *)abnode);
            return 0;
        }
        /* otherwise start it */
        if (!abnode->running) {
            /* start up */
            abnode->lastStart = FT_ApproxTime();
-           code = bnode_NewProc(abnode, abnode->command, (char *) 0, &tp);
+           code = bnode_NewProc((struct bnode *)abnode, abnode->command, NULL, &tp);
            if (code) {
                bozo_Log("cron bnode %s failed to start (code %d)\n",
                         abnode->b.name, code);
@@ -111,75 +120,81 @@ register struct cronbnode *abnode; {
            abnode->proc = tp;
            return 0;
        }
-    }
-    else {
+    } else {
        /* run periodically */
-       if (abnode->running) return 0;
+       if (abnode->running)
+           return 0;
        /* otherwise find out when to run it, and do it then */
        temp = abnode->when - FT_ApproxTime();
-       if (temp < 1) temp = 1; /* temp is when to start dude */
-       bnode_SetTimeout(abnode, temp);
+       if (temp < 1)
+           temp = 1;           /* temp is when to start dude */
+       bnode_SetTimeout((struct bnode *)abnode, temp);
     }
+    return 0;
 }
 
-static int cron_restartp (abnode)
-register struct cronbnode *abnode; {
+static int
+cron_restartp(struct bnode *abnode)
+{
     return 0;
 }
 
-static int cron_delete(abnode)
-struct cronbnode *abnode; {
+static int
+cron_delete(struct bnode *bn)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
     free(abnode->command);
     free(abnode->whenString);
     free(abnode);
     return 0;
 }
 
-struct bnode *cron_create(ainstance, acommand, awhen)
-char *ainstance;
-char *awhen;
-char *acommand; {
+struct bnode *
+cron_create(char *ainstance, char *acommand, char *awhen,
+           char *unused1, char *unused2, char *unused3)
+{
     struct cronbnode *te;
     afs_int32 code;
     char *cmdpath;
-    extern char *copystr();
 
     /* construct local path from canonical (wire-format) path */
     if (ConstructLocalBinPath(acommand, &cmdpath)) {
        bozo_Log("BNODE: command path invalid '%s'\n", acommand);
-       return (struct bnode *)0;
+       return NULL;
     }
 
-    te = (struct cronbnode *) malloc(sizeof(struct cronbnode));
-    bzero(te, sizeof(struct cronbnode));
+    te = (struct cronbnode *)malloc(sizeof(struct cronbnode));
+    memset(te, 0, sizeof(struct cronbnode));
     code = ktime_ParsePeriodic(awhen, &te->whenToRun);
-    if (code < 0) {
+    if ((code < 0) || (bnode_InitBnode((struct bnode *)te, &cronbnode_ops, ainstance) != 0)) {
        free(te);
        free(cmdpath);
-       return (struct bnode *) 0;
+       return NULL;
     }
-    bnode_InitBnode(te, &cronbnode_ops, ainstance);
     te->when = ktime_next(&te->whenToRun, 0);
     te->command = cmdpath;
     te->whenString = copystr(awhen);
-    return (struct bnode *) te;
+    return (struct bnode *)te;
 }
 
 /* called to SIGKILL a process if it doesn't terminate normally.  In cron, also
     start up a process if it is time and not already running */
-static int cron_timeout(abnode)
-struct cronbnode *abnode; {
-    register afs_int32 temp;
-    register afs_int32 code;
+static int
+cron_timeout(struct bnode *bn)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
+    afs_int32 temp;
+    afs_int32 code;
     struct bnode_proc *tp;
 
     if (!abnode->running) {
-       if (abnode->when == 0) return 0;    /* spurious timeout activation */
+       if (abnode->when == 0)
+           return 0;           /* spurious timeout activation */
        /* not running, perhaps we should start it */
        if (FT_ApproxTime() >= abnode->when) {
            abnode->lastStart = FT_ApproxTime();
-           bnode_SetTimeout(abnode, 0);
-           code = bnode_NewProc(abnode, abnode->command, (char *) 0, &tp);
+           bnode_SetTimeout((struct bnode *)abnode, 0);
+           code = bnode_NewProc((struct bnode *)abnode, abnode->command, NULL, &tp);
            if (code) {
                bozo_Log("cron failed to start bnode %s (code %d)\n",
                         abnode->b.name, code);
@@ -188,88 +203,92 @@ struct cronbnode *abnode; {
            abnode->everRun = 1;
            abnode->running = 1;
            abnode->proc = tp;
-       }
-       else {
+       } else {
            /* woke up too early, try again */
            temp = abnode->when - FT_ApproxTime();
-           if (temp < 1) temp = 1;
-           bnode_SetTimeout(abnode, temp);
+           if (temp < 1)
+               temp = 1;
+           bnode_SetTimeout((struct bnode *)abnode, temp);
        }
-    }
-    else {
-       if (!abnode->waitingForShutdown) return 0;      /* spurious */
+    } else {
+       if (!abnode->waitingForShutdown)
+           return 0;           /* spurious */
        /* send kill and turn off timer */
        bnode_StopProc(abnode->proc, SIGKILL);
        abnode->killSent = 1;
-       bnode_SetTimeout(abnode, 0);
+       bnode_SetTimeout((struct bnode *)abnode, 0);
     }
     return 0;
 }
 
-static int cron_getstat(abnode, astatus)
-struct cronbnode *abnode;
-afs_int32 *astatus; {
-    register afs_int32 temp;
-    if (abnode->waitingForShutdown) temp = BSTAT_SHUTTINGDOWN;
-    else if (abnode->b.goal == 0) temp = BSTAT_SHUTDOWN;
+static int
+cron_getstat(struct bnode *bn, afs_int32 * astatus)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
+    afs_int32 temp;
+    if (abnode->waitingForShutdown)
+       temp = BSTAT_SHUTTINGDOWN;
+    else if (abnode->b.goal == 0)
+       temp = BSTAT_SHUTDOWN;
     else if (abnode->everRun && abnode->when == 0 && !abnode->running) {
        /* special hack: bnode deletion won't happen if bnode is active, so
-          we make bnodes that are ready to be deleted automatically appear
-          as BSTAT_SHUTDOWN so bnode_Delete is happy. */
+        * we make bnodes that are ready to be deleted automatically appear
+        * as BSTAT_SHUTDOWN so bnode_Delete is happy. */
        temp = BSTAT_SHUTDOWN;
-    }
-    else temp = BSTAT_NORMAL;
+    } else
+       temp = BSTAT_NORMAL;
     *astatus = temp;
     return 0;
 }
 
-static int cron_setstat(abnode, astatus)
-register struct cronbnode *abnode;
-afs_int32 astatus; {
-
-    if (abnode->waitingForShutdown) return BZBUSY;
+static int
+cron_setstat(struct bnode *bn, afs_int32 astatus)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
+    if (abnode->waitingForShutdown)
+       return BZBUSY;
     if (astatus == BSTAT_SHUTDOWN) {
-       if (abnode->running) {
-         /* start shutdown */
-         bnode_StopProc(abnode->proc, SIGTERM);
-         abnode->waitingForShutdown = 1;
-         bnode_SetTimeout(abnode, SDTIME);
-         /* When shutdown is complete, bproc() calls BOP_PROCEXIT()
-          * [cron_procexit()] which will tell bproc() to no longer
-          * run this cron job.
-          */
-       } else {
-         /* Tell bproc() to no longer run this cron job */
-         bnode_SetTimeout(abnode, 0);
-       }
-    }
-    else if (astatus == BSTAT_NORMAL) {
-        /* start the cron job
+       if (abnode->running) {
+           /* start shutdown */
+           bnode_StopProc(abnode->proc, SIGTERM);
+           abnode->waitingForShutdown = 1;
+           bnode_SetTimeout((struct bnode *)abnode, SDTIME);
+           /* When shutdown is complete, bproc() calls BOP_PROCEXIT()
+            * [cron_procexit()] which will tell bproc() to no longer
+            * run this cron job.
+            */
+       } else {
+           /* Tell bproc() to no longer run this cron job */
+           bnode_SetTimeout((struct bnode *)abnode, 0);
+       }
+    } else if (astatus == BSTAT_NORMAL) {
+       /* start the cron job
         * Figure out when to run next and schedule it
         */
-        abnode->when = ktime_next(&abnode->whenToRun, 0);
+       abnode->when = ktime_next(&abnode->whenToRun, 0);
        ScheduleCronBnode(abnode);
     }
     return 0;
 }
 
-static int cron_procexit(abnode, aproc)
-struct cronbnode *abnode;
-struct bnode_proc *aproc; {
+static int
+cron_procexit(struct bnode *bn, struct bnode_proc *aproc)
+{
+    struct cronbnode *abnode = (struct cronbnode *) bn;
     /* process has exited */
 
     /* log interesting errors for folks */
     if (aproc->lastSignal)
-       bozo_Log("cron job %s exited due to signal %d\n",
-                abnode->b.name, aproc->lastSignal);
+       bozo_Log("cron job %s exited due to signal %d\n", abnode->b.name,
+                aproc->lastSignal);
     else if (aproc->lastExit)
-       bozo_Log("cron job %s exited with non-zero code %d\n",
-                abnode->b.name, aproc->lastExit);
+       bozo_Log("cron job %s exited with non-zero code %d\n", abnode->b.name,
+                aproc->lastExit);
 
     abnode->waitingForShutdown = 0;
     abnode->running = 0;
     abnode->killSent = 0;
-    abnode->proc = (struct bnode_proc *) 0;
+    abnode->proc = (struct bnode_proc *)0;
 
     /* Figure out when to run next and schedule it */
     abnode->when = ktime_next(&abnode->whenToRun, 0);
@@ -277,25 +296,29 @@ struct bnode_proc *aproc; {
     return 0;
 }
 
-static int cron_getstring(abnode, abuffer, alen)
-struct cronbnode *abnode;
-char *abuffer;
-afs_int32 alen;{
-    if (abnode->running) strcpy(abuffer, "running now");
-    else if (abnode->when==0) strcpy(abuffer, "waiting to run once");
-    else sprintf(abuffer, "run next at %s", ktime_DateOf(abnode->when));
+static int
+cron_getstring(struct bnode *bn, char *abuffer, afs_int32 alen)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
+    if (abnode->running)
+       strcpy(abuffer, "running now");
+    else if (abnode->when == 0)
+       strcpy(abuffer, "waiting to run once");
+    else
+       sprintf(abuffer, "run next at %s", ktime_DateOf(abnode->when));
     return 0;
 }
 
-static cron_getparm(abnode, aindex, abuffer, alen)
-struct cronbnode *abnode;
-afs_int32 aindex;
-char *abuffer;
-afs_int32 alen; {
-    if (aindex == 0) strcpy(abuffer, abnode->command);
+static int
+cron_getparm(struct bnode *bn, afs_int32 aindex, char *abuffer,
+            afs_int32 alen)
+{
+    struct cronbnode *abnode = (struct cronbnode *)bn;
+    if (aindex == 0)
+       strcpy(abuffer, abnode->command);
     else if (aindex == 1) {
        strcpy(abuffer, abnode->whenString);
-    }
-    else return BZDOM;
+    } else
+       return BZDOM;
     return 0;
 }