summaryrefslogtreecommitdiffstats
path: root/src/core/FileMgr.cpp
diff options
context:
space:
mode:
authoreray orçunus <erayorcunus@gmail.com>2020-07-26 19:59:58 +0200
committereray orçunus <erayorcunus@gmail.com>2020-07-28 16:40:12 +0200
commiteb8844fd113d3fdae0456d56bdb0eb56e3a5f26b (patch)
tree127e6f19fa16061661ac1eed9158caece6dd4521 /src/core/FileMgr.cpp
parentProvide more memory for casepath's arg (diff)
downloadre3-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 '')
-rw-r--r--src/core/FileMgr.cpp37
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;