]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Resource.cc
initial port to win32
[chaz/yoink] / src / Moof / Resource.cc
index d958c3aa9e551cc584d9fe14fe02cf3275846041..a9ff22da9eb68c1300055fca4337bbcbf62d848e 100644 (file)
@@ -28,6 +28,9 @@
 
 #include <unistd.h>
 
+#include <boost/algorithm/string.hpp>
+
+#include "Log.hh"
 #include "Resource.hh"
 
 
@@ -43,29 +46,43 @@ Resource::~Resource() {}
 
 void Resource::addSearchPath(const std::string& directory)
 {
+       std::string path(directory);
+
+       ASSERT(path.length() > 0 && "empty search path string");
+
        // add a slash if there isn't one already
-       if (directory[directory.length() - 1] != '/')
-       {
-               searchPaths_.push_back(directory + '/');
-       }
-       else
+       if (*path.rbegin() != '/')
        {
-               searchPaths_.push_back(directory);
+               path += '/';
        }
+
+#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN64)
+       boost::replace_all(path, "/", "\\");
+#endif
+
+       searchPaths_.push_back(path);
 }
 
 std::string Resource::getPath(const std::string& name)
 {
        std::vector<std::string>::iterator it;
 
+       std::string path(name);
+
+#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN64)
+       boost::replace_all(path, "/", "\\");
+#endif
+
        for (it = searchPaths_.begin(); it != searchPaths_.end(); ++it)
        {
                std::string fullPath(*it);
-               fullPath += name;
+               fullPath += path;
+
+               logDebug("looking for resource %s at %s", name.c_str(), path.c_str());
 
-               // TODO this could be more portable
                if (access(fullPath.c_str(), R_OK) == 0)
                {
+                       logDebug("found resource %s at %s", name.c_str(), path.c_str());
                        return fullPath;
                }
        }
This page took 0.01866 seconds and 4 git commands to generate.