Mercurial > audlegacy-plugins
diff src/console/Vfs_File.cxx @ 316:fb513e10174e trunk
[svn] - merge libconsole-blargg into mainline libconsole:
+ obsoletes plugins-ugly:sapplug
| author | nenolod |
|---|---|
| date | Thu, 30 Nov 2006 19:54:33 -0800 |
| parents | 3da1b8942b8b |
| children | 986f098da058 |
line wrap: on
line diff
--- a/src/console/Vfs_File.cxx Wed Nov 29 14:42:11 2006 -0800 +++ b/src/console/Vfs_File.cxx Thu Nov 30 19:54:33 2006 -0800 @@ -1,15 +1,19 @@ - #include "Vfs_File.h" -#include "audacious/vfs.h" - -Vfs_File_Reader::Vfs_File_Reader() : file_( NULL ) { } +Vfs_File_Reader::Vfs_File_Reader() : file_( 0 ), owned_file_( 0 ) { } Vfs_File_Reader::~Vfs_File_Reader() { close(); } +void Vfs_File_Reader::reset( VFSFile* f ) +{ + close(); + file_ = f; +} + Vfs_File_Reader::error_t Vfs_File_Reader::open( const char* path ) { - file_ = vfs_fopen( path, "rb" ); + close(); + file_ = owned_file_ = vfs_fopen( path, "rb" ); if ( !file_ ) return "Couldn't open file"; return 0; @@ -18,37 +22,37 @@ long Vfs_File_Reader::size() const { long pos = tell(); - vfs_fseek( (VFSFile*) file_, 0, SEEK_END ); + vfs_fseek( file_, 0, SEEK_END ); long result = tell(); - vfs_fseek( (VFSFile*) file_, pos, SEEK_SET ); + vfs_fseek( file_, pos, SEEK_SET ); return result; } long Vfs_File_Reader::read_avail( void* p, long s ) { - return (long) vfs_fread( p, 1, s, (VFSFile*) file_ ); + return (long) vfs_fread( p, 1, s, file_ ); } long Vfs_File_Reader::tell() const { - return vfs_ftell( (VFSFile*) file_ ); + return vfs_ftell( file_ ); } Vfs_File_Reader::error_t Vfs_File_Reader::seek( long n ) { if ( n == 0 ) // optimization - vfs_rewind( (VFSFile*) file_ ); - else if ( vfs_fseek( (VFSFile*) file_, n, SEEK_SET ) != 0 ) + vfs_rewind( file_ ); + else if ( vfs_fseek( file_, n, SEEK_SET ) != 0 ) return "Error seeking in file"; return 0; } void Vfs_File_Reader::close() { - if ( file_ ) + file_ = 0; + if ( owned_file_ ) { - vfs_fclose( (VFSFile*) file_ ); - file_ = 0; + vfs_fclose( owned_file_ ); + owned_file_ = 0; } } -
