From 63bb61388acfe23c78f42cc80e539c9aa247bbd9 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 12 Dec 2003 07:47:38 +0000 Subject: [PATCH] add RageFile::Flush --- stepmania/src/RageFile.cpp | 28 ++++++++++++++++---------- stepmania/src/RageFile.h | 5 +++-- stepmania/src/RageFileDriver.h | 1 + stepmania/src/RageFileDriverDirect.cpp | 9 ++++----- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/stepmania/src/RageFile.cpp b/stepmania/src/RageFile.cpp index 49fac52dbd..da777d1b7e 100644 --- a/stepmania/src/RageFile.cpp +++ b/stepmania/src/RageFile.cpp @@ -281,17 +281,6 @@ int RageFile::Read( void *buffer, size_t bytes ) return ret; } -int RageFile::Write( const void *buffer, size_t bytes ) -{ - if( !IsOpen() ) - RageException::Throw("\"%s\" is not open.", GetPath().c_str()); - - if( m_Mode != WRITE ) - RageException::Throw("\"%s\" is not open for writing", GetPath().c_str()); - - return m_File->Write( buffer, bytes ); -} - int RageFile::Seek( int offset ) { if( !IsOpen() ) @@ -395,6 +384,18 @@ int RageFile::Read( CString &buffer, size_t bytes ) return ret; } +int RageFile::Write( const void *buffer, size_t bytes ) +{ + if( !IsOpen() ) + RageException::Throw("\"%s\" is not open.", GetPath().c_str()); + + if( m_Mode != WRITE ) + RageException::Throw("\"%s\" is not open for writing", GetPath().c_str()); + + return m_File->Write( buffer, bytes ); +} + + int RageFile::Write( const void *buffer, size_t bytes, int nmemb ) { /* Simple write. We never return partial writes. */ @@ -404,6 +405,11 @@ int RageFile::Write( const void *buffer, size_t bytes, int nmemb ) return ret / bytes; } +int RageFile::Flush() +{ + return m_File->Flush(); +} + int RageFile::Read( void *buffer, size_t bytes, int nmemb ) { const int ret = Read( buffer, bytes*nmemb ); diff --git a/stepmania/src/RageFile.h b/stepmania/src/RageFile.h index 84e1e598ff..8d5dffde68 100644 --- a/stepmania/src/RageFile.h +++ b/stepmania/src/RageFile.h @@ -57,10 +57,11 @@ public: void Rewind(); /* Raw I/O: */ - int Write( const void *buffer, size_t bytes ); - int Write( const CString& string ) { return Write( string.data(), string.size() ); } int Read( void *buffer, size_t bytes ); int Read( CString &buffer, size_t bytes ); + int Write( const void *buffer, size_t bytes ); + int Write( const CString& string ) { return Write( string.data(), string.size() ); } + int Flush(); /* These are just here to make wrappers (eg. vorbisfile, SDL_rwops) easier. */ int Write( const void *buffer, size_t bytes, int nmemb ); diff --git a/stepmania/src/RageFileDriver.h b/stepmania/src/RageFileDriver.h index ec4dc94e37..ef569db089 100644 --- a/stepmania/src/RageFileDriver.h +++ b/stepmania/src/RageFileDriver.h @@ -46,6 +46,7 @@ public: /* Raw I/O: */ virtual int Read(void *buffer, size_t bytes) = 0; virtual int Write(const void *buffer, size_t bytes) = 0; + virtual int Flush() { return 0; } virtual void Rewind() = 0; virtual RageFileObj *Copy( RageFile &p ) const = 0; }; diff --git a/stepmania/src/RageFileDriverDirect.cpp b/stepmania/src/RageFileDriverDirect.cpp index a77ea0eb71..0933e16163 100644 --- a/stepmania/src/RageFileDriverDirect.cpp +++ b/stepmania/src/RageFileDriverDirect.cpp @@ -182,13 +182,12 @@ private: CString write_buf; - int FlushWrites(); - public: RageFileObjDirect( const CString &path, int fd_, RageFile &p ); virtual ~RageFileObjDirect(); virtual int Read(void *buffer, size_t bytes); virtual int Write(const void *buffer, size_t bytes); + virtual int Flush(); virtual void Rewind(); virtual int Seek( int offset ); virtual int GetFileSize(); @@ -368,7 +367,7 @@ RageFileObjDirect::RageFileObjDirect( const CString &path_, int fd_, RageFile &p RageFileObjDirect::~RageFileObjDirect() { - FlushWrites(); + Flush(); if( fd != -1 ) close( fd ); @@ -386,7 +385,7 @@ int RageFileObjDirect::Read( void *buf, size_t bytes ) return ret; } -int RageFileObjDirect::FlushWrites() +int RageFileObjDirect::Flush() { if( !write_buf.size() ) return 0; @@ -406,7 +405,7 @@ int RageFileObjDirect::Write( const void *buf, size_t bytes ) { if( write_buf.size()+bytes > BUFSIZE ) { - if( FlushWrites() == -1 ) + if( Flush() == -1 ) return -1; }