From 459759a0379fdda26d13d90dcf2834d82a3d45cb Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Jul 2020 13:27:25 +0200 Subject: [PATCH] config: support libconfig include directories --- lib/config.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/config.cpp b/lib/config.cpp index 5761428a3..7142ee9df 100644 --- a/lib/config.cpp +++ b/lib/config.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -36,6 +37,8 @@ #include #include +namespace fs = std::filesystem; + using namespace villas; using namespace villas::node; @@ -150,15 +153,15 @@ json_t * Config::libconfigDecode(FILE *f) config_init(&cfg); config_set_auto_convert(&cfg, 1); - /* Setup libconfig include path. - * This is only supported for local files */ - // if (isLocalFile(uri)) { - // char *cpy = strdup(uri.c_str()); + /* Setup libconfig include path. */ + auto uri = fs::read_symlink(fs::path("/proc/self/fd") / std::to_string(fileno(f))); + if (isLocalFile(uri)) { + const auto &inclDir = uri.parent_path(); - // config_set_include_dir(&cfg, dirname(cpy)); + logger->info("Setting include dir to: {}", inclDir); - // free(cpy); - // } + config_set_include_dir(&cfg, inclDir.c_str()); + } /* Rewind before re-reading */ rewind(f);