]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/file.cpp
event/leave events
[wxWidgets.git] / src / common / file.cpp
index 9011987266cddbd02b31c31203af830bf85230bf..52a39d4d348f5ad94a4a07d904c218d4cccfabbc 100644 (file)
@@ -27,7 +27,7 @@
 #endif
 
 // standard
-#if    defined(__WINDOWS__) && !defined(__GNUWIN32__)
+#if    defined(__WXMSW__) && !defined(__GNUWIN32__)
   #include  <io.h>
 #elif (defined(__UNIX__) || defined(__GNUWIN32__))
   #include  <unistd.h>
@@ -190,7 +190,7 @@ bool wxFile::Close()
 // read
 off_t wxFile::Read(void *pBuf, off_t nCount)
 {
-  wxCHECK_RET( (pBuf != NULL) && IsOpened(), 0 );
+  wxCHECK( (pBuf != NULL) && IsOpened(), 0 );
 
   int iRc = ::read(m_fd, pBuf, nCount);
   if ( iRc == -1 ) {
@@ -204,7 +204,7 @@ off_t wxFile::Read(void *pBuf, off_t nCount)
 // write
 bool wxFile::Write(const void *pBuf, uint nCount)
 {
-  wxCHECK_RET( (pBuf != NULL) && IsOpened(), 0 );
+  wxCHECK( (pBuf != NULL) && IsOpened(), 0 );
 
   int iRc = ::write(m_fd, pBuf, nCount);
   if ( iRc == -1 ) {
@@ -366,7 +366,20 @@ wxTempFile::wxTempFile(const wxString& strName)
 bool wxTempFile::Open(const wxString& strName)
 {
   m_strName = strName;
-  m_strTemp = tmpnam(NULL);
+  
+  // we want to create the file in the same directory as strName because
+  // otherwise rename() in Commit() might not work (if the files are on
+  // different partitions for example). Unfortunately, the only standard
+  // (POSIX) temp file creation function tmpnam() can't do it.
+  #ifdef  __UNIX__
+    static const char *szMktempSuffix = "XXXXXX";
+    m_strTemp << strName << szMktempSuffix;
+    mktemp((char *)m_strTemp.c_str()); // @@@ even if the length doesn't change
+    //m_strTemp.UngetWriteBuf();
+  #else // Windows
+    m_strTemp = tmpnam(NULL);
+  #endif  // Windows/Unix
+    
   return m_file.Open(m_strTemp, wxFile::write);
 }