std::vector<fs::path> get_module_paths(void){ std::vector<fs::path> paths = get_env_paths("UHD_MODULE_PATH"); paths.push_back(fs::path(LOCAL_PKG_DATA_DIR) / "modules"); if (not std::string(INSTALLER_PKG_DATA_DIR).empty()) paths.push_back(fs::path(INSTALLER_PKG_DATA_DIR) / "modules"); return paths; }
std::vector<fs::path> uhd::get_module_paths(void){ std::vector<fs::path> paths; std::vector<std::string> env_paths = get_env_paths("UHD_MODULE_PATH"); for(std::string &str_path: env_paths) { paths.push_back(str_path); } paths.push_back(fs::path(uhd::get_pkg_path()) / UHD_LIB_DIR / "uhd" / "modules"); paths.push_back(fs::path(uhd::get_pkg_path()) / "share" / "uhd" / "modules"); return paths; }
std::vector<fs::path> get_module_paths(void){ std::vector<fs::path> paths = get_env_paths("UHD_MODULE_PATH"); paths.push_back(fs::path(uhd::get_pkg_path()) / UHD_LIB_DIR / "uhd" / "modules"); paths.push_back(fs::path(uhd::get_pkg_path()) / "share" / "uhd" / "modules"); return paths; }
std::vector<fs::path> get_image_paths(void){ std::vector<fs::path> paths = get_env_paths("UHD_IMAGE_PATH"); paths.push_back(fs::path(uhd::get_pkg_path()) / "share" / "uhd" / "images"); return paths; }
std::string uhd::get_images_dir(const std::string &search_paths) { /* This function will check for the existence of directories in this * order: * * 1) `UHD_IMAGES_DIR` environment variable * 2) Any paths passed to this function via `search_paths' (may contain * Windows registry keys) * 3) `UHD package path` / share / uhd / images */ std::string possible_dir; /* We will start by looking for a path indicated by the `UHD_IMAGES_DIR` * environment variable. */ std::vector<std::string> env_paths = get_env_paths("UHD_IMAGES_DIR"); for(auto possible_dir: env_paths) { if (fs::is_directory(fs::path(possible_dir))) { return possible_dir; } } /* On Windows systems, we may need to modify the `search_paths` parameter * (see below). Making a local copy for const correctness. */ std::string _search_paths = search_paths; #ifdef UHD_IMAGES_DIR_WINREG_KEY _search_paths = std::string(STR(UHD_IMAGES_DIR_WINREG_KEY)) + "," + search_paths; #endif /* Now we will parse and attempt to qualify the paths in the `search_paths` * parameter. If this is Windows, we will check the system registry for * these strings. */ if (!_search_paths.empty()) { std::vector<std::string> search_paths_vector; boost::split(search_paths_vector, _search_paths, boost::is_any_of(",;")); for(std::string& search_path: search_paths_vector) { boost::algorithm::trim(search_path); if (search_path.empty()) continue; #ifdef UHD_PLATFORM_WIN32 possible_dir = _get_images_path_from_registry(search_path); if (possible_dir.empty()) { //Could not read from the registry due to missing key, invalid //values, etc Just use the search path. The is_directory check //will fail if this is a registry path and we will move on to //the next item in the list. possible_dir = search_path; } #else possible_dir = expand_home_directory(search_path); #endif if (fs::is_directory(fs::path(possible_dir))) { return possible_dir; } } } /* Finally, check for the default UHD images installation path. */ fs::path pkg_path = fs::path(uhd::get_pkg_path()) / "share" / "uhd" / "images"; if (fs::is_directory(pkg_path)) { return pkg_path.string(); } else { /* No luck. Return an empty string. */ return std::string(""); } }