void Application::addDataDirectory(const std::string& dir) { std::unique_lock<std::mutex> dirLock(dir_mutex); if (inputDirs.empty()) { setDefaultDirectories(); } string d = stripnonprint(dir); // Expand "~/" to user's home directory, if possible if (d.find("~/") == 0 || d.find("~\\") == 0) { char* home = getenv("HOME"); // POSIX systems if (!home) { home = getenv("USERPROFILE"); // Windows systems } if (home) { d = home + d.substr(1, npos); } } // Remove any existing entry for this directory auto iter = std::find(inputDirs.begin(), inputDirs.end(), d); if (iter != inputDirs.end()) { inputDirs.erase(iter); } // Insert this directory at the beginning of the search path inputDirs.insert(inputDirs.begin(), d); }
void Application::addDataDirectory(const std::string& dir) { std::unique_lock<std::mutex> dirLock(dir_mutex); if (inputDirs.empty()) { setDefaultDirectories(); } string d = stripnonprint(dir); // Remove any existing entry for this directory auto iter = std::find(inputDirs.begin(), inputDirs.end(), d); if (iter != inputDirs.end()) { inputDirs.erase(iter); } // Insert this directory at the beginning of the search path inputDirs.insert(inputDirs.begin(), d); }