mirror of
https://github.com/raysan5/raylib.git
synced 2025-09-20 02:08:14 +00:00
REVIEWED: GetDirectoryPath()
This commit is contained in:
25
src/core.c
25
src/core.c
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user