|
|
@ -1814,43 +1814,43 @@ const char *GetFileNameWithoutExt(const char *filePath) |
|
|
|
return fileName; |
|
|
|
} |
|
|
|
|
|
|
|
// Get directory for a given fileName (with path) |
|
|
|
const char *GetDirectoryPath(const char *fileName) |
|
|
|
// Get directory for a given filePath |
|
|
|
const char *GetDirectoryPath(const char *filePath) |
|
|
|
{ |
|
|
|
const char *lastSlash = NULL; |
|
|
|
static char filePath[MAX_FILEPATH_LENGTH]; |
|
|
|
memset(filePath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
static char dirPath[MAX_FILEPATH_LENGTH]; |
|
|
|
memset(dirPath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
|
|
|
|
lastSlash = strprbrk(fileName, "\\/"); |
|
|
|
lastSlash = strprbrk(filePath, "\\/"); |
|
|
|
if (!lastSlash) return NULL; |
|
|
|
|
|
|
|
// NOTE: Be careful, strncpy() is not safe, it does not care about '\0' |
|
|
|
strncpy(filePath, fileName, strlen(fileName) - (strlen(lastSlash) - 1)); |
|
|
|
filePath[strlen(fileName) - strlen(lastSlash)] = '\0'; // Add '\0' manually |
|
|
|
strncpy(dirPath, filePath, strlen(filePath) - (strlen(lastSlash) - 1)); |
|
|
|
dirPath[strlen(filePath) - strlen(lastSlash)] = '\0'; // Add '\0' manually |
|
|
|
|
|
|
|
return filePath; |
|
|
|
return dirPath; |
|
|
|
} |
|
|
|
|
|
|
|
// Get previous directory path for a given path |
|
|
|
const char *GetPrevDirectoryPath(const char *path) |
|
|
|
const char *GetPrevDirectoryPath(const char *dirPath) |
|
|
|
{ |
|
|
|
static char prevDir[MAX_FILEPATH_LENGTH]; |
|
|
|
memset(prevDir, 0, MAX_FILEPATH_LENGTH); |
|
|
|
int pathLen = strlen(path); |
|
|
|
|
|
|
|
for (int i = (pathLen - 1); i >= 0; i--) |
|
|
|
static char prevDirPath[MAX_FILEPATH_LENGTH]; |
|
|
|
memset(prevDirPath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
int pathLen = strlen(dirPath); |
|
|
|
|
|
|
|
if (pathLen <= 3) strcpy(prevDirPath, dirPath); |
|
|
|
|
|
|
|
for (int i = (pathLen - 1); (i > 0) && (pathLen > 3); i--) |
|
|
|
{ |
|
|
|
if ((path[i] == '\\') || (path[i] == '/')) |
|
|
|
if ((dirPath[i] == '\\') || (dirPath[i] == '/')) |
|
|
|
{ |
|
|
|
if ((i != (pathLen - 1)) && (path[pathLen - 2] != ':')) |
|
|
|
{ |
|
|
|
strncpy(prevDir, path, i); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (i == 2) i++; // Check for root: "C:\" |
|
|
|
strncpy(prevDirPath, dirPath, i); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return prevDir; |
|
|
|
return prevDirPath; |
|
|
|
} |
|
|
|
|
|
|
|
// Get current working directory |
|
|
|