// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "file.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
};
#endif // W_OK
-// there is no distinction between text and binary files under Unix, so define
-// O_BINARY as 0 if the system headers don't do it already
-#if defined(__UNIX__) && !defined(O_BINARY)
- #define O_BINARY (0)
-#endif //__UNIX__
-
#ifdef __SALFORDC__
#include <unix.h>
#endif
-#ifndef MAX_PATH
- #define MAX_PATH 512
-#endif
-
// some broken compilers don't have 3rd argument in open() and creat()
#ifdef __SALFORDC__
#define ACCESS(access)
#include "wx/file.h"
#include "wx/filefn.h"
+// there is no distinction between text and binary files under Unix, so define
+// O_BINARY as 0 if the system headers don't do it already
+#if defined(__UNIX__) && !defined(O_BINARY)
+ #define O_BINARY (0)
+#endif //__UNIX__
+
#ifdef __WXMSW__
#include "wx/msw/mslu.h"
#endif
#include "wx/msw/private.h"
#endif
+#ifndef MAX_PATH
+ #define MAX_PATH 512
+#endif
// ============================================================================
// implementation of wxFile
wxLogSysError(_("can't create file '%s'"), szFileName);
return false;
}
- else
- {
- Attach(fd);
- return true;
- }
+
+ Attach(fd);
+ return true;
}
// open the file
wxLogSysError(_("can't open file '%s'"), szFileName);
return false;
}
- else {
- Attach(fd);
- return true;
- }
+
+ Attach(fd);
+ return true;
}
// close
// flush
bool wxFile::Flush()
{
- if ( IsOpened() ) {
-#if defined(__VISUALC__) || wxHAVE_FSYNC
+#ifdef HAVE_FSYNC
+ // fsync() only works on disk files and returns errors for pipes, don't
+ // call it then
+ if ( IsOpened() && GetKind() == wxFILE_KIND_DISK )
+ {
if ( wxFsync(m_fd) == -1 )
{
wxLogSysError(_("can't flush file descriptor %d"), m_fd);
return false;
}
-#else // no fsync
- // just do nothing
-#endif // fsync
}
+#endif // HAVE_FSYNC
return true;
}
// seek
wxFileOffset wxFile::Seek(wxFileOffset ofs, wxSeekMode mode)
{
- wxASSERT( IsOpened() );
+ wxASSERT_MSG( IsOpened(), _T("can't seek on closed file") );
+ wxCHECK_MSG( ofs != wxInvalidOffset || mode != wxFromStart,
+ wxInvalidOffset,
+ _T("invalid absolute file offset") );
int origin;
switch ( mode ) {
break;
}
- if (ofs == wxInvalidOffset)
- {
- wxLogSysError(_("can't seek on file descriptor %d, large files support is not enabled."), m_fd);
- return wxInvalidOffset;
- }
wxFileOffset iRc = wxSeek(m_fd, ofs, origin);
if ( iRc == wxInvalidOffset )
{