MikMod hacks removal, stage 2: getting rid of unnecessary SDL_RWops and uio
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1958 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -31,8 +31,6 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "port.h"
|
||||
#include "libs/uio.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -326,8 +324,8 @@ typedef struct SAMPLE {
|
||||
|
||||
/* Sample functions */
|
||||
|
||||
MIKMODAPI extern SAMPLE *Sample_Load(uio_DirHandle*,CHAR*);
|
||||
MIKMODAPI extern SAMPLE *Sample_LoadFP(uio_Stream*);
|
||||
MIKMODAPI extern SAMPLE *Sample_Load(CHAR*);
|
||||
MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*);
|
||||
MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*);
|
||||
MIKMODAPI extern void Sample_Free(SAMPLE*);
|
||||
MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE);
|
||||
@@ -523,17 +521,10 @@ MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */
|
||||
* ========== Module player
|
||||
*/
|
||||
|
||||
/* SDL_RWops compatability */
|
||||
#ifdef USE_RWOPS
|
||||
#include "port.h"
|
||||
#include SDL_INCLUDE(SDL_rwops.h)
|
||||
MIKMODAPI extern MODULE* Player_LoadRW(SDL_RWops*,int,BOOL);
|
||||
#endif /* USE_RWOPS */
|
||||
/* End SDL_RWops compatability */
|
||||
MIKMODAPI extern MODULE* Player_Load(uio_DirHandle *, CHAR*,int,BOOL);
|
||||
MIKMODAPI extern MODULE* Player_LoadFP(uio_Stream*,int,BOOL);
|
||||
MIKMODAPI extern MODULE* Player_Load(CHAR*,int,BOOL);
|
||||
MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,BOOL);
|
||||
MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,BOOL);
|
||||
MIKMODAPI extern CHAR* Player_LoadTitle(uio_DirHandle*,CHAR*);
|
||||
MIKMODAPI extern CHAR* Player_LoadTitle(CHAR*);
|
||||
MIKMODAPI extern void Player_Free(MODULE*);
|
||||
MIKMODAPI extern void Player_Start(MODULE*);
|
||||
MIKMODAPI extern BOOL Player_Active(void);
|
||||
|
||||
@@ -33,13 +33,11 @@
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
//#if defined(__OS2__)||defined(__EMX__)||defined(WIN32)
|
||||
//#define strcasecmp(s,t) stricmp(s,t)
|
||||
//#endif
|
||||
#if defined(__OS2__)||defined(__EMX__)||defined(_MSC_VER)
|
||||
#define strcasecmp(s,t) stricmp(s,t)
|
||||
#endif
|
||||
|
||||
#include "mikmod_build.h"
|
||||
#include "port.h"
|
||||
#include "libs/uio.h"
|
||||
|
||||
#ifdef macintosh
|
||||
#ifndef __MWERKS__
|
||||
@@ -139,20 +137,13 @@ DECLARE_MUTEX(vars);
|
||||
|
||||
/*========== Portable file I/O */
|
||||
|
||||
/* SDL_RWops compatability */
|
||||
#ifdef USE_RWOPS
|
||||
extern MREADER *_mm_new_rwops_reader(SDL_RWops * rw);
|
||||
extern void _mm_delete_rwops_reader (MREADER*);
|
||||
#endif /* USE_RWOPS */
|
||||
/* End SDL_RWops compatability */
|
||||
|
||||
extern MREADER* _mm_new_file_reader(uio_Stream* fp);
|
||||
extern MREADER* _mm_new_file_reader(FILE* fp);
|
||||
extern void _mm_delete_file_reader(MREADER*);
|
||||
|
||||
extern MWRITER* _mm_new_file_writer(uio_Stream *fp);
|
||||
extern MWRITER* _mm_new_file_writer(FILE *fp);
|
||||
extern void _mm_delete_file_writer(MWRITER*);
|
||||
|
||||
extern BOOL _mm_FileExists(uio_DirHandle *dir,CHAR *fname);
|
||||
extern BOOL _mm_FileExists(CHAR *fname);
|
||||
|
||||
#define _mm_write_SBYTE(x,y) y->Put(y,(int)x)
|
||||
#define _mm_write_UBYTE(x,y) y->Put(y,(int)x)
|
||||
@@ -173,7 +164,7 @@ extern BOOL _mm_FileExists(uio_DirHandle *dir,CHAR *fname);
|
||||
|
||||
extern void _mm_iobase_setcur(MREADER*);
|
||||
extern void _mm_iobase_revert(void);
|
||||
extern uio_Stream *_mm_fopen(uio_DirHandle *,CHAR*,CHAR*);
|
||||
extern FILE *_mm_fopen(CHAR*,CHAR*);
|
||||
extern void _mm_write_string(CHAR*,MWRITER*);
|
||||
extern int _mm_read_string (CHAR*,int,MREADER*);
|
||||
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "mikmod_internals.h"
|
||||
#include "port.h"
|
||||
#include "libs/uio.h"
|
||||
|
||||
|
||||
MREADER *modreader;
|
||||
@@ -374,20 +372,20 @@ static CHAR* Player_LoadTitle_internal(MREADER *reader)
|
||||
return l->LoadTitle();
|
||||
}
|
||||
|
||||
CHAR* Player_LoadTitle(uio_DirHandle *dir, CHAR* filename)
|
||||
CHAR* Player_LoadTitle(CHAR* filename)
|
||||
{
|
||||
CHAR* result=NULL;
|
||||
uio_Stream* fp;
|
||||
FILE* fp;
|
||||
MREADER* reader;
|
||||
|
||||
if((fp=_mm_fopen(dir, filename,"rb"))) {
|
||||
if((fp=_mm_fopen(filename,"rb"))) {
|
||||
if((reader=_mm_new_file_reader(fp))) {
|
||||
MUTEX_LOCK(lists);
|
||||
result=Player_LoadTitle_internal(reader);
|
||||
MUTEX_UNLOCK(lists);
|
||||
_mm_delete_file_reader(reader);
|
||||
}
|
||||
uio_fclose(fp);
|
||||
fclose(fp);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -509,7 +507,7 @@ MODULE* Player_LoadGeneric(MREADER *reader,int maxchan,BOOL curious)
|
||||
|
||||
/* Loads a module given a file pointer.
|
||||
File is loaded from the current file seek position. */
|
||||
MODULE* Player_LoadFP(uio_Stream* fp,int maxchan,BOOL curious)
|
||||
MODULE* Player_LoadFP(FILE* fp,int maxchan,BOOL curious)
|
||||
{
|
||||
MODULE* result=NULL;
|
||||
struct MREADER* reader=_mm_new_file_reader (fp);
|
||||
@@ -523,36 +521,16 @@ MODULE* Player_LoadFP(uio_Stream* fp,int maxchan,BOOL curious)
|
||||
|
||||
/* Open a module via its filename. The loader will initialize the specified
|
||||
song-player 'player'. */
|
||||
MODULE* Player_Load(uio_DirHandle *dir,CHAR* filename,int maxchan,BOOL curious)
|
||||
MODULE* Player_Load(CHAR* filename,int maxchan,BOOL curious)
|
||||
{
|
||||
uio_Stream *fp;
|
||||
FILE *fp;
|
||||
MODULE *mf=NULL;
|
||||
|
||||
if((fp=_mm_fopen(dir, filename,"rb"))) {
|
||||
if((fp=_mm_fopen(filename,"rb"))) {
|
||||
mf=Player_LoadFP(fp,maxchan,curious);
|
||||
uio_fclose(fp);
|
||||
fclose(fp);
|
||||
}
|
||||
return mf;
|
||||
}
|
||||
|
||||
/* SDL_RWops compatability */
|
||||
#ifdef USE_RWOPS
|
||||
|
||||
/* Open a module via an SDL_rwop. The loader will initialize the specified
|
||||
song-player 'player'. */
|
||||
MODULE* Player_LoadRW(SDL_RWops *rw,int maxchan,BOOL curious)
|
||||
{
|
||||
MODULE* result=NULL;
|
||||
struct MREADER* reader=_mm_new_rwops_reader (rw);
|
||||
|
||||
if (reader) {
|
||||
result=Player_LoadGeneric(reader,maxchan,curious);
|
||||
_mm_delete_rwops_reader(reader);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif /* USE_RWOPS */
|
||||
/* End SDL_RWops compatability */
|
||||
|
||||
/* ex:set ts=4: */
|
||||
|
||||
@@ -62,103 +62,23 @@
|
||||
static long _mm_iobase=0,temp_iobase=0;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
This section is added to use SDL_rwops for IO
|
||||
|
||||
-Matt Campbell (matt@campbellhome.dhs.org) April 2000
|
||||
|
||||
*/
|
||||
|
||||
#ifdef USE_RWOPS
|
||||
|
||||
typedef struct MRWOPSREADER {
|
||||
MREADER core;
|
||||
SDL_RWops* rw;
|
||||
int end;
|
||||
} MRWOPSREADER;
|
||||
|
||||
static BOOL _mm_RWopsReader_Eof(MREADER* reader)
|
||||
FILE* _mm_fopen(CHAR* fname,CHAR* attrib)
|
||||
{
|
||||
if ( ((MRWOPSREADER*)reader)->end ==
|
||||
SDL_RWtell(((MRWOPSREADER*)reader)->rw) ) return 1;
|
||||
else return 0;
|
||||
}
|
||||
FILE *fp;
|
||||
|
||||
static BOOL _mm_RWopsReader_Read(MREADER* reader,void* ptr,size_t size)
|
||||
{
|
||||
return SDL_RWread(((MRWOPSREADER*)reader)->rw, ptr, size, 1);
|
||||
}
|
||||
|
||||
static int _mm_RWopsReader_Get(MREADER* reader)
|
||||
{
|
||||
char buf;
|
||||
if ( SDL_RWread(((MRWOPSREADER*)reader)->rw, &buf, 1, 1) != 1 ) return EOF;
|
||||
else return (int)buf;
|
||||
}
|
||||
|
||||
static BOOL _mm_RWopsReader_Seek(MREADER* reader,long offset,int whence)
|
||||
{
|
||||
return SDL_RWseek(((MRWOPSREADER*)reader)->rw,
|
||||
(whence==SEEK_SET)?offset+_mm_iobase:offset,whence);
|
||||
}
|
||||
|
||||
static long _mm_RWopsReader_Tell(MREADER* reader)
|
||||
{
|
||||
return SDL_RWtell(((MRWOPSREADER*)reader)->rw) - _mm_iobase;
|
||||
}
|
||||
|
||||
MREADER *_mm_new_rwops_reader(SDL_RWops * rw)
|
||||
{
|
||||
int here;
|
||||
MRWOPSREADER* reader=(MRWOPSREADER*)_mm_malloc(sizeof(MRWOPSREADER));
|
||||
if (reader) {
|
||||
reader->core.Eof =&_mm_RWopsReader_Eof;
|
||||
reader->core.Read=&_mm_RWopsReader_Read;
|
||||
reader->core.Get =&_mm_RWopsReader_Get;
|
||||
reader->core.Seek=&_mm_RWopsReader_Seek;
|
||||
reader->core.Tell=&_mm_RWopsReader_Tell;
|
||||
reader->rw=rw;
|
||||
|
||||
/* RWops does not explicitly support an eof check, so we shall find
|
||||
the end manually - this requires seek support for the RWop */
|
||||
here = SDL_RWtell(rw);
|
||||
reader->end = SDL_RWseek(rw, 0, SEEK_END);
|
||||
SDL_RWseek(rw, here, SEEK_SET); /* Move back */
|
||||
}
|
||||
return (MREADER*)reader;
|
||||
}
|
||||
|
||||
void _mm_delete_rwops_reader (MREADER* reader)
|
||||
{
|
||||
if(reader) free(reader);
|
||||
}
|
||||
|
||||
#endif /* USE_RWOPS */
|
||||
|
||||
/*
|
||||
|
||||
End SDL_rwops section
|
||||
|
||||
*/
|
||||
|
||||
uio_Stream* _mm_fopen(uio_DirHandle* dir,CHAR* fname,CHAR* attrib)
|
||||
{
|
||||
uio_Stream *fp;
|
||||
|
||||
if(!(fp=uio_fopen(dir,fname,attrib))) {
|
||||
if(!(fp=fopen(fname,attrib))) {
|
||||
_mm_errno = MMERR_OPENING_FILE;
|
||||
if(_mm_errorhandler) _mm_errorhandler();
|
||||
}
|
||||
return fp;
|
||||
}
|
||||
|
||||
BOOL _mm_FileExists(uio_DirHandle* dir,CHAR* fname)
|
||||
BOOL _mm_FileExists(CHAR* fname)
|
||||
{
|
||||
uio_Stream *fp;
|
||||
FILE *fp;
|
||||
|
||||
if(!(fp=uio_fopen(dir, fname,"rb"))) return 0;
|
||||
uio_fclose(fp);
|
||||
if(!(fp=fopen(fname,"r"))) return 0;
|
||||
fclose(fp);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -179,37 +99,37 @@ void _mm_iobase_revert(void)
|
||||
/*========== File Reader */
|
||||
|
||||
typedef struct MFILEREADER {
|
||||
MREADER core;
|
||||
uio_Stream* file;
|
||||
MREADER core;
|
||||
FILE* file;
|
||||
} MFILEREADER;
|
||||
|
||||
static BOOL _mm_FileReader_Eof(MREADER* reader)
|
||||
{
|
||||
return uio_feof(((MFILEREADER*)reader)->file);
|
||||
return feof(((MFILEREADER*)reader)->file);
|
||||
}
|
||||
|
||||
static BOOL _mm_FileReader_Read(MREADER* reader,void* ptr,size_t size)
|
||||
{
|
||||
return uio_fread(ptr,size,1,((MFILEREADER*)reader)->file);
|
||||
return fread(ptr,size,1,((MFILEREADER*)reader)->file);
|
||||
}
|
||||
|
||||
static int _mm_FileReader_Get(MREADER* reader)
|
||||
{
|
||||
return uio_fgetc(((MFILEREADER*)reader)->file);
|
||||
return fgetc(((MFILEREADER*)reader)->file);
|
||||
}
|
||||
|
||||
static BOOL _mm_FileReader_Seek(MREADER* reader,long offset,int whence)
|
||||
{
|
||||
return uio_fseek(((MFILEREADER*)reader)->file,
|
||||
return fseek(((MFILEREADER*)reader)->file,
|
||||
(whence==SEEK_SET)?offset+_mm_iobase:offset,whence);
|
||||
}
|
||||
|
||||
static long _mm_FileReader_Tell(MREADER* reader)
|
||||
{
|
||||
return uio_ftell(((MFILEREADER*)reader)->file)-_mm_iobase;
|
||||
return ftell(((MFILEREADER*)reader)->file)-_mm_iobase;
|
||||
}
|
||||
|
||||
MREADER *_mm_new_file_reader(uio_Stream* fp)
|
||||
MREADER *_mm_new_file_reader(FILE* fp)
|
||||
{
|
||||
MFILEREADER* reader=(MFILEREADER*)_mm_malloc(sizeof(MFILEREADER));
|
||||
if (reader) {
|
||||
@@ -231,31 +151,31 @@ void _mm_delete_file_reader (MREADER* reader)
|
||||
/*========== File Writer */
|
||||
|
||||
typedef struct MFILEWRITER {
|
||||
MWRITER core;
|
||||
uio_Stream* file;
|
||||
MWRITER core;
|
||||
FILE* file;
|
||||
} MFILEWRITER;
|
||||
|
||||
static BOOL _mm_FileWriter_Seek(MWRITER* writer,long offset,int whence)
|
||||
{
|
||||
return uio_fseek(((MFILEWRITER*)writer)->file,offset,whence);
|
||||
return fseek(((MFILEWRITER*)writer)->file,offset,whence);
|
||||
}
|
||||
|
||||
static long _mm_FileWriter_Tell(MWRITER* writer)
|
||||
{
|
||||
return uio_ftell(((MFILEWRITER*)writer)->file);
|
||||
return ftell(((MFILEWRITER*)writer)->file);
|
||||
}
|
||||
|
||||
static BOOL _mm_FileWriter_Write(MWRITER* writer,void* ptr,size_t size)
|
||||
{
|
||||
return (uio_fwrite(ptr,size,1,((MFILEWRITER*)writer)->file)==size);
|
||||
return (fwrite(ptr,size,1,((MFILEWRITER*)writer)->file)==size);
|
||||
}
|
||||
|
||||
static BOOL _mm_FileWriter_Put(MWRITER* writer,int value)
|
||||
{
|
||||
return uio_fputc(value,((MFILEWRITER*)writer)->file);
|
||||
return fputc(value,((MFILEWRITER*)writer)->file);
|
||||
}
|
||||
|
||||
MWRITER *_mm_new_file_writer(uio_Stream* fp)
|
||||
MWRITER *_mm_new_file_writer(FILE* fp)
|
||||
{
|
||||
MFILEWRITER* writer=(MFILEWRITER*)_mm_malloc(sizeof(MFILEWRITER));
|
||||
if (writer) {
|
||||
|
||||
@@ -143,7 +143,7 @@ SAMPLE* Sample_LoadGeneric(MREADER* reader)
|
||||
return result;
|
||||
}
|
||||
|
||||
SAMPLE* Sample_LoadFP(uio_Stream *fp)
|
||||
SAMPLE* Sample_LoadFP(FILE *fp)
|
||||
{
|
||||
SAMPLE* result=NULL;
|
||||
MREADER* reader;
|
||||
@@ -155,15 +155,15 @@ SAMPLE* Sample_LoadFP(uio_Stream *fp)
|
||||
return result;
|
||||
}
|
||||
|
||||
SAMPLE* Sample_Load(uio_DirHandle* dir,CHAR* filename)
|
||||
SAMPLE* Sample_Load(CHAR* filename)
|
||||
{
|
||||
uio_Stream *fp;
|
||||
FILE *fp;
|
||||
SAMPLE *si=NULL;
|
||||
|
||||
if(!(md_mode & DMODE_SOFT_SNDFX)) return NULL;
|
||||
if((fp=_mm_fopen(dir,filename,"rb"))) {
|
||||
if((fp=_mm_fopen(filename,"rb"))) {
|
||||
si = Sample_LoadFP(fp);
|
||||
uio_fclose(fp);
|
||||
fclose(fp);
|
||||
}
|
||||
return si;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user