aboutsummaryrefslogtreecommitdiffstats
path: root/loader.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2000-01-02 20:59:00 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2000-01-02 20:59:00 +0000
commit999d3524e27900ec85d461f644d0e2fde138fca4 (patch)
tree53bb1d4c35295fea70d6179bfa71cd1e10d402df /loader.c
parent2137f5008cf14c94312348e272f9b38df43233e1 (diff)
Version 0.1.2 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@152 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'loader.c')
-rwxr-xr-xloader.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/loader.c b/loader.c
index d6a549b4b..63c44df40 100755
--- a/loader.c
+++ b/loader.c
@@ -92,6 +92,22 @@ int ast_load_resource(char *resource_name)
int errors=0;
int res;
struct module *m;
+ int flags=0;
+ char *val;
+ int o;
+ struct ast_config *cfg;
+ /* Keep the module file parsing silent */
+ o = option_verbose;
+ option_verbose = 0;
+ cfg = ast_load(AST_MODULE_CONFIG);
+ option_verbose = o;
+ if (cfg) {
+ if ((val = ast_variable_retrieve(cfg, "global", resource_name))
+ && ast_true(val))
+ flags |= RTLD_GLOBAL;
+ ast_destroy(cfg);
+ }
+
if (pthread_mutex_lock(&modlock))
ast_log(LOG_WARNING, "Failed to lock\n");
m = module_list;
@@ -115,7 +131,7 @@ int ast_load_resource(char *resource_name)
} else {
snprintf(fn, sizeof(fn), "%s/%s", AST_MODULE_DIR, resource_name);
}
- m->lib = dlopen(fn, RTLD_NOW | RTLD_GLOBAL);
+ m->lib = dlopen(fn, RTLD_NOW | flags);
if (!m->lib) {
ast_log(LOG_WARNING, "%s\n", dlerror());
free(m);
@@ -149,16 +165,24 @@ int ast_load_resource(char *resource_name)
pthread_mutex_unlock(&modlock);
return -1;
}
- if (option_verbose)
- ast_verbose( " => (%s)\n", m->description());
+ if (!fully_booted) {
+ if (option_verbose)
+ ast_verbose( " => (%s)\n", m->description());
+ if (option_console && !option_verbose)
+ ast_verbose( ".");
+ } else {
+ if (option_verbose)
+ ast_verbose(VERBOSE_PREFIX_1 "Loaded %s => (%s)\n", fn, m->description());
+ }
+ m->next = module_list;
+ module_list = m;
pthread_mutex_unlock(&modlock);
if ((res = m->load_module())) {
- ast_log(LOG_WARNING, "%s: load_module failed, returning %d\n", m->resource, fn, res);
+ ast_log(LOG_WARNING, "%s: load_module failed, returning %d\n", m->resource, res);
ast_unload_resource(resource_name, 0);
return -1;
}
- m->next = module_list;
- module_list = m;
+ ast_update_use_count();
return 0;
}