summaryrefslogtreecommitdiff
path: root/main/config_options.c
diff options
context:
space:
mode:
authorTerry Wilson <twilson@digium.com>2012-06-14 13:35:07 +0000
committerTerry Wilson <twilson@digium.com>2012-06-14 13:35:07 +0000
commit01307e4b7bbf01f2ff7e5a0a9e9047e7b5cd789f (patch)
tree0bf3e9762bc567605d08f304f2626080ad248417 /main/config_options.c
parent21997aa7bba8e2b2bc6fc6b01f0de4cc8ea56131 (diff)
Add filename alias support to the Config Options API
This adds the ability to handle a single filename alias for a config file. This is useful if a config filename has changed, but the old filename should be supported for backwards compatibility. Review: https://reviewboard.asterisk.org/r/1981/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/config_options.c')
-rw-r--r--main/config_options.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/main/config_options.c b/main/config_options.c
index c8fb4ffad..7baf67836 100644
--- a/main/config_options.c
+++ b/main/config_options.c
@@ -434,7 +434,13 @@ enum aco_process_status aco_process_config(struct aco_info *info, int reload)
}
while (res != ACO_PROCESS_ERROR && (file = info->files[x++])) {
- if (!(cfg = ast_config_load(file->filename, cfg_flags))) {
+ const char *filename = file->filename;
+try_alias:
+ if (!(cfg = ast_config_load(filename, cfg_flags))) {
+ if (file->alias && strcmp(file->alias, filename)) {
+ filename = file->alias;
+ goto try_alias;
+ }
ast_log(LOG_ERROR, "Unable to load config file '%s'\n", file->filename);
res = ACO_PROCESS_ERROR;
break;
@@ -447,6 +453,10 @@ enum aco_process_status aco_process_config(struct aco_info *info, int reload)
res = ACO_PROCESS_ERROR;
break;
} else if (cfg == CONFIG_STATUS_FILEMISSING) {
+ if (file->alias && strcmp(file->alias, filename)) {
+ filename = file->alias;
+ goto try_alias;
+ }
ast_log(LOG_ERROR, "%s is missing! Cannot load %s\n", file->filename, info->module);
res = ACO_PROCESS_ERROR;
break;