diff options
author | erorcun <erayorcunus@gmail.com> | 2020-07-28 17:33:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-28 17:33:27 +0200 |
commit | 3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5 (patch) | |
tree | 5805f0a7f60da9ba4acd0e60700f0418c1f01188 /src/fakerw/fake.cpp | |
parent | Merge pull request #665 from erorcun/miami (diff) | |
parent | Fix casepath chaos (diff) | |
download | re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar.gz re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar.bz2 re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar.lz re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar.xz re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.tar.zst re3-3d91d4fc6ae31da9c3c93455e1f6e3eea8d8eef5.zip |
Diffstat (limited to 'src/fakerw/fake.cpp')
-rw-r--r-- | src/fakerw/fake.cpp | 65 |
1 files changed, 45 insertions, 20 deletions
diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp index 0bc69abe..7139292e 100644 --- a/src/fakerw/fake.cpp +++ b/src/fakerw/fake.cpp @@ -376,23 +376,19 @@ RwStream *RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, const v 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; + char *r = casepath((char*)pData); + if (r) { + if (file->open((char*)r, mode)) { + free(r); + return file; + } + free(r); } else - fclose(first); - - if(file->open((char*)r, mode)) - return file; -#else - if(file->open((char*)pData, mode)) - return file; #endif + { + if (file->open((char*)pData, mode)) + return file; + } rwFree(file); return nil; } @@ -856,12 +852,41 @@ RpSkin *RpSkinGeometryGetSkin( RpGeometry *geometry ) { return Skin::get(geometr RpAtomic *RpSkinAtomicSetHAnimHierarchy( RpAtomic *atomic, RpHAnimHierarchy *hierarchy ) { Skin::setHierarchy(atomic, hierarchy); return atomic; } RpHAnimHierarchy *RpSkinAtomicGetHAnimHierarchy( const RpAtomic *atomic ) { return Skin::getHierarchy(atomic); } +RwImage * +RtBMPImageWrite(RwImage *image, const RwChar *imageName) +{ +#ifndef _WIN32 + char *r = casepath(imageName); + if (r) { + rw::writeBMP(image, r); + free(r); + } else { + rw::writeBMP(image, imageName); + } + +#else + rw::writeBMP(image, imageName); +#endif + return image; +} +RwImage * +RtBMPImageRead(const RwChar *imageName) +{ +#ifndef _WIN32 + RwImage *image; + char *r = casepath(imageName); + if (r) { + image = rw::readBMP(r); + free(r); + } else { + image = rw::readBMP(imageName); + } + return image; - - - -RwImage *RtBMPImageWrite(RwImage * image, const RwChar * imageName) { rw::writeBMP(image, imageName); return image; } -RwImage *RtBMPImageRead(const RwChar * imageName) { return rw::readBMP(imageName); } +#else + return rw::readBMP(imageName); +#endif +} #include "rtquat.h" |