#include #include #include #include #include #include "ldconfig.h" char *get_full_library_search_path() { std::string output; // Run FILE *file = popen("ldconfig -NXv 2> /dev/null", "r"); // Read int running = 1; while (running) { char *line = NULL; size_t length = 0; if (getline(&line, &length, file) != -1) { // Convert to C++ String std::string str(line); // Remove Newline if (str.size() > 0 && str[str.size() - 1] == '\n') { str.pop_back(); } // Interpret if (str.size() >= 2 && str[0] != '\t' && str[str.size() - 1] == ':') { output.append(str); } } else { running = 0; } free(line); } // Remove Colon if (output.size() > 0 && output[output.size() - 1] == ':') { output.pop_back(); } // Close Process int ret = WEXITSTATUS(pclose(file)); if (ret != 0) { ERR("ldconfig Failed: Exit Code: %i", ret); } // Return char *output_str = strdup(output.c_str()); ALLOC_CHECK(output_str); return output_str; }