]> git.saurik.com Git - wxWidgets.git/commitdiff
Restore correct behaviour of GetTimes() wrt to
authorRobert Roebling <robert@roebling.de>
Sat, 18 Nov 2006 17:34:40 +0000 (17:34 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 18 Nov 2006 17:34:40 +0000 (17:34 +0000)
    directories.
  Add some (hopefully) clarifying docs about
    dealing with dir names vs. file names.

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

docs/latex/wx/filename.tex
src/common/filename.cpp

index 3239145221a882555ee26a26c678135637e4ed33..5b4d7bb2303996ab02a2f2421776b2f7ba8fed12 100644 (file)
@@ -19,6 +19,39 @@ Second, it includes the functions for working with the files itself. Note that
 to change the file data you should use \helpref{wxFile}{wxfile} class instead.
 wxFileName provides functions for working with the file attributes.
 
+When working with directory names (i.e. without filename and extension)
+make sure not to misuse the file name part of this class with the last
+directory. Instead initialize the wxFileName instance like this:
+
+\begin{verbatim}
+wxFileName dirname( wxT("C:\mydir"), wxEmptyString );
+MyMethod( dirname.GetPath() );
+\end{verbatim}
+
+Accordingly, methods dealing with directories or directory names
+like \helpref{IsDirReadable}{wxfilenameisdirreadale} use
+\helpref{GetPath}{wxfilenamegetpath} whereas methods dealing 
+with file names like \helpref{IsFileReadable}{wxfilenameisfilereadale}
+use \helpref{GetFullPath}{wxfilenamegetfullpath}.
+
+If it is not known wether a string contains a directory name or
+a complete file name (such as when interpreting user input) you need to use
+the static function \helpref{wxFileName::DirExists}{wxfilenamedirexists}
+(or its global variant \helpref{wxDirExists}{wxdirexists}) and
+construct the wxFileName instance accordingly. This will only work
+if the directory actually exists, of course:
+
+\begin{verbatim}
+wxString user_input;
+// get input from user
+
+wxFileName fname;
+if (wxDirExists(user_input))
+    fname.AssignDir( user_input );
+else
+    fname.Assign( user_input );
+\end{verbatim}
+
 \wxheading{Derived from}
 
 No base class
@@ -575,6 +608,12 @@ under Windows and the inode change time under Unix (as it is impossible to
 retrieve the real file creation time there anyhow) which can also be changed
 by many operations after the file creation.
 
+If no filename or extension is specified in this instance of wxFileName
+(and therefore \helpref{IsDir}{wxfilenameisdir} returns {\tt true}) then
+this function will return the directory times of the path specified by
+\helpref{GetPath}{wxfilenamegetpath}, otherwise the file times of the
+file specified by \helpref{GetFullPath}{wxfilenamegetfullpath}.
+
 Any of the pointers may be {\tt NULL} if the corresponding time is not
 needed.
 
index cd32280ec627343faddc355a7055fce62820ce6e..8ec78cad96c7e01dfdfc7693bfd09c2ee5cb237e 100644 (file)
@@ -2216,7 +2216,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
     // not 9x
     bool ok;
     FILETIME ftAccess, ftCreate, ftWrite;
-    if ( DirExists() ) // Don't use IsDir, because it returns false even if it's a directory
+    if ( IsDir() ) 
     {
         // implemented in msw/dir.cpp
         extern bool wxGetDirectoryTimes(const wxString& dirname,
@@ -2255,6 +2255,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
         return true;
     }
 #elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
+    // no need to test for IsDir() here
     wxStructStat stBuf;
     if ( wxStat( GetFullPath().c_str(), &stBuf) == 0 )
     {