]> git.tdb.fi Git - libs/core.git/blobdiff - source/fs/dir.cpp
Throw an exception in list_files if the directory can't be opened
[libs/core.git] / source / fs / dir.cpp
index 57fd9368f2b311da99ea1cb3a2fc1ccdaf286510..2ae5122e63768492f54274a7b7062e861445a094 100644 (file)
@@ -103,18 +103,18 @@ list<string> list_filtered(const Path &path, const string &filter)
 
        list<string> result;
        DIR *dir = opendir(path.str().c_str());
-       if(dir)
+       if(!dir)
+               throw system_error("opendir");
+
+       while(dirent *de = readdir(dir))
        {
-               while(dirent *de = readdir(dir))
-               {
-                       const char *fn = de->d_name;
-                       if(fn[0]=='.' && (fn[1]==0 || (fn[1]=='.' && fn[2]==0))) 
-                               continue;
-                       if(r_filter.match(fn))
-                               result.push_back(fn);
-               }
-               closedir(dir);
+               const char *fn = de->d_name;
+               if(fn[0]=='.' && (fn[1]==0 || (fn[1]=='.' && fn[2]==0))) 
+                       continue;
+               if(r_filter.match(fn))
+                       result.push_back(fn);
        }
+       closedir(dir);
 
        return result;
 }
@@ -146,6 +146,8 @@ Path get_sys_data_dir(const string &argv0, const string &appname)
 
        if(dir[-1]=="bin" || dir[-1]=="sbin")
                return dir/".."/"share"/appname;
+       else if(dir[-1]=="MacOS")
+               return dir/".."/"Resources";
        else
                return dir;
 }