#include #include #include struct setup_data *setup_data_init(void) { struct setup_data *setup_data; setup_data = zalloc(sizeof(*setup_data)); if (!setup_data) return NULL; setup_data->prev = setup_data->next = setup_data; return setup_data; } int setup_data_add(struct setup_data *head, uint32_t type, const void *data, size_t data_len) { struct setup_data *setup_data; setup_data = zalloc(sizeof(*setup_data)); if (!setup_data) return -1; setup_data->data = data; setup_data->hdr.len = data_len; setup_data->hdr.type = type; setup_data->prev = head->prev; setup_data->next = head; head->prev->next = setup_data; head->prev = setup_data; return 0; } int setup_data_load(struct setup_data *head, uint32_t type, const char *filename) { void *data; size_t len; if (loadfile(filename, &data, &len)) return -1; return setup_data_add(head, type, data, len); }