only call fsync() on disk files, otherwise we get an error for pipes under Unix

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-09-19 23:34:07 +00:00
parent 94dadb0a8e
commit 608a34bf5b

View File

@@ -334,17 +334,18 @@ size_t wxFile::Write(const void *pBuf, size_t nCount)
// flush
bool wxFile::Flush()
{
if ( IsOpened() ) {
#if defined(__VISUALC__) || defined(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 // fsync
return true;
}