#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();
+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 */
};
static int
-cron_hascore(register struct ezbnode *abnode)
+cron_hascore(struct bnode *abnode)
{
char tbuffer[256];
/* 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;
}
/* 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, NULL, &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);
temp = abnode->when - FT_ApproxTime();
if (temp < 1)
temp = 1; /* temp is when to start dude */
- bnode_SetTimeout(abnode, temp);
+ bnode_SetTimeout((struct bnode *)abnode, temp);
}
return 0;
}
static int
-cron_restartp(register struct cronbnode *abnode)
+cron_restartp(struct bnode *abnode)
{
return 0;
}
static int
-cron_delete(struct cronbnode *abnode)
+cron_delete(struct bnode *bn)
{
+ struct cronbnode *abnode = (struct cronbnode *)bn;
free(abnode->command);
free(abnode->whenString);
free(abnode);
}
struct bnode *
-cron_create(char *ainstance, char *acommand, char *awhen)
+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)) {
te = (struct cronbnode *)malloc(sizeof(struct cronbnode));
memset(te, 0, sizeof(struct cronbnode));
code = ktime_ParsePeriodic(awhen, &te->whenToRun);
- if ((code < 0) || (bnode_InitBnode(te, &cronbnode_ops, ainstance) != 0)) {
+ if ((code < 0) || (bnode_InitBnode((struct bnode *)te, &cronbnode_ops, ainstance) != 0)) {
free(te);
free(cmdpath);
return NULL;
/* 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(struct cronbnode *abnode)
+cron_timeout(struct bnode *bn)
{
+ struct cronbnode *abnode = (struct cronbnode *)bn;
register afs_int32 temp;
register afs_int32 code;
struct bnode_proc *tp;
/* 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, NULL, &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);
temp = abnode->when - FT_ApproxTime();
if (temp < 1)
temp = 1;
- bnode_SetTimeout(abnode, temp);
+ bnode_SetTimeout((struct bnode *)abnode, temp);
}
} else {
if (!abnode->waitingForShutdown)
/* 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(struct cronbnode *abnode, afs_int32 * astatus)
+cron_getstat(struct bnode *bn, afs_int32 * astatus)
{
+ struct cronbnode *abnode = (struct cronbnode *)bn;
register afs_int32 temp;
if (abnode->waitingForShutdown)
temp = BSTAT_SHUTTINGDOWN;
}
static int
-cron_setstat(register struct cronbnode *abnode, afs_int32 astatus)
+cron_setstat(struct bnode *bn, afs_int32 astatus)
{
+ struct cronbnode *abnode = (struct cronbnode *)bn;
if (abnode->waitingForShutdown)
return BZBUSY;
if (astatus == BSTAT_SHUTDOWN) {
/* start shutdown */
bnode_StopProc(abnode->proc, SIGTERM);
abnode->waitingForShutdown = 1;
- bnode_SetTimeout(abnode, SDTIME);
+ 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(abnode, 0);
+ bnode_SetTimeout((struct bnode *)abnode, 0);
}
} else if (astatus == BSTAT_NORMAL) {
/* start the cron job
}
static int
-cron_procexit(struct cronbnode *abnode, struct bnode_proc *aproc)
+cron_procexit(struct bnode *bn, struct bnode_proc *aproc)
{
+ struct cronbnode *abnode = (struct cronbnode *) bn;
/* process has exited */
/* log interesting errors for folks */
}
static int
-cron_getstring(struct cronbnode *abnode, char *abuffer, afs_int32 alen)
+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)
}
static int
-cron_getparm(struct cronbnode *abnode, afs_int32 aindex, char *abuffer,
+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) {