summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/conf/config-parser.c28
-rw-r--r--src/common/conf/config-parser.h4
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)