/* 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); }