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