X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dcf924a345ea8ffbc1cf6b40b5f75c6005e504c0..dd60b9ec1e436bfa13eb94ffb69f921aef534eb0:/src/common/file.cpp diff --git a/src/common/file.cpp b/src/common/file.cpp index 07c0f058fa..4ec2c612ec 100644 --- a/src/common/file.cpp +++ b/src/common/file.cpp @@ -20,12 +20,13 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#include "wx/defs.h" #ifdef __BORLANDC__ - #pragma hdrstop + #pragma hdrstop #endif +#if wxUSE_FILE + // standard #if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXWINE__) #include @@ -59,6 +60,11 @@ #ifdef __GNUWIN32__ #include #endif +#elif (defined(__WXPM__)) + #include + #include + #define W_OK 2 + #define R_OK 4 #elif (defined(__WXSTUBS__)) // Have to ifdef this for different environments #include @@ -163,7 +169,7 @@ bool wxFile::Exists(const wxChar *name) wxCharBuffer fname = wxConvFile.cWC2MB(name); return !access(fname, 0) && - !stat(MBSTRINGCAST fname, &st) && + !stat(wxMBSTRINGCAST fname, &st) && (st.st_mode & S_IFREG); #else return !access(name, 0) && @@ -186,7 +192,7 @@ bool wxFile::Access(const wxChar *name, OpenMode mode) break; default: - wxFAIL_MSG(_T("bad wxFile::Access mode parameter.")); + wxFAIL_MSG(wxT("bad wxFile::Access mode parameter.")); } return access(wxFNCONV(name), how) == 0; @@ -205,12 +211,6 @@ wxFile::wxFile(const wxChar *szFileName, OpenMode mode) Open(szFileName, mode); } -// dtor -wxFile::~wxFile() -{ - Close(); -} - // create the file, fail if it already exists and bOverwrite bool wxFile::Create(const wxChar *szFileName, bool bOverwrite, int accessMode) { @@ -349,25 +349,25 @@ off_t wxFile::Seek(off_t ofs, wxSeekMode mode) { wxASSERT( IsOpened() ); - int flag = -1; + int origin; switch ( mode ) { + default: + wxFAIL_MSG(_("unknown seek origin")); + case wxFromStart: - flag = SEEK_SET; + origin = SEEK_SET; break; case wxFromCurrent: - flag = SEEK_CUR; + origin = SEEK_CUR; break; case wxFromEnd: - flag = SEEK_END; + origin = SEEK_END; break; - - default: - wxFAIL_MSG(_("unknown seek origin")); } - int iRc = lseek(m_fd, ofs, flag); + int iRc = lseek(m_fd, ofs, origin); if ( iRc == -1 ) { wxLogSysError(_("can't seek on file descriptor %d"), m_fd); return wxInvalidOffset; @@ -481,21 +481,29 @@ bool wxTempFile::Open(const wxString& strName) // different partitions for example). Unfortunately, the only standard // (POSIX) temp file creation function tmpnam() can't do it. #if defined(__UNIX__) || defined(__WXSTUBS__)|| defined( __WXMAC__ ) - static const wxChar *szMktempSuffix = _T("XXXXXX"); + static const wxChar *szMktempSuffix = wxT("XXXXXX"); m_strTemp << strName << szMktempSuffix; - mktemp(MBSTRINGCAST m_strTemp.mb_str()); // will do because length doesn't change + // can use the cast because length doesn't change + mktemp(wxMBSTRINGCAST m_strTemp.mb_str()); +#elif defined(__WXPM__) + // for now just create a file + // future enhancements can be to set some extended attributes for file systems + // OS/2 supports that have them (HPFS, FAT32) and security (HPFS386) + static const wxChar *szMktempSuffix = wxT("XXX"); + m_strTemp << strName << szMktempSuffix; + mkdir(m_strTemp.GetWriteBuf(MAX_PATH)); #else // Windows wxString strPath; wxSplitPath(strName, &strPath, NULL, NULL); if ( strPath.IsEmpty() ) - strPath = _T('.'); // GetTempFileName will fail if we give it empty string + strPath = wxT('.'); // GetTempFileName will fail if we give it empty string #ifdef __WIN32__ - if ( !GetTempFileName(strPath, _T("wx_"),0, m_strTemp.GetWriteBuf(MAX_PATH)) ) + if ( !GetTempFileName(strPath, wxT("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 wxChar*) strPath, _T("wx_"),0, m_strTemp.GetWriteBuf(MAX_PATH)) ) + if ( !GetTempFileName((BYTE) (DWORD)(const wxChar*) strPath, wxT("wx_"),0, m_strTemp.GetWriteBuf(MAX_PATH)) ) #endif - wxLogLastError(_T("GetTempFileName")); + wxLogLastError(wxT("GetTempFileName")); m_strTemp.UngetWriteBuf(); #endif // Windows/Unix @@ -573,3 +581,6 @@ void wxTempFile::Discard() if ( remove(m_strTemp.fn_str()) != 0 ) wxLogSysError(_("can't remove temporary file '%s'"), m_strTemp.c_str()); } + +#endif +