]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxFileName::Exists().
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 Feb 2012 15:39:46 +0000 (15:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 Feb 2012 15:39:46 +0000 (15:39 +0000)
This function checks for existence of anything with the given name, not
necessarily just a file or a directory.

Extend the unit test to verify that it returns true for /dev/null on Unix
systems.

Closes #953.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/filename.h
interface/wx/filename.h
src/common/filename.cpp
tests/filename/filenametest.cpp

index 8854459475ff47258ee170e0775e84e83b18b64a..b6ab33c597b78951cacef235d154eb9cf1669e1a 100644 (file)
@@ -467,6 +467,7 @@ All:
 - Add wxHTTP::SetPostBuffer(wxMemoryBuffer) and SetPostText() (Eran Ifrah).
 - Fix wrong time zone used in wxDateTime::UNow().
 - Fix performance of wxStdInputStream with MSVC8/9 (wsu).
+- Added wxFileName::Exists().
 
 All (GUI):
 
index 8f9de3bb3a3f51b2c5fa8de1387ce985f009f96f..dc8eb3020d950de6286273aa4f6032afcab6694f 100644 (file)
@@ -214,14 +214,20 @@ public:
                 !m_ext.empty() || m_hasExt;
     }
 
-        // does the file with this name exists?
+        // does the file with this name exist?
     bool FileExists() const;
     static bool FileExists( const wxString &file );
 
-        // does the directory with this name exists?
+        // does the directory with this name exist?
     bool DirExists() const;
     static bool DirExists( const wxString &dir );
 
+        // does anything at all with this name (i.e. file, directory or some
+        // other file system object such as a device, socket, ...) exist?
+    bool Exists() const { return Exists(GetFullPath()); }
+    static bool Exists(const wxString& path);
+
+
         // checks on most common flags for files/directories;
         // more platform-specific features (like e.g. Unix permissions) are not
         // available in wxFileName
index 829fa8b0c5c3391a34ed829099db3ef3410c52dd..8854f1f062ad0a4c4650042c816c007b38bb0534 100644 (file)
@@ -452,11 +452,19 @@ public:
 
     /**
         Returns @true if the directory with this name exists.
+
+        Notice that this function tests the directory part of this object,
+        i.e. the string returned by GetPath(), and not the full path returned
+        by GetFullPath().
+
+        @see FileExists(), Exists()
     */
     bool DirExists() const;
 
     /**
         Returns @true if the directory with name @a dir exists.
+
+        @see FileExists(), Exists()
     */
     static bool DirExists(const wxString& dir);
 
@@ -467,17 +475,40 @@ public:
     static wxFileName DirName(const wxString& dir,
                               wxPathFormat format = wxPATH_NATIVE);
 
+    /**
+        Calls the static overload of this function with the full path of this
+        object.
+
+        @since 2.9.4
+     */
+    bool Exists() const;
+
+    /**
+        Returns @true if either a file or a directory or something else with
+        this name exists in the file system.
+
+        This method is equivalent to @code FileExists() || DirExists() @endcode
+        under most systems but under Unix it also returns true if the file
+        identifies a special file system object such as a device, a socket or a
+        FIFO.
+
+        @since 2.9.4
+
+        @see FileExists(), DirExists()
+     */
+    static bool Exists(const wxString& path);
+
     /**
         Returns @true if the file with this name exists.
 
-        @see DirExists()
+        @see DirExists(), Exists()
     */
     bool FileExists() const;
 
     /**
         Returns @true if the file with name @a file exists.
 
-        @see DirExists()
+        @see DirExists(), Exists()
     */
     static bool FileExists(const wxString& file);
 
index 29cf9acb3a516c1a49e3a3c5bab09ff2aeb5ff0c..a3f8ac3c5d1d5e3f4f08e410d213b0f67ad624e5 100644 (file)
@@ -732,6 +732,12 @@ bool wxFileName::DirExists( const wxString &dirPath )
     return wxFileSystemObjectExists(dirPath, wxFileSystemObject_Dir);
 }
 
+/* static */
+bool wxFileName::Exists(const wxString& path)
+{
+    return wxFileSystemObjectExists(path, wxFileSystemObject_Any);
+}
+
 // ----------------------------------------------------------------------------
 // CWD and HOME stuff
 // ----------------------------------------------------------------------------
index 52cad019e5ff1cdea2f81fbd97978eed6d850d7b..b46ecff63affbd57c4047282ad48e8da89944492 100644 (file)
@@ -657,13 +657,16 @@ void FileNameTestCase::TestExists()
 
     CPPUNIT_ASSERT( fn.FileExists() );
     CPPUNIT_ASSERT( !wxFileName::DirExists(fn.GetFullPath()) );
+    CPPUNIT_ASSERT( fn.Exists() );
 
     wxFileName dirTemp(wxFileName::DirName(wxFileName::GetTempDir()));
     CPPUNIT_ASSERT( !dirTemp.FileExists() );
     CPPUNIT_ASSERT( dirTemp.DirExists() );
+    CPPUNIT_ASSERT( dirTemp.Exists() );
 
 #ifdef __UNIX__
     CPPUNIT_ASSERT( !wxFileName::FileExists("/dev/null") );
     CPPUNIT_ASSERT( !wxFileName::DirExists("/dev/null") );
+    CPPUNIT_ASSERT( wxFileName::Exists("/dev/null") );
 #endif // __UNIX__
 }