static enum status_code parse_enum(unsigned int *opt, const char *arg, const struct enum_map *map) { bool is_true; assert(map->size > 1); if (map_enum_do(map->entries, map->size, (int *) opt, arg)) return SUCCESS; parse_bool(&is_true, arg); *opt = is_true ? map->entries[1].value : map->entries[0].value; return SUCCESS; }
static enum status_code parse_enum(const char *name, unsigned int *opt, const char *arg, const struct enum_map *map) { bool is_true; enum status_code code; assert(map->size > 1); if (map_enum_do(map->entries, map->size, (int *) opt, arg)) return SUCCESS; code = parse_bool(&is_true, arg); *opt = is_true ? map->entries[1].value : map->entries[0].value; if (code == SUCCESS) return code; return error("'%s' is not a valid value for %s; using %s", arg, name, enum_name(map->entries[*opt].name)); }