]> git.tdb.fi Git - libs/core.git/blobdiff - source/fs/dir.cpp
Use #ifdef _WIN32 rather than WIN32
[libs/core.git] / source / fs / dir.cpp
index ffe56708bffeb85552839e6867663470b9b0a418..717c11c132d7e4fe6e99995827e4918d443062fb 100644 (file)
@@ -20,7 +20,7 @@ namespace
 
 enum
 {
-#ifdef WIN32
+#ifdef _WIN32
        ITEMSEP = ';'
 #else
        ITEMSEP = ':'
@@ -73,7 +73,7 @@ void mkpath(const Path &path, int mode)
        for(Path::Iterator i=path.begin(); i!=path.end(); ++i)
        {
                p /= *i;
-#ifdef WIN32
+#ifdef _WIN32
                if(p.size()==1 && p.is_absolute())
                        continue;
 #endif
@@ -130,18 +130,12 @@ list<string> list_filtered(const Path &path, const string &filter)
        return result;
 }
 
-Path getcwd()
-{
-       char buf[1024];
-       return ::getcwd(buf, sizeof(buf));
-}
-
 Path get_user_data_dir()
 {
        const string &name = Application::get_name();
        if(name.empty())
                throw logic_error("application name not known");
-       return get_user_data_dir();
+       return get_user_data_dir(name);
 }
 
 Path get_sys_conf_dir(const string &argv0)
@@ -214,10 +208,23 @@ Path get_sys_lib_dir()
        return get_sys_lib_dir(argv0, Application::get_name());
 }
 
-void chdir(const Path &path)
+Path path_lookup(const string &name, const list<Path> &paths)
+{
+       for(list<Path>::const_iterator i=paths.begin(); i!=paths.end(); ++i)
+       {
+               Path full = *i/name;
+               if(exists(full))
+                       return realpath(full);
+       }
+
+       return Path();
+}
+
+Path path_lookup(const string &name)
 {
-       if(::chdir(path.str().c_str())==-1)
-               throw system_error("chdir");
+       const char *path = getenv("PATH");
+       vector<string> dirs = split(path, ITEMSEP);
+       return path_lookup(name, list<Path>(dirs.begin(), dirs.end()));
 }
 
 } // namespace FS