void file::g_transfer_file(const service_ptr_t<file> & p_from,const service_ptr_t<file> & p_to,abort_callback & p_abort) { t_filesize length = p_from->get_size_ex(p_abort); p_from->seek(0,p_abort); p_to->seek(0,p_abort); p_to->set_eof(p_abort); if (length > 0) { g_transfer_object(p_from,p_to,length,p_abort); } }
void open( service_ptr_t<file> m_file, const char * p_path, t_input_open_reason p_reason, abort_callback & p_abort ) { if ( p_reason == input_open_info_write ) throw exception_io_data(); input_open_file_helper( m_file, p_path, p_reason, p_abort ); m_stats = m_file->get_stats( p_abort ); t_uint8 * ptr; unsigned size; t_filesize size64 = m_file->get_size_ex( p_abort ); if ( size64 > ( 1 << 24 ) ) throw exception_io_data(); size = (unsigned) size64; file_buffer.set_size( size ); ptr = file_buffer.get_ptr(); m_file->read_object( ptr, size, p_abort ); m_player = ModPlug_Load(ptr, size); if ( !m_player ) throw exception_io_data(); }
foobar_File_Reader::foobar_File_Reader( const service_ptr_t<file> & p_file, abort_callback & p_abort ) : m_file( p_file ), m_abort( p_abort ) { set_size( p_file->get_size_ex( p_abort ) ); set_tell( p_file->get_position( p_abort ) ); }