aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_config_sqlite.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-17 20:24:50 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-17 20:24:50 +0000
commitb24058121c9a7d42ff310fb58031394b4eed28ea (patch)
tree2acba30e3b142b64f0282bfdb6ba7ec5eb9a3534 /res/res_config_sqlite.c
parent86e008ed63b45984e04f7662287b4ffbf235f04f (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.c22
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);