X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FResource.cc;fp=src%2FMoof%2FResource.cc;h=0000000000000000000000000000000000000000;hp=d1dc5fac425d1f3f808eb66357b44706a5d4f3a0;hb=831f04d4bc19a390415ac0bbac4331c7a65509bc;hpb=299af4f2047e767e5d79501c26444473bda64c64 diff --git a/src/Moof/Resource.cc b/src/Moof/Resource.cc deleted file mode 100644 index d1dc5fa..0000000 --- a/src/Moof/Resource.cc +++ /dev/null @@ -1,137 +0,0 @@ - -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** -**] All rights reserved. -* -* vi:ts=4 sw=4 tw=75 -* -* Distributable under the terms and conditions of the 2-clause BSD license; -* see the file COPYING for a complete text of the license. -* -**************************************************************************/ - -#include - -#include "Log.hh" -#include "Resource.hh" - - -namespace Mf { - - -// static member -std::vector Resource::gSearchPaths; - - -void Resource::addSearchPaths(const std::string& paths) -{ - std::vector pathList; - boost::split(pathList, paths, boost::is_any_of(":")); - - addSearchPaths(pathList); -} - -void Resource::addSearchPaths(const std::vector& pathList) -{ - std::vector::const_iterator it; - for (it = pathList.begin(); it != pathList.end(); ++it) - { - std::string path(*it); - - ASSERT(!path.empty() && "empty search path string"); - - // add a slash if there isn't one already - if (*path.rbegin() != '/') path += '/'; - -#if defined(_WIN32) - boost::replace_all(path, "/", "\\"); -#endif - - gSearchPaths.push_back(path); - logInfo << "added search path " << path << std::endl; - } -} - - -std::string Resource::getPath(const std::string& path, - const std::string& prefix, - const std::string& extension) -{ - std::string realPath(path); - if (getPath(realPath, prefix, extension)) return realPath; - - return std::string(); -} - -bool Resource::getPath(std::string& path, - const std::string& prefix, - const std::string& extension) -{ - FILE* file = openFile(path, prefix, extension); - if (file) - { - fclose(file); - return true; - } - - return false; -} - -FILE* Resource::openFile(std::string& path, - std::string prefix, - const std::string& extension, - const std::string& mode) -{ -#if defined(_WIN32) - // Windows always has to be the odd one. - boost::replace_all(path, "/", "\\"); - boost::replace_all(prefix, "/", "\\"); -#endif - - std::vector preList; - boost::split(preList, prefix, boost::is_any_of(":")); - std::vector postList; - boost::split(postList, extension, boost::is_any_of(":")); - - std::vector::iterator it; - for (it = gSearchPaths.begin(); it != gSearchPaths.end(); ++it) - { - std::vector::iterator jt; - for (jt = preList.begin(); jt != preList.end(); ++jt) - { - std::vector::iterator kt; - for (kt = postList.begin(); kt != postList.end(); ++kt) - { - std::string realPath(*it); - realPath += *jt; - realPath += path; - realPath += "."; - realPath += *kt; - - FILE* file = fopen(realPath.c_str(), mode.c_str()); - if (file) - { - path = realPath; - return file; - } - } - } - - // check path relative to search path - std::string realPath(*it); - realPath += path; - - FILE* file = fopen(realPath.c_str(), mode.c_str()); - if (file) - { - path = realPath; - return file; - } - } - - // last ditch effort; maybe it's already a path to a valid resource - return fopen(path.c_str(), mode.c_str()); -} - - -} // namespace Mf -