view src/console/Vfs_File.cxx @ 157:34b6f9d5633a trunk

[svn] - use xmms_show_message() here.
author nenolod
date Tue, 31 Oct 2006 12:45:32 -0800
parents 3da1b8942b8b
children fb513e10174e
line wrap: on
line source


#include "Vfs_File.h"

#include "audacious/vfs.h"

Vfs_File_Reader::Vfs_File_Reader() : file_( NULL ) { }

Vfs_File_Reader::~Vfs_File_Reader() { close(); }

Vfs_File_Reader::error_t Vfs_File_Reader::open( const char* path )
{
	file_ = vfs_fopen( path, "rb" );
	if ( !file_ )
		return "Couldn't open file";
	return 0;
}

long Vfs_File_Reader::size() const
{
	long pos = tell();
	vfs_fseek( (VFSFile*) file_, 0, SEEK_END );
	long result = tell();
	vfs_fseek( (VFSFile*) 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_ );
}

long Vfs_File_Reader::tell() const
{
	return vfs_ftell( (VFSFile*) 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 )
		return "Error seeking in file";
	return 0;
}

void Vfs_File_Reader::close()
{
	if ( file_ )
	{
		vfs_fclose( (VFSFile*) file_ );
		file_ = 0;
	}
}