summaryrefslogtreecommitdiffstats
path: root/src/skel/crossplatform.cpp
diff options
context:
space:
mode:
authoreray orçunus <erayorcunus@gmail.com>2020-10-12 19:47:34 +0200
committereray orçunus <erayorcunus@gmail.com>2020-10-12 19:47:34 +0200
commit342da2430b5e0ca6ccc278c32ff104e1cfdb4113 (patch)
tree3285d50a4a687252b31c965afcde3a5a7a0d5cdc /src/skel/crossplatform.cpp
parentSampleManager (diff)
parentStreaming and cross-platform fixes (diff)
downloadre3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.gz
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.bz2
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.lz
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.xz
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.tar.zst
re3-342da2430b5e0ca6ccc278c32ff104e1cfdb4113.zip
Diffstat (limited to 'src/skel/crossplatform.cpp')
-rw-r--r--src/skel/crossplatform.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp
index 697f9006..ac4bbe85 100644
--- a/src/skel/crossplatform.cpp
+++ b/src/skel/crossplatform.cpp
@@ -27,13 +27,28 @@ void GetLocalTime_CP(SYSTEMTIME *out) {
#ifndef _WIN32
HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
char newpathname[32];
+
strncpy(newpathname, pathname, 32);
- char* path = strtok(newpathname, "\\*");
+ char* path = strtok(newpathname, "*");
+
+ // Case-sensitivity and backslashes...
+ char *real = casepath(path);
+ if (real) {
+ real[strlen(real)] = '*';
+ char *extension = strtok(NULL, "*");
+ if (extension)
+ strcat(real, extension);
+
+ strncpy(newpathname, real, 32);
+ free(real);
+ path = strtok(newpathname, "*");
+ }
+
strncpy(firstfile->folder, path, sizeof(firstfile->folder));
// Both w/ extension and w/o extension is ok
- if (strlen(path) + 2 != strlen(pathname))
- strncpy(firstfile->extension, strtok(NULL, "\\*"), sizeof(firstfile->extension));
+ if (strlen(path) + 1 != strlen(pathname))
+ strncpy(firstfile->extension, strtok(NULL, "*"), sizeof(firstfile->extension));
else
strncpy(firstfile->extension, "", sizeof(firstfile->extension));
@@ -53,7 +68,7 @@ bool FindNextFile(HANDLE d, WIN32_FIND_DATA* finddata) {
// We only want "DT_REG"ular Files, but reportedly some FS and OSes gives DT_UNKNOWN as type.
if ((file->d_type == DT_UNKNOWN || file->d_type == DT_REG || file->d_type == DT_LNK) &&
- (extensionLen == 0 || strncmp(&file->d_name[strlen(file->d_name) - extensionLen], finddata->extension, extensionLen) == 0)) {
+ (extensionLen == 0 || strncasecmp(&file->d_name[strlen(file->d_name) - extensionLen], finddata->extension, extensionLen) == 0)) {
sprintf(relativepath, "%s/%s", finddata->folder, file->d_name);
realpath(relativepath, path);