summaryrefslogtreecommitdiff
path: root/plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp')
-rw-r--r--plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp315
1 files changed, 0 insertions, 315 deletions
diff --git a/plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp b/plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp
deleted file mode 100644
index 5bbfbf55..00000000
--- a/plugins/gme/game-music-emu-svn/gme/Data_Reader.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-// File_Extractor 0.4.0. http://www.slack.net/~ant/
-
-#include "Data_Reader.h"
-
-#include "blargg_endian.h"
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-
-/* Copyright (C) 2005-2006 Shay Green. This module is free software; you
-can redistribute it and/or modify it under the terms of the GNU Lesser
-General Public License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version. This
-module is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-details. You should have received a copy of the GNU Lesser General Public
-License along with this module; if not, write to the Free Software Foundation,
-Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
-
-#include "blargg_source.h"
-
-const char Data_Reader::eof_error [] = "Unexpected end of file";
-
-blargg_err_t Data_Reader::read( void* p, long s )
-{
- long result = read_avail( p, s );
- if ( result != s )
- {
- if ( result >= 0 && result < s )
- return eof_error;
-
- return "Read error";
- }
-
- return 0;
-}
-
-blargg_err_t Data_Reader::skip( long count )
-{
- char buf [512];
- while ( count )
- {
- long n = sizeof buf;
- if ( n > count )
- n = count;
- count -= n;
- RETURN_ERR( read( buf, n ) );
- }
- return 0;
-}
-
-long File_Reader::remain() const { return size() - tell(); }
-
-blargg_err_t File_Reader::skip( long n )
-{
- assert( n >= 0 );
- if ( !n )
- return 0;
- return seek( tell() + n );
-}
-
-// Subset_Reader
-
-Subset_Reader::Subset_Reader( Data_Reader* dr, long size )
-{
- in = dr;
- remain_ = dr->remain();
- if ( remain_ > size )
- remain_ = size;
-}
-
-long Subset_Reader::remain() const { return remain_; }
-
-long Subset_Reader::read_avail( void* p, long s )
-{
- if ( s > remain_ )
- s = remain_;
- remain_ -= s;
- return in->read_avail( p, s );
-}
-
-// Remaining_Reader
-
-Remaining_Reader::Remaining_Reader( void const* h, long size, Data_Reader* r )
-{
- header = (char const*) h;
- header_end = header + size;
- in = r;
-}
-
-long Remaining_Reader::remain() const { return header_end - header + in->remain(); }
-
-long Remaining_Reader::read_first( void* out, long count )
-{
- long first = header_end - header;
- if ( first )
- {
- if ( first > count )
- first = count;
- void const* old = header;
- header += first;
- memcpy( out, old, first );
- }
- return first;
-}
-
-long Remaining_Reader::read_avail( void* out, long count )
-{
- long first = read_first( out, count );
- long second = count - first;
- if ( second )
- {
- second = in->read_avail( (char*) out + first, second );
- if ( second <= 0 )
- return second;
- }
- return first + second;
-}
-
-blargg_err_t Remaining_Reader::read( void* out, long count )
-{
- long first = read_first( out, count );
- long second = count - first;
- if ( !second )
- return 0;
- return in->read( (char*) out + first, second );
-}
-
-// Mem_File_Reader
-
-Mem_File_Reader::Mem_File_Reader( const void* p, long s ) :
- begin( (const char*) p ),
- size_( s )
-{
- pos = 0;
-}
-
-long Mem_File_Reader::size() const { return size_; }
-
-long Mem_File_Reader::read_avail( void* p, long s )
-{
- long r = remain();
- if ( s > r )
- s = r;
- memcpy( p, begin + pos, s );
- pos += s;
- return s;
-}
-
-long Mem_File_Reader::tell() const { return pos; }
-
-blargg_err_t Mem_File_Reader::seek( long n )
-{
- if ( n > size_ )
- return eof_error;
- pos = n;
- return 0;
-}
-
-// Callback_Reader
-
-Callback_Reader::Callback_Reader( callback_t c, long size, void* d ) :
- callback( c ),
- data( d )
-{
- remain_ = size;
-}
-
-long Callback_Reader::remain() const { return remain_; }
-
-long Callback_Reader::read_avail( void* out, long count )
-{
- if ( count > remain_ )
- count = remain_;
- if ( Callback_Reader::read( out, count ) )
- count = -1;
- return count;
-}
-
-blargg_err_t Callback_Reader::read( void* out, long count )
-{
- if ( count > remain_ )
- return eof_error;
- return callback( data, out, count );
-}
-
-// Std_File_Reader
-
-Std_File_Reader::Std_File_Reader() : file_( 0 ) { }
-
-Std_File_Reader::~Std_File_Reader() { close(); }
-
-blargg_err_t Std_File_Reader::open( const char* path )
-{
- file_ = fopen( path, "rb" );
- if ( !file_ )
- return "Couldn't open file";
- return 0;
-}
-
-long Std_File_Reader::size() const
-{
- long pos = tell();
- fseek( (FILE*) file_, 0, SEEK_END );
- long result = tell();
- fseek( (FILE*) file_, pos, SEEK_SET );
- return result;
-}
-
-long Std_File_Reader::read_avail( void* p, long s )
-{
- return fread( p, 1, s, (FILE*) file_ );
-}
-
-blargg_err_t Std_File_Reader::read( void* p, long s )
-{
- if ( s == (long) fread( p, 1, s, (FILE*) file_ ) )
- return 0;
- if ( feof( (FILE*) file_ ) )
- return eof_error;
- return "Couldn't read from file";
-}
-
-long Std_File_Reader::tell() const { return ftell( (FILE*) file_ ); }
-
-blargg_err_t Std_File_Reader::seek( long n )
-{
- if ( !fseek( (FILE*) file_, n, SEEK_SET ) )
- return 0;
- if ( n > size() )
- return eof_error;
- return "Error seeking in file";
-}
-
-void Std_File_Reader::close()
-{
- if ( file_ )
- {
- fclose( (FILE*) file_ );
- file_ = 0;
- }
-}
-
-// Gzip_File_Reader
-
-#ifdef HAVE_ZLIB_H
-
-#include "zlib.h"
-
-static const char* get_gzip_eof( const char* path, long* eof )
-{
- FILE* file = fopen( path, "rb" );
- if ( !file )
- return "Couldn't open file";
-
- unsigned char buf [4];
- if ( fread( buf, 2, 1, file ) > 0 && buf [0] == 0x1F && buf [1] == 0x8B )
- {
- fseek( file, -4, SEEK_END );
- fread( buf, 4, 1, file );
- *eof = get_le32( buf );
- }
- else
- {
- fseek( file, 0, SEEK_END );
- *eof = ftell( file );
- }
- const char* err = (ferror( file ) || feof( file )) ? "Couldn't get file size" : 0;
- fclose( file );
- return err;
-}
-
-Gzip_File_Reader::Gzip_File_Reader() : file_( 0 ) { }
-
-Gzip_File_Reader::~Gzip_File_Reader() { close(); }
-
-blargg_err_t Gzip_File_Reader::open( const char* path )
-{
- close();
-
- RETURN_ERR( get_gzip_eof( path, &size_ ) );
-
- file_ = gzopen( path, "rb" );
- if ( !file_ )
- return "Couldn't open file";
-
- return 0;
-}
-
-long Gzip_File_Reader::size() const { return size_; }
-
-long Gzip_File_Reader::read_avail( void* p, long s ) { return gzread( file_, p, s ); }
-
-long Gzip_File_Reader::tell() const { return gztell( file_ ); }
-
-blargg_err_t Gzip_File_Reader::seek( long n )
-{
- if ( gzseek( file_, n, SEEK_SET ) >= 0 )
- return 0;
- if ( n > size_ )
- return eof_error;
- return "Error seeking in file";
-}
-
-void Gzip_File_Reader::close()
-{
- if ( file_ )
- {
- gzclose( file_ );
- file_ = 0;
- }
-}
-
-#endif