add support for 'early loading' modules, so that nearly all configuration files can be read from Realtime storage

add warning for when file mapping is found but the engine is not available
add warning for trying to map 'logger.conf', since it cannot be reliably mapped


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2005-07-05 22:11:43 +00:00
parent 18cf6ee46a
commit 054317fb13
6 changed files with 70 additions and 15 deletions

View File

@@ -450,35 +450,53 @@ static const char *loadorder[] =
NULL,
};
int load_modules()
int load_modules(const int preload_only)
{
struct ast_config *cfg;
struct ast_variable *v;
char tmp[80];
if (option_verbose)
ast_verbose( "Asterisk Dynamic Loader Starting:\n");
if (option_verbose) {
if (preload_only)
ast_verbose("Asterisk Dynamic Loader loading preload modules:\n");
else
ast_verbose("Asterisk Dynamic Loader Starting:\n");
}
cfg = ast_config_load(AST_MODULE_CONFIG);
if (cfg) {
int doload;
/* Load explicitly defined modules */
v = ast_variable_browse(cfg, "modules");
while(v) {
if (!strcasecmp(v->name, "load")) {
for (v = ast_variable_browse(cfg, "modules"); v; v = v->next) {
doload = 0;
if (preload_only)
doload = !strcasecmp(v->name, "preload");
else
doload = !strcasecmp(v->name, "load");
if (doload) {
if (option_debug && !option_verbose)
ast_log(LOG_DEBUG, "Loading module %s\n", v->value);
if (option_verbose) {
ast_verbose( VERBOSE_PREFIX_1 "[%s]", term_color(tmp, v->value, COLOR_BRWHITE, 0, sizeof(tmp)));
ast_verbose(VERBOSE_PREFIX_1 "[%s]", term_color(tmp, v->value, COLOR_BRWHITE, 0, sizeof(tmp)));
fflush(stdout);
}
if (__load_resource(v->value, cfg)) {
ast_log(LOG_WARNING, "Loading module %s failed!\n", v->value);
if (cfg)
ast_config_destroy(cfg);
ast_config_destroy(cfg);
return -1;
}
}
v=v->next;
}
}
if (preload_only) {
ast_config_destroy(cfg);
return 0;
}
if (!cfg || ast_true(ast_variable_retrieve(cfg, "modules", "autoload"))) {
/* Load all modules */
DIR *mods;