4 static struct timeq_entry *timeq_events;
7 struct timeq_entry *entry, *next;
9 for(entry = timeq_events; entry; entry = next) {
10 if(entry->execute <= now) {
11 entry->callback(entry->data);
19 struct timeq_entry* timeq_add(int seconds, timeq_callback_t *callback, void *data) {
21 struct timeq_entry *entry = malloc(sizeof(*entry));
24 perror("malloc() failed");
27 entry->execute = now + seconds;
28 entry->callback = callback;
31 struct timeq_entry *next, *prev = NULL;
32 for(next = timeq_events; next; next = next->next) {
33 if(next->execute >= entry->execute)
39 entry->next = timeq_events;
48 struct timeq_entry* timeq_add_name(char *name, int seconds, timeq_callback_t *callback, void *data) {
49 struct timeq_entry *entry = timeq_add(seconds, callback, data);
50 entry->name = strdup(name);
54 int timeq_del(struct timeq_entry* entry) {
55 struct timeq_entry *centry, *last = NULL;
56 for(centry = timeq_events; centry; centry = centry->next) {
59 last->next = centry->next;
61 timeq_events = centry->next;
73 int timeq_del_name(char *name) {
74 struct timeq_entry *centry, *last = NULL;
75 for(centry = timeq_events; centry; centry = centry->next) {
76 if(centry->name && !stricmp(centry->name, name)) {
78 last->next = centry->next;
80 timeq_events = centry->next;