diff options
author | eray orçunus <erayorcunus@gmail.com> | 2020-05-11 05:55:57 +0300 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2020-05-11 21:00:55 +0300 |
commit | 8a4fa58cd42b7cca4a86fe2d9913b839b554bf10 (patch) | |
tree | 294e44de2168e1b581ba847775d827924c07bf2e /src/fakerw/fake.cpp | |
parent | c66c45f4c8921564dc705c690e25848c330c4b26 (diff) |
Linux build support
Diffstat (limited to 'src/fakerw/fake.cpp')
-rw-r--r-- | src/fakerw/fake.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp index f1531490..50d12b2f 100644 --- a/src/fakerw/fake.cpp +++ b/src/fakerw/fake.cpp @@ -7,6 +7,9 @@ #include <rpskin.h> #include <assert.h> #include <string.h> +#ifndef _WIN32 +#include "crossplatform.h" +#endif using namespace rw; @@ -371,8 +374,24 @@ RwStream *RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, const v StreamFile fakefile; file = rwNewT(StreamFile, 1, 0); memcpy(file, &fakefile, sizeof(StreamFile)); +#ifndef _WIN32 + // Be case-insensitive and fix backslashes (from https://github.com/OneSadCookie/fcaseopen/) + FILE* first = fopen((char*)pData, "r"); + char *r; + if (!first) { + r = (char*)alloca(strlen((char*)pData) + 2); + // Use default path(and pass error handling to librw) if we can't find any match + if (!casepath((char*)pData, r)) + r = (char*)pData; + } else + fclose(first); + + if(file->open((char*)r, mode)) + return file; +#else if(file->open((char*)pData, mode)) return file; +#endif rwFree(file); return nil; } |