#ifndef fooconfighfoo #define fooconfighfoo enum cfg_value_type { CFG_VAL_TYPE_INVALID, CFG_VAL_TYPE_STRING, CFG_VAL_TYPE_UINT16, CFG_VAL_TYPE_ADDRS, }; struct cfg_key_value_map { const char *key_name; int key_value; enum cfg_value_type value_type; }; union cfg_value { const char *str; uint16_t uint16; struct list_head addr_list; /* FIXME: addrs */ }; bool config_parse_line(struct cfg *cfg, char **buf, struct cfg_key_value_map *kvmap, int *key, union cfg_value *value); bool config_parse_header(struct cfg *cfg, const char *title, char **buf); #endif