comparison 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
comparison
equal deleted inserted replaced
315:2294f3a6f136 316:fb513e10174e
1
2 #include "Vfs_File.h" 1 #include "Vfs_File.h"
3 2
4 #include "audacious/vfs.h" 3 Vfs_File_Reader::Vfs_File_Reader() : file_( 0 ), owned_file_( 0 ) { }
5
6 Vfs_File_Reader::Vfs_File_Reader() : file_( NULL ) { }
7 4
8 Vfs_File_Reader::~Vfs_File_Reader() { close(); } 5 Vfs_File_Reader::~Vfs_File_Reader() { close(); }
9 6
7 void Vfs_File_Reader::reset( VFSFile* f )
8 {
9 close();
10 file_ = f;
11 }
12
10 Vfs_File_Reader::error_t Vfs_File_Reader::open( const char* path ) 13 Vfs_File_Reader::error_t Vfs_File_Reader::open( const char* path )
11 { 14 {
12 file_ = vfs_fopen( path, "rb" ); 15 close();
16 file_ = owned_file_ = vfs_fopen( path, "rb" );
13 if ( !file_ ) 17 if ( !file_ )
14 return "Couldn't open file"; 18 return "Couldn't open file";
15 return 0; 19 return 0;
16 } 20 }
17 21
18 long Vfs_File_Reader::size() const 22 long Vfs_File_Reader::size() const
19 { 23 {
20 long pos = tell(); 24 long pos = tell();
21 vfs_fseek( (VFSFile*) file_, 0, SEEK_END ); 25 vfs_fseek( file_, 0, SEEK_END );
22 long result = tell(); 26 long result = tell();
23 vfs_fseek( (VFSFile*) file_, pos, SEEK_SET ); 27 vfs_fseek( file_, pos, SEEK_SET );
24 return result; 28 return result;
25 } 29 }
26 30
27 long Vfs_File_Reader::read_avail( void* p, long s ) 31 long Vfs_File_Reader::read_avail( void* p, long s )
28 { 32 {
29 return (long) vfs_fread( p, 1, s, (VFSFile*) file_ ); 33 return (long) vfs_fread( p, 1, s, file_ );
30 } 34 }
31 35
32 long Vfs_File_Reader::tell() const 36 long Vfs_File_Reader::tell() const
33 { 37 {
34 return vfs_ftell( (VFSFile*) file_ ); 38 return vfs_ftell( file_ );
35 } 39 }
36 40
37 Vfs_File_Reader::error_t Vfs_File_Reader::seek( long n ) 41 Vfs_File_Reader::error_t Vfs_File_Reader::seek( long n )
38 { 42 {
39 if ( n == 0 ) // optimization 43 if ( n == 0 ) // optimization
40 vfs_rewind( (VFSFile*) file_ ); 44 vfs_rewind( file_ );
41 else if ( vfs_fseek( (VFSFile*) file_, n, SEEK_SET ) != 0 ) 45 else if ( vfs_fseek( file_, n, SEEK_SET ) != 0 )
42 return "Error seeking in file"; 46 return "Error seeking in file";
43 return 0; 47 return 0;
44 } 48 }
45 49
46 void Vfs_File_Reader::close() 50 void Vfs_File_Reader::close()
47 { 51 {
48 if ( file_ ) 52 file_ = 0;
53 if ( owned_file_ )
49 { 54 {
50 vfs_fclose( (VFSFile*) file_ ); 55 vfs_fclose( owned_file_ );
51 file_ = 0; 56 owned_file_ = 0;
52 } 57 }
53 } 58 }
54