+
+ // 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.
+ #if defined(__UNIX__) || defined(__WXSTUBS__)
+ static const char *szMktempSuffix = "XXXXXX";
+ m_strTemp << strName << szMktempSuffix;
+ mktemp((char *)m_strTemp.c_str()); // will do because length doesn't change
+ #else // Windows
+ wxString strPath;
+ wxSplitPath(strName, &strPath, NULL, NULL);
+ if ( strPath.IsEmpty() )
+ strPath = '.'; // GetTempFileName will fail if we give it empty string
+#ifdef __WIN32__
+ if ( !GetTempFileName(strPath, "wx_",0, m_strTemp.GetWriteBuf(MAX_PATH)) )
+#else
+ // Not sure why MSVC++ 1.5 header defines first param as BYTE - bug?
+ if ( !GetTempFileName((BYTE) (const char*) strPath, "wx_",0, m_strTemp.GetWriteBuf(MAX_PATH)) )
+#endif
+ wxLogLastError("GetTempFileName");
+ m_strTemp.UngetWriteBuf();
+ #endif // Windows/Unix
+