mr.casepath 2
This commit is contained in:
parent
bedc066cfd
commit
067200dd7e
@ -26,29 +26,21 @@ void GetLocalTime_CP(SYSTEMTIME *out) {
|
|||||||
// Compatible with Linux/POSIX and MinGW on Windows
|
// Compatible with Linux/POSIX and MinGW on Windows
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
|
HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
|
||||||
char pathCopy[32];
|
char pathCopy[MAX_PATH];
|
||||||
char constructedPath[32];
|
strcpy(pathCopy, pathname);
|
||||||
|
|
||||||
strncpy(pathCopy, pathname, 32);
|
char *folder = strtok(pathCopy, "*");
|
||||||
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...
|
// Case-sensitivity and backslashes...
|
||||||
|
// Will be freed at the bottom
|
||||||
char *realFolder = casepath(folder);
|
char *realFolder = casepath(folder);
|
||||||
char *extension = nil;
|
|
||||||
if (realFolder) {
|
if (realFolder) {
|
||||||
sprintf(constructedPath, "%s*", realFolder);
|
folder = realFolder;
|
||||||
extension = strtok(NULL, "*");
|
|
||||||
if (extension) {
|
|
||||||
strcat(constructedPath, extension);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(realFolder);
|
|
||||||
folder = strtok(constructedPath, "*");
|
|
||||||
extension = strtok(NULL, "*");
|
|
||||||
} else {
|
|
||||||
// Wildcard (*)
|
|
||||||
if (strlen(folder) + 1 != strlen(pathname))
|
|
||||||
extension = strtok(NULL, "*");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(firstfile->folder, folder, sizeof(firstfile->folder));
|
strncpy(firstfile->folder, folder, sizeof(firstfile->folder));
|
||||||
@ -58,8 +50,11 @@ HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
|
|||||||
else
|
else
|
||||||
firstfile->extension[0] = '\0';
|
firstfile->extension[0] = '\0';
|
||||||
|
|
||||||
|
if (realFolder)
|
||||||
|
free(realFolder);
|
||||||
|
|
||||||
HANDLE d;
|
HANDLE d;
|
||||||
if ((d = (HANDLE)opendir(folder)) == NULL || !FindNextFile(d, firstfile))
|
if ((d = (HANDLE)opendir(firstfile->folder)) == NULL || !FindNextFile(d, firstfile))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
|
Loading…
Reference in New Issue
Block a user