diff options
Diffstat (limited to 'utils.cpp')
-rw-r--r-- | utils.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/utils.cpp b/utils.cpp new file mode 100644 index 0000000..1daa3c9 --- /dev/null +++ b/utils.cpp @@ -0,0 +1,37 @@ +#include "utils.hpp" + +#include <dlfcn.h> + +#include <experimental/filesystem> +#include <phosphor-logging/log.hpp> +#include <regex> + +namespace blobs +{ + +namespace fs = std::experimental::filesystem; +using namespace phosphor::logging; + +void loadLibraries(const std::string& path) +{ + void* libHandle = NULL; + + for (const auto& p : fs::recursive_directory_iterator(path)) + { + auto ps = p.path().string(); + + if (!std::regex_match(ps, std::regex(".+\\.so$"))) + { + continue; + } + + libHandle = dlopen(ps.c_str(), RTLD_NOW); + if (!libHandle) + { + log<level::ERR>("ERROR opening", entry("HANDLER=%s", ps.c_str()), + entry("ERROR=%s", dlerror())); + } + } +} + +} // namespace blobs |