X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04ef50df3a0fa3c343800c554e609f98fc7575cc..93d2bf4406e5f850189f827275c66ef99bb64791:/src/common/filefn.cpp?ds=inline diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 781e18dc95..5b59a1baba 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -272,8 +272,11 @@ wxString wxPathList::FindAbsoluteValidPath (const wxString& file) bool wxFileExists (const wxString& filename) { -#ifdef __GNUWIN32__ // (fix a B20 bug) - return GetFileAttributes(filename) != 0xFFFFFFFF; +#ifdef __WINDOWS__ + // GetFileAttributes can copy with network paths + DWORD ret = GetFileAttributes(filename); + DWORD isDir = (ret & FILE_ATTRIBUTE_DIRECTORY); + return ((ret != 0xffffffff) && (isDir == 0)); #else wxStructStat stbuf; if ( !filename.empty() && wxStat (OS_FILENAME(filename), &stbuf) == 0 ) @@ -287,12 +290,16 @@ bool wxIsAbsolutePath (const wxString& filename) { #ifdef __WXMAC__ - if (filename != wxT("")) - { - if( filename.Find(':') != wxNOT_FOUND && filename[0] != ':' ) - return TRUE ; - } - return FALSE ; + if (filename != wxT("")) + { + // This seems wrong to me, but there is no fix. since + // "MacOS:MyText.txt" is absolute whereas "MyDir:MyText.txt" + // is not. Or maybe ":MyDir:MyText.txt" has to be used? RR. + + if (filename.Find(':') != wxNOT_FOUND && filename[0] != ':') + return TRUE ; + } + return FALSE ; #else if (filename != wxT("")) { @@ -1129,7 +1136,7 @@ bool wxMkdir(const wxString& dir, int perm) // assume mkdir() has 2 args on non Windows-OS/2 platforms and on Windows too // for the GNU compiler -#if (!(defined(__WXMSW__) || defined(__WXPM__))) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) || defined(__WXWINE__) +#if (!(defined(__WXMSW__) || defined(__WXPM__))) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) || defined(__WXWINE__) || defined(__WXMICROWIN__) if ( mkdir(wxFNCONV(dirname), perm) != 0 ) #elif defined(__WXPM__) if (::DosCreateDir((PSZ)dirname, NULL) != 0) // enhance for EAB's?? @@ -1175,13 +1182,20 @@ bool wxPathExists(const wxChar *pszPathName) while ( wxEndsWithPathSeparator(strPath) ) { size_t len = strPath.length(); - if ( len == 1 || strPath[len - 1] == _T(':') ) + if ( len == 1 || (len == 3 && strPath[len - 2] == _T(':')) ) break; strPath.Truncate(len - 1); } #endif // __WINDOWS__ +#ifdef __WINDOWS__ + // Stat can't cope with network paths + DWORD ret = GetFileAttributes(strPath.c_str()); + DWORD isDir = (ret & FILE_ATTRIBUTE_DIRECTORY); + return ((ret != 0xffffffff) && (isDir != 0)); +#else + wxStructStat st; #ifndef __VISAGECPP__ return wxStat(wxFNSTRINGCAST strPath.fn_str(), &st) == 0 && @@ -1192,6 +1206,7 @@ bool wxPathExists(const wxChar *pszPathName) (st.st_mode == S_IFDIR); #endif +#endif } // Get a temporary filename, opening and closing the file.