mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
Add support for #include, var_metric, and cat_metric in res_config_sqlite
(closes issue #10738, rbraun_proformatique) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82679 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
CREATE TABLE ast_config (
|
||||
id INTEGER,
|
||||
cat_metric INT(11) NOT NULL DEFAULT 0,
|
||||
var_metric INT(11) NOT NULL DEFAULT 0,
|
||||
commented TINYINT(1) NOT NULL DEFAULT 0,
|
||||
filename VARCHAR(128) NOT NULL DEFAULT '',
|
||||
category VARCHAR(128) NOT NULL DEFAULT 'default',
|
||||
@@ -23,8 +25,9 @@ CREATE TABLE ast_config (
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX ast_config__idx__cat_metric ON ast_config(cat_metric);
|
||||
CREATE INDEX ast_config__idx__var_metric ON ast_config(var_metric);
|
||||
CREATE INDEX ast_config__idx__filename_commented ON ast_config(filename, commented);
|
||||
CREATE INDEX ast_config__idx__category ON ast_config(category);
|
||||
|
||||
/*
|
||||
* CDR table (this table is automatically created if non existent).
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user