35#define SPECLIST_TAG modpack_cache
36#define SPECLIST_TYPE struct modpack_cache_item
39#define modpack_cache_iterate(mplist, item) \
40 TYPED_LIST_ITERATE(struct modpack_cache_item, mplist, item)
41#define modpack_cache_iterate_end LIST_ITERATE_END
75 const char *filename,
bool verbose)
82 log_base(
level,
"\"%s\": file doesn't have a capability string",
95 "that freeciv doesn't support:", filename);
192 return item->filename;
205 cb(
item->modpack_name,
item->filename, data);
bool has_capabilities(const char *us, const char *them)
static bool is_server(void)
#define fc_assert(condition)
#define log_base(level, message,...)
static struct modpack_cache_list * modpack_rulesets
const char * modpack_has_ruleset(struct section_file *sf)
void modpack_ruleset_cache_iterate(mrc_cb cb, void *data)
bool modpack_check_capabilities(struct section_file *file, const char *us_capstr, const char *filename, bool verbose)
const char * modpack_file_from_ruleset_cache(const char *name)
#define modpack_cache_iterate_end
const char * modpack_serv_file(struct section_file *sf)
const char * modpack_rulesetdir(struct section_file *sf)
struct fileinfo_list * get_modpacks_list(void)
const char * modpack_cache_ruleset(struct section_file *sf)
#define modpack_cache_iterate(mplist, item)
void(* mrc_cb)(const char *, const char *, void *data)
const char * secfile_lookup_str(const struct section_file *secfile, const char *path,...)
bool secfile_lookup_bool_default(const struct section_file *secfile, bool def, const char *path,...)
const char * secfile_lookup_str_default(const struct section_file *secfile, const char *def, const char *path,...)
struct setting_list * level[OLEVELS_NUM]
const struct strvec * get_data_dirs(void)
struct fileinfo_list * fileinfolist_infix(const struct strvec *dirs, const char *infix, bool nodups)
int fc_strcasecmp(const char *str0, const char *str1)