diff options
-rw-r--r-- | src/common/conf/config-parser.c | 28 | ||||
-rw-r--r-- | src/common/conf/config-parser.h | 4 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/common/conf/config-parser.c b/src/common/conf/config-parser.c index ab841391..8a314fd7 100644 --- a/src/common/conf/config-parser.c +++ b/src/common/conf/config-parser.c @@ -1188,14 +1188,34 @@ static int vendor_config(struct parse_result *result, void *user_data) return RESOURCED_ERROR_NONE; } +static int filter_limiter_conf_file(const struct dirent *dirent) +{ + if (dirent == NULL) + return 0; + + return strncmp(dirent->d_name, CONF_FILE_NAME(limiter), + strlen(CONF_FILE_NAME(limiter)) + 1); +} + static void load_per_vendor_configs(const char *dir, int func(struct parse_result *result, void *user_data), void *user_data) { int count; int idx; struct dirent **namelist; + enum config_type config_type = *((enum config_type*)user_data); + int (*filter_func) (const struct dirent *) = NULL; + + switch (config_type) { + case LIMITER_CONFIG: + filter_func = filter_limiter_conf_file; + break; + default: + filter_func = NULL; + break; + } - if ((count = scandir(dir, &namelist, NULL, alphasort)) == -1) { + if ((count = scandir(dir, &namelist, filter_func, alphasort)) == -1) { _I("(%s) conf dir does not exist", dir); return; } @@ -1221,7 +1241,11 @@ void resourced_parse_vendor_configs(void) fixed_app_and_service_list_init(); /* Load configurations in limiter.conf and limiter.conf.d/ */ - config_parse(LIMITER_CONF_FILE, limiter_config, NULL); + if (access(LIMITER_CONF_DIR_LIMITER_CONF, F_OK) != 0) + config_parse(LIMITER_CONF_FILE, limiter_config, NULL); + else + config_parse(LIMITER_CONF_DIR_LIMITER_CONF, limiter_config, NULL); + config_type = LIMITER_CONFIG; load_per_vendor_configs(LIMITER_CONF_DIR, vendor_config, &config_type); diff --git a/src/common/conf/config-parser.h b/src/common/conf/config-parser.h index f7c32490..df9a18d8 100644 --- a/src/common/conf/config-parser.h +++ b/src/common/conf/config-parser.h @@ -30,6 +30,10 @@ extern "C" { #define CONF_FILE_SUFFIX ".conf" +#define CONF_FILE_NAME(conf_name) #conf_name CONF_FILE_SUFFIX + +#define LIMITER_CONF_DIR_LIMITER_CONF LIMITER_CONF_DIR "/" CONF_FILE_NAME(limiter) + #define LIMITER_CONF_FILE RD_CONFIG_FILE(limiter) #define OPTIMIZER_CONF_FILE RD_CONFIG_FILE(optimizer) #define PROCESS_CONF_FILE RD_CONFIG_FILE(process) |