X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c193821a999730fbf6a9bea83763f37daae68f1..9f41fa227b8f3f0671d22216e2aa93c27840a597:/src/common/file.cpp diff --git a/src/common/file.cpp b/src/common/file.cpp index aca1dc4d26..b7a4143891 100644 --- a/src/common/file.cpp +++ b/src/common/file.cpp @@ -10,11 +10,16 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +/* + TODO: remove all the WinCE ugliness from here, implement the wxOpen(), + wxSeek(), ... functions in a separate file for WinCE instead!!! + */ + // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "file.h" #endif @@ -56,11 +61,14 @@ #elif defined(__WXMSW__) && defined(__WXWINCE__) // TODO: what to include? +#elif (defined(__OS2__)) + #include #elif (defined(__UNIX__) || defined(__GNUWIN32__)) #include + #include #include #ifdef __GNUWIN32__ - #include + #include "wx/msw/wrapwin.h" #endif #elif defined(__DOS__) #if defined(__WATCOMC__) @@ -72,8 +80,6 @@ #else #error "Please specify the header with file functions declarations." #endif -#elif (defined(__WXPM__)) - #include #elif (defined(__WXSTUBS__)) // Have to ifdef this for different environments #include @@ -139,7 +145,7 @@ #define ACCESS(access) , (access) #endif // Salford C -// wxWindows +// wxWidgets #ifndef WX_PRECOMP #include "wx/string.h" #include "wx/intl.h" @@ -196,7 +202,7 @@ bool wxFile::Access(const wxChar *name, OpenMode mode) #ifdef __WXWINCE__ // FIXME: use CreateFile with 0 access to query the file - return TRUE; + return true; #else return wxAccess(name, how) == 0; #endif @@ -210,7 +216,7 @@ bool wxFile::Access(const wxChar *name, OpenMode mode) wxFile::wxFile(const wxChar *szFileName, OpenMode mode) { m_fd = fd_invalid; - m_error = FALSE; + m_error = false; Open(szFileName, mode); } @@ -222,7 +228,7 @@ bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode) // otherwise we only create the new file and fail if it already exists #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 = open( szFileName , O_CREAT | (bOverwrite ? O_TRUNC : O_EXCL), access); int fd = creat( szFileName , accessMode); #else #ifdef __WXWINCE__ @@ -244,12 +250,12 @@ bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode) if ( fd == -1 ) { wxLogSysError(_("can't create file '%s'"), szFileName); - return FALSE; + return false; } else { Attach(fd); - return TRUE; + return true; } } @@ -261,8 +267,6 @@ bool wxFile::Open(const wxChar *szFileName, OpenMode mode, int accessMode) DWORD shareMode = 0; DWORD disposition = 0; - int flags = O_BINARY; - switch ( mode ) { case read: @@ -339,16 +343,23 @@ bool wxFile::Open(const wxChar *szFileName, OpenMode mode, int accessMode) break; } +#ifdef __WINDOWS__ + // only read/write bits for "all" are supported by this function under + // Windows, and VC++ 8 returns EINVAL if any other bits are used in + // accessMode, so clear them as they have at best no effect anyhow + accessMode &= wxS_IRUSR | wxS_IWUSR; +#endif // __WINDOWS__ + int fd = wxOpen( szFileName, flags ACCESS(accessMode)); #endif if ( fd == -1 ) { wxLogSysError(_("can't open file '%s'"), szFileName); - return FALSE; + return false; } else { Attach(fd); - return TRUE; + return true; } } @@ -364,13 +375,13 @@ bool wxFile::Close() { wxLogSysError(_("can't close file descriptor %d"), m_fd); m_fd = fd_invalid; - return FALSE; + return false; } else m_fd = fd_invalid; } - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -408,10 +419,10 @@ size_t wxFile::Write(const void *pBuf, size_t nCount) wxCHECK( (pBuf != NULL) && IsOpened(), 0 ); #ifdef __WXWINCE__ - DWORD bytesRead = 0; + DWORD bytesWritten = 0; int iRc = 0; - if (WriteFile((HANDLE) m_fd, pBuf, (DWORD) nCount, & bytesRead, NULL)) - iRc = bytesRead; + if (WriteFile((HANDLE) m_fd, pBuf, (DWORD) nCount, & bytesWritten, NULL)) + iRc = bytesWritten; else iRc = -1; #elif defined(__MWERKS__) @@ -425,7 +436,7 @@ size_t wxFile::Write(const void *pBuf, size_t nCount) #endif if ( iRc == -1 ) { wxLogSysError(_("can't write to file descriptor %d"), m_fd); - m_error = TRUE; + m_error = true; return 0; } else @@ -442,14 +453,14 @@ bool wxFile::Flush() if ( wxFsync(m_fd) == -1 ) { wxLogSysError(_("can't flush file descriptor %d"), m_fd); - return FALSE; + return false; } #else // no fsync // just do nothing #endif // fsync } - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -593,11 +604,11 @@ bool wxFile::Eof() const DWORD off0 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_CURRENT); DWORD off1 = SetFilePointer((HANDLE) m_fd, 0, 0, FILE_END); if (off0 == off1) - return TRUE; + return true; else { SetFilePointer((HANDLE) m_fd, off0, 0, FILE_BEGIN); - return FALSE; + return false; } #else int iRc; @@ -619,7 +630,7 @@ bool wxFile::Eof() const break; case 0: - return FALSE; + return false; case -1: wxLogSysError(_("can't determine if the end of file is reached on descriptor %d"), m_fd); @@ -629,7 +640,7 @@ bool wxFile::Eof() const wxFAIL_MSG(_("invalid eof() return value.")); } - return TRUE; + return true; #endif } @@ -668,13 +679,13 @@ bool wxTempFile::Open(const wxString& strName) if ( m_strTemp.empty() ) { // CreateTempFileName() failed - return FALSE; + return false; } #ifdef __UNIX__ // the temp file should have the same permissions as the original one mode_t mode; - + wxStructStat st; if ( stat( (const char*) m_strName.fn_str(), &st) == 0 ) { @@ -691,11 +702,13 @@ bool wxTempFile::Open(const wxString& strName) if ( chmod( (const char*) m_strTemp.fn_str(), mode) == -1 ) { +#ifndef __OS2__ wxLogSysError(_("Failed to set temporary file permissions")); +#endif } #endif // Unix - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -714,15 +727,15 @@ bool wxTempFile::Commit() if ( wxFile::Exists(m_strName) && wxRemove(m_strName) != 0 ) { wxLogSysError(_("can't remove file '%s'"), m_strName.c_str()); - return FALSE; + return false; } - if ( wxRenameFile(m_strTemp, m_strName) != 0 ) { + if ( !wxRenameFile(m_strTemp, m_strName) ) { wxLogSysError(_("can't commit changes to file '%s'"), m_strName.c_str()); - return FALSE; + return false; } - return TRUE; + return true; } void wxTempFile::Discard()