#include "VFSDefines.h" #include "VFSInternal.h" #include "VFSFileFuncs.h" #include VFS_NAMESPACE_START // Compile time assertion to make sure things work as expected #if defined(VFS_LARGEFILE_SUPPORT) TTVFS_UNUSED static void _dummy_() { // Ensure vfspos is 64 bits in largefile mode. switch(0) { case 0:; case 4: case sizeof(vfspos): ; } #ifndef _MSC_VER // Ensure the _FILE_OFFSET_BITS=64 setting in VFSInternal.h is effective switch(0) { case 0:; case 4: case sizeof(off_t): ; } #endif } #endif void *real_fopen(const char *name, const char *mode) { return fopen(name, mode); } int real_fclose(void *fh) { return fclose((FILE*)fh); } int real_fseek(void *fh, vfspos offset, int origin) { #ifdef VFS_LARGEFILE_SUPPORT # ifdef _MSC_VER return _fseeki64((FILE*)fh, offset, origin); # else return fseeko((FILE*)fh, offset, origin); # endif #else return fseek((FILE*)fh, offset, origin); #endif } vfspos real_ftell(void *fh) { #ifdef VFS_LARGEFILE_SUPPORT # ifdef _MSC_VER return _ftelli64((FILE*)fh); # else return ftello((FILE*)fh); # endif #else return ftell((FILE*)fh); #endif } size_t real_fread(void *ptr, size_t size, size_t count, void *fh) { return fread(ptr, size, count, (FILE*)fh); } size_t real_fwrite(const void *ptr, size_t size, size_t count, void *fh) { return fwrite(ptr, size, count, (FILE*)fh); } int real_feof(void *fh) { return feof((FILE*)fh); } int real_fflush(void *fh) { return fflush((FILE*)fh); } VFS_NAMESPACE_END