#ifndef MODULE_DIR_H
#define MODULE_DIR_H
struct module_dir_load_settings {
const char *version;
const char *binary_name;
const char *setting_name;
unsigned int require_init_funcs:1;
unsigned int debug:1;
unsigned int ignore_dlopen_errors:1;
};
struct module {
char *path, *name;
void *handle;
void (*init)(struct module *module);
void (*deinit)(void);
unsigned int initialized:1;
struct module *next;
};
struct module *module_dir_load(const char *dir, const char *module_names,
const struct module_dir_load_settings *set);
struct module *
module_dir_load_missing(struct module *old_modules,
const char *dir, const char *module_names,
const struct module_dir_load_settings *set);
void module_dir_init(struct module *modules);
void module_dir_deinit(struct module *modules);
void module_dir_unload(struct module **modules);
void *module_get_symbol(struct module *module, const char *symbol);
void *module_get_symbol_quiet(struct module *module, const char *symbol);
const char *module_file_get_name(const char *fname);
const char *module_get_plugin_name(struct module *module);
#endif