setup.c (1031B)
1 #include "setup.h" 2 3 #include <stdlib.h> 4 5 struct detector_queue_entry **detector_queue; 6 int detector_queue_cap = 0; 7 int detector_queue_length = 0; 8 9 int detector_total = 0; 10 int detector_pass = 0; 11 int detector_fail = 0; 12 13 void detector_queue_append(const char *name, const char *remediation, int (*fn)(int)) { 14 // Initial queue initialize 15 if (!detector_queue_cap) { 16 detector_queue = malloc(sizeof(void *)); 17 detector_queue_cap = 1; 18 } 19 20 // Grow queue if needed 21 if ((detector_queue_length + 1) > detector_queue_cap) { 22 detector_queue_cap *= 2; 23 detector_queue = realloc(detector_queue, detector_queue_cap * sizeof(void *)); 24 } 25 26 // Build new entry 27 struct detector_queue_entry *entry = calloc(1, sizeof(struct detector_queue_entry)); 28 entry->handler = fn; 29 entry->name = name; 30 entry->remediation = remediation; 31 32 // Append fn to queue 33 detector_queue[detector_queue_length++] = entry; 34 }