/* timer.c */
/* Subroutines for timed events */
#include "copyright.h"
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <string.h>
#ifdef XENIX
#include <sys/signal.h>
#else
#include <signal.h>
#endif /* xenix */
#include "config.h"
#include "db.h"
#include "interface.h"
#include "match.h"
#include "externs.h"
static int alarm_triggered = 0;
extern char ccom[BUFFER_LEN];
void alarm_handler()
{
alarm_triggered = 1;
signal(SIGALRM, (void *) alarm_handler);
}
void init_timer()
{
signal(SIGALRM, (void *) alarm_handler);
signal(SIGHUP, (void *) alarm_handler);
alarm(1);
}
void dispatch()
{
/* void do_garbage(); */
/* this routine can be used to poll from interface.c */
if (!alarm_triggered)
return;
alarm_triggered = 0;
do_second();
/* Free list reconstruction */
#ifdef DESTROY
{
static int ticks = FIXUP_INTERVAL;
if (!ticks--) {
ticks = FIXUP_INTERVAL;
strcpy(ccom, "dbck");
do_dbck(GOD);
}
}
#endif
/* Database dump routines */
{
static int ticks = DUMP_INTERVAL;
extern void fork_and_dump();
if (!ticks--) {
ticks = DUMP_INTERVAL;
strcpy(ccom, "dump");
fork_and_dump();
}
}
#ifdef RWHO_SEND
{
static int ticks = RWHO_INTERVAL;
if(!ticks--) {
ticks = RWHO_INTERVAL;
strcpy(ccom, "update_rwho");
rwho_update();
}
}
#endif
/* reset alarm */
alarm(1);
}