dethrace/src/DETHRACE/common/drfile.c

78 lines
2.3 KiB
C

#include "drfile.h"
#include "brender.h"
#include "harness/trace.h"
#include "loading.h"
#include <stdlib.h>
// GLOBAL: CARM95 0x000050f020
br_filesystem gFilesystem = {
"Carmageddon",
NULL,
&DRStdioOpenRead,
&DRStdioOpenWrite,
&DRStdioClose,
NULL,
NULL,
NULL,
&DRStdioRead,
&DRStdioWrite,
NULL,
NULL,
NULL
};
// GLOBAL: CARM95 0x00536298
br_filesystem* gOld_file_system;
// IDA: void* __cdecl DRStdioOpenRead(char *name, br_size_t n_magics, br_mode_test_cbfn *identify, int *mode_result)
// FUNCTION: CARM95 0x0044cf30
void* DRStdioOpenRead(char* name, br_size_t n_magics, br_mode_test_cbfn* identify, int* mode_result) {
if (mode_result != NULL) {
*mode_result = 0;
}
return DRfopen(name, "rb");
}
// IDA: void* __cdecl DRStdioOpenWrite(char *name, int mode)
// FUNCTION: CARM95 0x0044cf64
void* DRStdioOpenWrite(char* name, int mode) {
return gOld_file_system->open_write(name, mode);
}
// IDA: void __cdecl DRStdioClose(void *f)
// FUNCTION: CARM95 0x0044cf87
void DRStdioClose(void* f) {
gOld_file_system->close(f);
}
// IDA: br_size_t __cdecl DRStdioRead(void *buf, br_size_t size, unsigned int n, void *f)
// FUNCTION: CARM95 0x0044cfa1
br_size_t DRStdioRead(void* buf, br_size_t size, unsigned int n, void* f) {
br_size_t result;
return gOld_file_system->read(buf, size, n, f);
}
// IDA: br_size_t __cdecl DRStdioWrite(void *buf, br_size_t size, unsigned int n, void *f)
// FUNCTION: CARM95 0x0044cfd5
br_size_t DRStdioWrite(void* buf, br_size_t size, unsigned int n, void* f) {
br_size_t result;
return gOld_file_system->write(buf, size, n, f);
}
// IDA: void __cdecl InstallDRFileCalls()
// FUNCTION: CARM95 0x0044d009
void InstallDRFileCalls(void) {
br_filesystem* temp_system;
temp_system = BrMemAllocate(sizeof(br_filesystem), kMem_temp_fs);
gOld_file_system = BrFilesystemSet(temp_system);
gFilesystem.attributes = gOld_file_system->attributes;
gFilesystem.eof = gOld_file_system->eof;
gFilesystem.getchr = gOld_file_system->getchr;
gFilesystem.putchr = gOld_file_system->putchr;
gFilesystem.getline = gOld_file_system->getline;
gFilesystem.putline = gOld_file_system->putline;
gFilesystem.advance = gOld_file_system->advance;
BrFilesystemSet(&gFilesystem);
BrMemFree(temp_system);
}