} else
break;
}
+ timeq_events = entry;
}
struct timeq_entry* timeq_add(int seconds, timeq_callback_t *callback, void *data) {
entry->execute = now + seconds;
entry->callback = callback;
entry->data = data;
+ entry->name = NULL;
struct timeq_entry *next, *prev = NULL;
for(next = timeq_events; next; next = next->next) {
if(next->execute >= entry->execute)
return entry;
}
+struct timeq_entry* timeq_add_name(char *name, int seconds, timeq_callback_t *callback, void *data) {
+ struct timeq_entry *entry = timeq_add(seconds, callback, data);
+ entry->name = strdup(name);
+ return entry;
+}
+
int timeq_del(struct timeq_entry* entry) {
struct timeq_entry *centry, *last = NULL;
for(centry = timeq_events; centry; centry = centry->next) {
last->next = centry->next;
else
timeq_events = centry->next;
+ if(centry->name)
+ free(centry->name);
free(centry);
return 1;
} else {
}
return 0;
}
+
+int timeq_del_name(char *name) {
+ struct timeq_entry *centry, *last = NULL;
+ for(centry = timeq_events; centry; centry = centry->next) {
+ if(centry->name && !stricmp(centry->name, name)) {
+ if(last)
+ last->next = centry->next;
+ else
+ timeq_events = centry->next;
+ free(centry->name);
+ free(centry);
+ return 1;
+ } else {
+ last = centry;
+ }
+ }
+ return 0;
+}
+
+int timeq_name_exists(char *name) {
+ struct timeq_entry *centry;
+ for(centry = timeq_events; centry; centry = centry->next) {
+ if(centry->name && !stricmp(centry->name, name)) {
+ return 1;
+ }
+ }
+ return 0;
+}