Mercurial > audlegacy-plugins
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 |