X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ca11abde117b55a0054588fcf138234f8172b98d..a400a8230f751da518c29bd9a1c67132a4ae2b75:/src/common/file.cpp diff --git a/src/common/file.cpp b/src/common/file.cpp index d5a136e704..04fd887a93 100644 --- a/src/common/file.cpp +++ b/src/common/file.cpp @@ -7,7 +7,7 @@ // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ---------------------------------------------------------------------------- @@ -28,7 +28,7 @@ #if wxUSE_FILE // standard -#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXWINE__) && !defined(__WXMICROWIN__) +#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) #include #ifndef __SALFORDC__ @@ -56,6 +56,7 @@ #elif (defined(__UNIX__) || defined(__GNUWIN32__)) #include + #include #ifdef __GNUWIN32__ #include #endif @@ -71,8 +72,6 @@ #endif #elif (defined(__WXPM__)) #include - #define W_OK 2 - #define R_OK 4 #elif (defined(__WXSTUBS__)) // Have to ifdef this for different environments #include @@ -84,8 +83,6 @@ #endif char* mktemp( char * path ) { return path ;} #include - #define W_OK 2 - #define R_OK 4 #include #else #error "Please specify the header with file functions declarations." @@ -97,15 +94,21 @@ #ifndef __MWERKS__ #include // needed for stat #include // stat -#elif ( defined(__MWERKS__) && defined(__WXMSW__) ) +#elif defined(__MWERKS__) && ( defined(__WXMSW__) || defined(__MACH__) ) #include // needed for stat #include // stat #endif -#if defined(__BORLANDC__) || defined(_MSC_VER) - #define W_OK 2 - #define R_OK 4 -#endif +// Windows compilers don't have these constants +#ifndef W_OK + enum + { + F_OK = 0, // test for existence + X_OK = 1, // execute permission + W_OK = 2, // write + R_OK = 4 // read + }; +#endif // W_OK // there is no distinction between text and binary files under Unix, so define // O_BINARY as 0 if the system headers don't do it already @@ -138,6 +141,7 @@ #include "wx/filename.h" #include "wx/file.h" +#include "wx/filefn.h" #ifdef __WXMSW__ #include "wx/msw/mslu.h" @@ -150,19 +154,22 @@ // ---------------------------------------------------------------------------- // static functions // ---------------------------------------------------------------------------- + bool wxFile::Exists(const wxChar *name) { - wxStructStat st; - return !wxAccess(name, 0) && - !wxStat(name, &st) && - (st.st_mode & S_IFREG); + return wxFileExists(name); } bool wxFile::Access(const wxChar *name, OpenMode mode) { - int how = 0; + int how; + + switch ( mode ) + { + default: + wxFAIL_MSG(wxT("bad wxFile::Access mode parameter.")); + // fall through - switch ( mode ) { case read: how = R_OK; break; @@ -171,11 +178,12 @@ bool wxFile::Access(const wxChar *name, OpenMode mode) how = W_OK; break; - default: - wxFAIL_MSG(wxT("bad wxFile::Access mode parameter.")); + case read_write: + how = R_OK | W_OK; + break; } - return wxAccess( name, how) == 0; + return wxAccess(name, how) == 0; } // ---------------------------------------------------------------------------- @@ -196,7 +204,7 @@ bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode) { // if bOverwrite we create a new file or truncate the existing one, // otherwise we only create the new file and fail if it already exists -#if defined(__WXMAC__) && !defined(__UNIX__) +#if defined(__WXMAC__) && !defined(__UNIX__) && !wxUSE_UNICODE // Dominic Mazzoni [dmazzoni+@cs.cmu.edu] reports that open is still broken on the mac, so we replace // int fd = open(wxUnix2MacFilename( szFileName ), O_CREAT | (bOverwrite ? O_TRUNC : O_EXCL), access); int fd = creat( szFileName , accessMode);