diff --git a/addons/res_config_mysql.c b/addons/res_config_mysql.c index b9ca81f367ddc433adde22ad6175c7376c146ace..cdc641bd1706799933de4c9377813c432e3e7ac7 100644 --- a/addons/res_config_mysql.c +++ b/addons/res_config_mysql.c @@ -525,9 +525,8 @@ static struct ast_config *realtime_multi_mysql(const char *database, const char while ((row = mysql_fetch_row(result))) { var = NULL; - cat = ast_category_new("", "", -1); + cat = ast_category_new_anonymous(); if (!cat) { - ast_log(LOG_WARNING, "Out of memory!\n"); continue; } for (i = 0; i < numFields; i++) { @@ -936,8 +935,8 @@ static struct ast_config *config_mysql(const char *database, const char *table, } if (strcmp(last, row[0]) || last_cat_metric != atoi(row[3])) { - if (!(cur_cat = ast_category_new(row[0], "", -1))) { - ast_log(LOG_WARNING, "Out of memory!\n"); + cur_cat = ast_category_new_dynamic(row[0]); + if (!cur_cat) { break; } strcpy(last, row[0]); diff --git a/include/asterisk/config.h b/include/asterisk/config.h index 0b59f63b6d1ced4e688b46e07fcbb8556879465d..4dc473cd71b27635169b1516474171b0c2f4d7fd 100644 --- a/include/asterisk/config.h +++ b/include/asterisk/config.h @@ -833,6 +833,18 @@ const char *ast_config_option(struct ast_config *cfg, const char *cat, const cha */ struct ast_category *ast_category_new(const char *name, const char *in_file, int lineno); +/*! + * \brief Create a category that is not backed by a file + * + * \param name name of new category + */ +#define ast_category_new_dynamic(name) ast_category_new(name, "", -1) + +/*! + * \brief Create a nameless category that is not backed by a file + */ +#define ast_category_new_anonymous() ast_category_new_dynamic("") + /*! * \brief Create a category making it a template * diff --git a/res/res_config_curl.c b/res/res_config_curl.c index a51802928b1e1e19f2e4a45c0425353fd587ba38..bc1a3fb3564628b07098e245ecdc3ccedfe0fd5a 100644 --- a/res/res_config_curl.c +++ b/res/res_config_curl.c @@ -184,7 +184,8 @@ static struct ast_config *realtime_multi_curl(const char *url, const char *unuse continue; } - if (!(cat = ast_category_new("", "", 99999))) { + cat = ast_category_new_anonymous(); + if (!cat) { continue; } @@ -571,8 +572,10 @@ static struct ast_config *config_curl(const char *url, const char *unused, const } if (!cat || strcmp(category, cur_cat) || last_cat_metric != cat_metric) { - if (!(cat = ast_category_new(category, "", 99999))) + cat = ast_category_new_dynamic(category); + if (!cat) { break; + } cur_cat = category; last_cat_metric = cat_metric; ast_category_append(cfg, cat); diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c index fd21aab809e3115e58ad4fe11dd80cf171151e32..9b73493e9d396d69be92ce06aa828cad987b0b5a 100644 --- a/res/res_config_ldap.c +++ b/res/res_config_ldap.c @@ -1045,10 +1045,8 @@ static struct ast_config *realtime_multi_ldap(const char *basedn, struct ast_variable **p = vars; while (*p) { - struct ast_category *cat = NULL; - cat = ast_category_new("", table_name, -1); + struct ast_category *cat = ast_category_new_anonymous(); if (!cat) { - ast_log(LOG_ERROR, "Unable to create a new category!\n"); break; } else { struct ast_variable *var = *p; @@ -1197,7 +1195,7 @@ static struct ast_config *config_ldap(const char *basedn, const char *table_name if (!last_category || strcmp(last_category, categories[i].name) || last_category_metric != categories[i].metric) { - cur_cat = ast_category_new(categories[i].name, table_name, -1); + cur_cat = ast_category_new_dynamic(categories[i].name); if (!cur_cat) { break; } diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c index 893b9d897d1b88dad73af73ef1eda40682f342cc..583a84558a57ec098081d4548582f3ea4a264851 100644 --- a/res/res_config_odbc.c +++ b/res/res_config_odbc.c @@ -409,9 +409,8 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char * ast_log(LOG_WARNING, "SQL Fetch error! [%s]\n", ast_str_buffer(sql)); continue; } - cat = ast_category_new("","",99999); + cat = ast_category_new_anonymous(); if (!cat) { - ast_log(LOG_WARNING, "Out of memory!\n"); continue; } for (x=0;x<colcount;x++) { @@ -1018,9 +1017,8 @@ static struct ast_config *config_odbc(const char *database, const char *table, c continue; } if (strcmp(last, q.category) || last_cat_metric != q.cat_metric) { - cur_cat = ast_category_new(q.category, "", 99999); + cur_cat = ast_category_new_dynamic(q.category); if (!cur_cat) { - ast_log(LOG_WARNING, "Out of memory!\n"); break; } strcpy(last, q.category); diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c index 58c34d08273898a7452b32fb128f0d4a08aae1bd..824adbf341ddedc2a8bbd9a3cd4711610758f254 100644 --- a/res/res_config_pgsql.c +++ b/res/res_config_pgsql.c @@ -683,8 +683,10 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char for (rowIndex = 0; rowIndex < num_rows; rowIndex++) { var = NULL; - if (!(cat = ast_category_new("","",99999))) + cat = ast_category_new_anonymous(); + if (!cat) { continue; + } for (i = 0; i < numFields; i++) { stringp = PQgetvalue(result, rowIndex, i); while (stringp) { @@ -1164,9 +1166,10 @@ static struct ast_config *config_pgsql(const char *database, const char *table, } if (strcmp(last, field_category) || last_cat_metric != atoi(field_cat_metric)) { - cur_cat = ast_category_new(field_category, "", 99999); - if (!cur_cat) + cur_cat = ast_category_new_dynamic(field_category); + if (!cur_cat) { break; + } ast_copy_string(last, field_category, sizeof(last)); last_cat_metric = atoi(field_cat_metric); ast_category_append(cfg, cur_cat); diff --git a/res/res_config_sqlite.c b/res/res_config_sqlite.c index b97ef7a86ae70290dc7361957e233c6499ba3f64..a5a831ea3054e32edfd1b93ef9a10052d3ea0fd8 100644 --- a/res/res_config_sqlite.c +++ b/res/res_config_sqlite.c @@ -875,10 +875,8 @@ static int add_cfg_entry(void *arg, int argc, char **argv, char **columnNames) } 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); - + args->cat = ast_category_new_dynamic(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY]); if (!args->cat) { - ast_log(LOG_WARNING, "Unable to allocate category\n"); return 1; } @@ -1087,8 +1085,8 @@ static int add_rt_multi_cfg_entry(void *arg, int argc, char **argv, char **colum return 1; } - if (!(cat = ast_category_new(cat_name, "", 99999))) { - ast_log(LOG_WARNING, "Unable to allocate category\n"); + cat = ast_category_new_dynamic(cat_name); + if (!cat) { return 1; } diff --git a/res/res_config_sqlite3.c b/res/res_config_sqlite3.c index b9a10621506d1fd807762060eaaf8dbc744a176f..5362e9ede1a3d47a07a8a59500d881e83431d2d8 100644 --- a/res/res_config_sqlite3.c +++ b/res/res_config_sqlite3.c @@ -505,7 +505,8 @@ static int append_row_to_cfg(void *arg, int num_columns, char **values, char **c struct ast_category *cat; int i; - if (!(cat = ast_category_new("", "", 99999))) { + cat = ast_category_new_anonymous(); + if (!cat) { return SQLITE_ABORT; } @@ -725,8 +726,8 @@ static int static_realtime_cb(void *arg, int num_columns, char **values, char ** } if (!args->cat_name || strcmp(args->cat_name, values[COL_CATEGORY])) { - if (!(args->cat = ast_category_new(values[COL_CATEGORY], "", 99999))) { - ast_log(LOG_WARNING, "Unable to allocate category\n"); + args->cat = ast_category_new_dynamic(values[COL_CATEGORY]); + if (!args->cat) { return SQLITE_ABORT; }