From 2648eb9e983e1b0792f94f3b70920a1fb0225aac Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Fri, 8 Nov 2013 17:08:05 +0100 Subject: [LIBREPORT PATCH 36/36] Load a config file from several directories Related to abrt/abrt#752 --- src/include/internal_libreport.h | 3 + src/lib/load_plugin_settings.c | 23 +++++ 8 files changed, 240 insertions(+), 2 deletions(-) diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h index db2ffd8..30458c3 100644 --- a/src/include/internal_libreport.h +++ b/src/include/internal_libreport.h @@ -715,6 +715,9 @@ void parse_release_for_rhts(const char *pRelease, char **product, char **version #define load_conf_file libreport_load_conf_file bool load_conf_file(const char *pPath, map_string_t *settings, bool skipKeysWithoutValue); +#define load_conf_file_from_dirs libreport_load_conf_file_from_dirs +bool load_conf_file_from_dirs(const char *base_name, const char *const *directories, map_string_t *settings, bool skipKeysWithoutValue); + #define save_conf_file libreport_save_conf_file bool save_conf_file(const char *path, map_string_t *settings); diff --git a/src/lib/load_plugin_settings.c b/src/lib/load_plugin_settings.c index 84ebd63..b56ba7f 100644 --- a/src/lib/load_plugin_settings.c +++ b/src/lib/load_plugin_settings.c @@ -103,3 +103,26 @@ bool load_conf_file(const char *path, map_string_t *settings, bool skipKeysWitho return true; } + +bool load_conf_file_from_dirs(const char *base_name, const char *const *directories, map_string_t *settings, bool skipKeysWithoutValue) +{ + if (NULL == directories || NULL == *directories) + { + error_msg("No configuration directory specified"); + return false; + } + + bool result = true; + for (const char *const *dir = directories; *dir != NULL; ++dir) + { + char *conf_file = concat_path_file(*dir, base_name); + if (!load_conf_file(conf_file, settings, skipKeysWithoutValue)) + { + perror_msg("Can't open '%s'", conf_file); + result = false; + } + free(conf_file); + } + + return result; +} +m4_include([configuration_files.at]) -- 1.8.3.1