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);
20 struct timeq_entry* timeq_add(int seconds, timeq_callback_t *callback, void *data) {
22 struct timeq_entry *entry = malloc(sizeof(*entry));
25 perror("malloc() failed");
28 entry->execute = now + seconds;
29 entry->callback = callback;
32 struct timeq_entry *next, *prev = NULL;
33 for(next = timeq_events; next; next = next->next) {
34 if(next->execute >= entry->execute)
40 entry->next = timeq_events;
49 struct timeq_entry* timeq_add_name(char *name, int seconds, timeq_callback_t *callback, void *data) {
50 struct timeq_entry *entry = timeq_add(seconds, callback, data);
51 entry->name = strdup(name);
55 int timeq_del(struct timeq_entry* entry) {
56 struct timeq_entry *centry, *last = NULL;
57 for(centry = timeq_events; centry; centry = centry->next) {
60 last->next = centry->next;
62 timeq_events = centry->next;
74 int timeq_del_name(char *name) {
75 struct timeq_entry *centry, *last = NULL;
76 for(centry = timeq_events; centry; centry = centry->next) {
77 if(centry->name && !stricmp(centry->name, name)) {
79 last->next = centry->next;
81 timeq_events = centry->next;
92 int timeq_name_exists(char *name) {
93 struct timeq_entry *centry;
94 for(centry = timeq_events; centry; centry = centry->next) {
95 if(centry->name && !stricmp(centry->name, name)) {