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;
30 struct timeq_entry *next, *prev = NULL;
31 for(next = timeq_events; next; next = next->next) {
32 if(next->execute >= entry->execute)
38 entry->next = timeq_events;
47 int timeq_del(struct timeq_entry* entry) {
48 struct timeq_entry *centry, *last = NULL;
49 for(centry = timeq_events; centry; centry = centry->next) {
52 last->next = centry->next;
54 timeq_events = centry->next;