]> jfr.im git - irc/quakenet/newserv.git/blame - core/schedule.h
Allow deleteschedule() to double-free schedules.
[irc/quakenet/newserv.git] / core / schedule.h
CommitLineData
2c5db955
CP
1/* schedule.h */
2
3#ifndef __SCHEDULE_H
4#define __SCHEDULE_H
5
6#include <time.h>
7
8#define SCHEDULE_ONESHOT 0
9#define SCHEDULE_REPEATING 1
10
11typedef void (*ScheduleCallback)(void *);
12
13typedef struct schedule {
14 time_t nextschedule;
15 int type;
16 int repeatinterval;
17 int repeatcount;
18 ScheduleCallback callback;
19 void *callbackparam;
20 int index; /* Where in the array this event is currently situated */
f155b7da 21 int deleted;
2c5db955
CP
22} schedule;
23
24
25/* schedulealloc.c */
26
27void initschedulealloc();
28schedule *getschedule();
29void freeschedule(schedule *sp);
30
31/* schedule.c */
32void initschedule();
33void sortschedule();
34void *scheduleoneshot(time_t when, ScheduleCallback callback, void *arg);
35void *schedulerecurring(time_t first, int count, time_t interval, ScheduleCallback callback, void *arg);
36void deleteschedule(void *sch, ScheduleCallback callback, void *arg);
37void deleteallschedules(ScheduleCallback callback);
38void doscheduledevents(time_t when);
761decff 39void finischedule();
2c5db955
CP
40
41#endif