diff options
author | eray orçunus <erayorcunus@gmail.com> | 2020-07-26 19:59:58 +0200 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2020-07-28 16:40:12 +0200 |
commit | eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b (patch) | |
tree | 127e6f19fa16061661ac1eed9158caece6dd4521 /src/core/FileMgr.cpp | |
parent | Provide more memory for casepath's arg (diff) | |
download | re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar.gz re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar.bz2 re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar.lz re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar.xz re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.tar.zst re3-eb8844fd113d3fdae0456d56bdb0eb56e3a5f26b.zip |
Diffstat (limited to 'src/core/FileMgr.cpp')
-rw-r--r-- | src/core/FileMgr.cpp | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/src/core/FileMgr.cpp b/src/core/FileMgr.cpp index 618874fa..ac51f8de 100644 --- a/src/core/FileMgr.cpp +++ b/src/core/FileMgr.cpp @@ -4,6 +4,7 @@ #include <direct.h> #endif #include "common.h" +#include "crossplatform.h" #include "FileMgr.h" @@ -31,19 +32,16 @@ static myFILE myfiles[NUMFILES]; #include <dirent.h> #include <errno.h> #include <unistd.h> -#include "crossplatform.h" #define _getcwd getcwd // Case-insensitivity on linux (from https://github.com/OneSadCookie/fcaseopen) void mychdir(char const *path) { - char *r = (char*)alloca(strlen(path) + 4); - if (casepath(path, r)) - { + char* r = casepath(path, false); + if (r) { chdir(r); - } - else - { + free(r); + } else { errno = ENOENT; } } @@ -73,30 +71,7 @@ found: *p++ = 'b'; *p = '\0'; -#if !defined(_WIN32) - char *newPath = strdup(filename); - // Normally casepath() fixes backslashes, but if the mode is sth other than r/rb it will create new file with backslashes on linux, so fix backslashes here - char *nextBs; - while(nextBs = strstr(newPath, "\\")){ - *nextBs = '/'; - } -#else - const char *newPath = filename; -#endif - - myfiles[fd].file = fopen(newPath, realmode); -// Be case-insensitive on linux (from https://github.com/OneSadCookie/fcaseopen/) -#if !defined(_WIN32) - if (!myfiles[fd].file) { - char *r = (char*)alloca(strlen(newPath) + 4); - if (casepath(newPath, r)) - { - myfiles[fd].file = fopen(r, realmode); - } - } - - free(newPath); -#endif + myfiles[fd].file = fcaseopen(filename, realmode); if(myfiles[fd].file == nil) return 0; return fd; |