#ifndef fooconfighfoo #define fooconfighfoo enum cfg_value_type { CFG_VAL_TYPE_INVALID, CFG_VAL_TYPE_STRING, CFG_VAL_TYPE_UINT16, CFG_VAL_TYPE_ADDRS, CFG_VAL_TYPE_BOOL, }; 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 saddrs; bool boolean; }; bool config_parse_line(struct cfg *cfg, const char *filename, char **buf, struct cfg_key_value_map *kvmap, int *rkey, const char **rkeyname, union cfg_value *rvalue); bool config_parse_header(struct cfg *cfg, const char *filename, const char *title, char **buf); #endif