]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Resource.cc
fixed permissions for stlplus files
[chaz/yoink] / src / Moof / Resource.cc
index d958c3aa9e551cc584d9fe14fe02cf3275846041..6f09601bf0d36d07f0dc820523e388ed13334868 100644 (file)
@@ -28,6 +28,9 @@
 
 #include <unistd.h>
 
+#include <boost/algorithm/string.hpp>
+
+#include "Log.hh"
 #include "Resource.hh"
 
 
@@ -38,38 +41,45 @@ namespace Mf {
 std::vector<std::string> Resource::searchPaths_;
 
 
-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__)
+       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__)
+       boost::replace_all(path, "/", "\\");
+#endif
+
        for (it = searchPaths_.begin(); it != searchPaths_.end(); ++it)
        {
                std::string fullPath(*it);
-               fullPath += name;
+               fullPath += path;
 
-               // TODO this could be more portable
-               if (access(fullPath.c_str(), R_OK) == 0)
-               {
-                       return fullPath;
-               }
+               if (access(fullPath.c_str(), R_OK) == 0) return fullPath;
        }
 
+       logWarning("cannot find resource %s", name.c_str());
+
        // empty string
        return std::string();
 }
This page took 0.018807 seconds and 4 git commands to generate.