Below is the file 'config.c' from this revision. You can also download the file.
/* config.c */ #include "types.h" #include "config.h" #include "crc.h" #include "log.h" #include "status.h" #include "panic.h" struct config config; bool config_valid = FALSE; #define READ_UINT(b, i) ((b)[(i)] + ((b)[(i)+1] << 8) + \ ((b)[(i)+2] << 16) + ((b)[(i)+3] << 24)) unsigned int foobar = sizeof(struct config); void config_init(char *buffer) { config_valid = FALSE; if (READ_UINT(buffer, 0) == CONFIG_MAGIC) { if (READ_UINT(buffer, 4) == CONFIG_VERSION) { if (check_crc(buffer, sizeof(struct config)+12)) { config = *(struct config *)(buffer+8); config_valid = TRUE; } } } if (config_valid) { log_put_config(); status_set_ready(STATUS_MODULE_CONFIG, TRUE); } }