mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +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