Restore correct behaviour of GetTimes() wrt to
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
This commit is contained in:
@@ -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.
|
to change the file data you should use \helpref{wxFile}{wxfile} class instead.
|
||||||
wxFileName provides functions for working with the file attributes.
|
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}
|
\wxheading{Derived from}
|
||||||
|
|
||||||
No base class
|
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
|
retrieve the real file creation time there anyhow) which can also be changed
|
||||||
by many operations after the file creation.
|
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
|
Any of the pointers may be {\tt NULL} if the corresponding time is not
|
||||||
needed.
|
needed.
|
||||||
|
|
||||||
|
@@ -2216,7 +2216,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
|
|||||||
// not 9x
|
// not 9x
|
||||||
bool ok;
|
bool ok;
|
||||||
FILETIME ftAccess, ftCreate, ftWrite;
|
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
|
// implemented in msw/dir.cpp
|
||||||
extern bool wxGetDirectoryTimes(const wxString& dirname,
|
extern bool wxGetDirectoryTimes(const wxString& dirname,
|
||||||
@@ -2255,6 +2255,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
|
#elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
|
||||||
|
// no need to test for IsDir() here
|
||||||
wxStructStat stBuf;
|
wxStructStat stBuf;
|
||||||
if ( wxStat( GetFullPath().c_str(), &stBuf) == 0 )
|
if ( wxStat( GetFullPath().c_str(), &stBuf) == 0 )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user