diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-17 20:24:50 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-09-17 20:24:50 +0000 |
commit | b24058121c9a7d42ff310fb58031394b4eed28ea (patch) | |
tree | 2acba30e3b142b64f0282bfdb6ba7ec5eb9a3534 /res/res_config_sqlite.c | |
parent | 86e008ed63b45984e04f7662287b4ffbf235f04f (diff) |
Add support for #include, var_metric, and cat_metric in res_config_sqlite
(closes issue #10738, rbraun_proformatique)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@82679 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_config_sqlite.c')
-rw-r--r-- | res/res_config_sqlite.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/res/res_config_sqlite.c b/res/res_config_sqlite.c index 3cfb41648..773681594 100644 --- a/res/res_config_sqlite.c +++ b/res/res_config_sqlite.c @@ -113,6 +113,8 @@ enum { RES_CONFIG_SQLITE_CONFIG_ID, + RES_CONFIG_SQLITE_CONFIG_CAT_METRIC, + RES_CONFIG_SQLITE_CONFIG_VAR_METRIC, RES_CONFIG_SQLITE_CONFIG_COMMENTED, RES_CONFIG_SQLITE_CONFIG_FILENAME, RES_CONFIG_SQLITE_CONFIG_CATEGORY, @@ -184,6 +186,7 @@ struct cfg_entry_args { struct ast_config *cfg; struct ast_category *cat; char *cat_name; + struct ast_flags flags; }; /*! @@ -589,7 +592,7 @@ static char *sql_get_config_table = "SELECT *" " FROM '%q'" " WHERE filename = '%q' AND commented = 0" -" ORDER BY category;"; +" ORDER BY cat_metric ASC, var_metric ASC;"; static int set_var(char **var, char *name, char *value) { @@ -715,6 +718,22 @@ static int add_cfg_entry(void *arg, int argc, char **argv, char **columnNames) args = arg; + if (!strcmp(argv[RES_CONFIG_SQLITE_CONFIG_VAR_NAME], "#include")) { + struct ast_config *cfg; + char *val; + + val = argv[RES_CONFIG_SQLITE_CONFIG_VAR_VAL]; + cfg = ast_config_internal_load(val, args->cfg, args->flags, ""); + + if (!cfg) { + ast_log(LOG_WARNING, "Unable to include %s\n", val); + return 1; + } else { + args->cfg = cfg; + return 0; + } + } + if (!args->cat_name || strcmp(args->cat_name, argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY])) { args->cat = ast_category_new(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY], "", 99999); @@ -772,6 +791,7 @@ static struct ast_config *config_handler(const char *database, const char *table args.cfg = cfg; args.cat = NULL; args.cat_name = NULL; + args.flags = flags; ast_mutex_lock(&mutex); |