]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/dir.cpp
Handle IN_MOVE inotify events better.
[wxWidgets.git] / src / unix / dir.cpp
index f274a208d13cab0f64722ab5de49d3ec2cc0dd62..2924741545652a961e616360d0e390e274d97735 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "wx/dir.h"
 #include "wx/filefn.h"          // for wxMatchWild
+#include "wx/filename.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -149,13 +150,20 @@ bool wxDirData::Read(wxString *filename)
             break;
         }
 
-        // check the type now
-        if ( !(m_flags & wxDIR_FILES) && !wxDir::Exists(path + de_d_name) )
+        // check the type now: notice that we may want to check the type of
+        // the path itself and not whatever it points to in case of a symlink
+        wxFileName fn = wxFileName::DirName(path + de_d_name);
+        if ( m_flags & wxDIR_NO_FOLLOW )
+        {
+            fn.DontFollowLink();
+        }
+
+        if ( !(m_flags & wxDIR_FILES) && !fn.DirExists() )
         {
             // it's a file, but we don't want them
             continue;
         }
-        else if ( !(m_flags & wxDIR_DIRS) && wxDir::Exists(path + de_d_name) )
+        else if ( !(m_flags & wxDIR_DIRS) && fn.DirExists() )
         {
             // it's a dir, and we don't want it
             continue;