X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FMoof%2FResource.cc;h=ec940257045ea6650bf479f197eed0df9f91b60c;hb=81ff940d1bea07447f8218ab9a764fbf393431e8;hp=a9ff22da9eb68c1300055fca4337bbcbf62d848e;hpb=8ad81a8282ce6e9e488a453e6bcd05fbc09715dc;p=chaz%2Fyoink diff --git a/src/Moof/Resource.cc b/src/Moof/Resource.cc index a9ff22d..ec94025 100644 --- a/src/Moof/Resource.cc +++ b/src/Moof/Resource.cc @@ -38,55 +38,63 @@ namespace Mf { // static member -std::vector Resource::searchPaths_; +std::vector Resource::gSearchPaths; -Resource::~Resource() {} +void Resource::addSearchPaths(const std::string& path) +{ + std::vector paths; + boost::split(paths, path, boost::is_any_of(":")); + addSearchPaths(paths); +} -void Resource::addSearchPath(const std::string& directory) +void Resource::addSearchPaths(const std::vector& path) { - std::string path(directory); + std::vector::const_iterator it; - ASSERT(path.length() > 0 && "empty search path string"); - - // add a slash if there isn't one already - if (*path.rbegin() != '/') + for (it = path.begin(); it != path.end(); ++it) { - path += '/'; - } + std::string onePath(*it); -#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN64) - boost::replace_all(path, "/", "\\"); + ASSERT(!onePath.empty() && "empty search path string"); + + // add a slash if there isn't one already + if (*onePath.rbegin() != '/') + { + onePath += '/'; + } + +#if defined(_WIN32) || defined(__WIN32__) + boost::replace_all(onePath, "/", "\\"); #endif - searchPaths_.push_back(path); + gSearchPaths.push_back(onePath); + logInfo << "added search path " << onePath << std::endl; + } } + std::string Resource::getPath(const std::string& name) { std::vector::iterator it; std::string path(name); -#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN64) +#if defined(_WIN32) || defined(__WIN32__) boost::replace_all(path, "/", "\\"); #endif - for (it = searchPaths_.begin(); it != searchPaths_.end(); ++it) + for (it = gSearchPaths.begin(); it != gSearchPaths.end(); ++it) { std::string fullPath(*it); fullPath += path; - logDebug("looking for resource %s at %s", name.c_str(), path.c_str()); - - if (access(fullPath.c_str(), R_OK) == 0) - { - logDebug("found resource %s at %s", name.c_str(), path.c_str()); - return fullPath; - } + if (access(fullPath.c_str(), R_OK) == 0) return fullPath; } + logWarning << "cannot find resource " << name << std::endl; + // empty string return std::string(); }