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;
}
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);
#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)