diff options
author | Roman Masanin <36927roma@gmail.com> | 2020-11-01 21:39:21 +0100 |
---|---|---|
committer | Roman Masanin <36927roma@gmail.com> | 2020-11-01 21:39:21 +0100 |
commit | 076fc24e862873ab76269ebb3b00c3ef23e77ae3 (patch) | |
tree | 7b717c37a5929163717551d4d5bb6a67b6a16221 /src/skel/crossplatform.cpp | |
parent | mark original bugs (diff) | |
parent | Fix the goddamn spaces for tabs master race (diff) | |
download | re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar.gz re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar.bz2 re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar.lz re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar.xz re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.tar.zst re3-076fc24e862873ab76269ebb3b00c3ef23e77ae3.zip |
Diffstat (limited to 'src/skel/crossplatform.cpp')
-rw-r--r-- | src/skel/crossplatform.cpp | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp index ac4bbe85..f2f9d5ee 100644 --- a/src/skel/crossplatform.cpp +++ b/src/skel/crossplatform.cpp @@ -26,34 +26,35 @@ void GetLocalTime_CP(SYSTEMTIME *out) { // Compatible with Linux/POSIX and MinGW on Windows #ifndef _WIN32 HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) { - char newpathname[32]; - - strncpy(newpathname, pathname, 32); - char* path = strtok(newpathname, "*"); + char pathCopy[MAX_PATH]; + strcpy(pathCopy, pathname); + + char *folder = strtok(pathCopy, "*"); + char *extension = strtok(NULL, "*"); + + // because strtok doesn't return NULL for last delimiter + if (extension - folder == strlen(pathname)) + extension = nil; // 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, "*"); + // Will be freed at the bottom + char *realFolder = casepath(folder); + if (realFolder) { + folder = realFolder; } - - strncpy(firstfile->folder, path, sizeof(firstfile->folder)); - // Both w/ extension and w/o extension is ok - if (strlen(path) + 1 != strlen(pathname)) - strncpy(firstfile->extension, strtok(NULL, "*"), sizeof(firstfile->extension)); + strncpy(firstfile->folder, folder, sizeof(firstfile->folder)); + + if (extension) + strncpy(firstfile->extension, extension, sizeof(firstfile->extension)); else - strncpy(firstfile->extension, "", sizeof(firstfile->extension)); + firstfile->extension[0] = '\0'; + + if (realFolder) + free(realFolder); HANDLE d; - if ((d = (HANDLE)opendir(path)) == NULL || !FindNextFile(d, firstfile)) + if ((d = (HANDLE)opendir(firstfile->folder)) == NULL || !FindNextFile(d, firstfile)) return NULL; return d; |