]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/file.cpp
fix for hot keys in menu items (patch 1013082)
[wxWidgets.git] / src / common / file.cpp
index aca1dc4d26a1f2760ce0ac0169247746bcf65194..5d0d1bee7bc1fda2abbc5fee45ecd3d9d3d9a9be 100644 (file)
 // 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
 
 
 #elif defined(__WXMSW__) && defined(__WXWINCE__)
     // TODO: what to include?
+#elif (defined(__OS2__))
+    #include <io.h>
 #elif (defined(__UNIX__) || defined(__GNUWIN32__))
     #include  <unistd.h>
+    #include  <time.h>
     #include  <sys/stat.h>
     #ifdef __GNUWIN32__
-        #include <windows.h>
+        #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 <io.h>
 #elif (defined(__WXSTUBS__))
     // Have to ifdef this for different environments
     #include <io.h>
     #define ACCESS(access)  , (access)
 #endif // Salford C
 
-// wxWindows
+// wxWidgets
 #ifndef WX_PRECOMP
     #include  "wx/string.h"
     #include  "wx/intl.h"
@@ -339,6 +345,13 @@ 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 )
@@ -408,10 +421,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__)
@@ -691,7 +704,9 @@ 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
 
@@ -717,7 +732,7 @@ bool wxTempFile::Commit()
         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;
     }