|
|
@ -1941,16 +1941,31 @@ const char *GetFileNameWithoutExt(const char *filePath) |
|
|
|
// Get directory for a given filePath |
|
|
|
const char *GetDirectoryPath(const char *filePath) |
|
|
|
{ |
|
|
|
/* |
|
|
|
// NOTE: Directory separator is different in Windows and other platforms, |
|
|
|
// fortunately, Windows also support the '/' separator, that's the one should be used |
|
|
|
#if defined(_WIN32) |
|
|
|
char separator = '\\'; |
|
|
|
#else |
|
|
|
char separator = '/'; |
|
|
|
#endif |
|
|
|
*/ |
|
|
|
const char *lastSlash = NULL; |
|
|
|
static char dirPath[MAX_FILEPATH_LENGTH]; |
|
|
|
memset(dirPath, 0, MAX_FILEPATH_LENGTH); |
|
|
|
|
|
|
|
// For security, we set starting path to current directory, |
|
|
|
// obtained path will be concated to this |
|
|
|
dirPath[0] = '.'; |
|
|
|
dirPath[1] = '/'; |
|
|
|
|
|
|
|
lastSlash = strprbrk(filePath, "\\/"); |
|
|
|
if (!lastSlash) return NULL; |
|
|
|
|
|
|
|
// NOTE: Be careful, strncpy() is not safe, it does not care about '\0' |
|
|
|
strncpy(dirPath, filePath, strlen(filePath) - (strlen(lastSlash) - 1)); |
|
|
|
dirPath[strlen(filePath) - strlen(lastSlash)] = '\0'; // Add '\0' manually |
|
|
|
if (lastSlash) |
|
|
|
{ |
|
|
|
// NOTE: Be careful, strncpy() is not safe, it does not care about '\0' |
|
|
|
strncpy(dirPath + 2, filePath, strlen(filePath) - (strlen(lastSlash) - 1)); |
|
|
|
dirPath[2 + strlen(filePath) - strlen(lastSlash)] = '\0'; // Add '\0' manually |
|
|
|
} |
|
|
|
|
|
|
|
return dirPath; |
|
|
|
} |
|
|
|