summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2019-08-11 12:04:54 +0200
committerraysan5 <[email protected]>2019-08-11 12:04:54 +0200
commit740834bb83734d436ba4c5324a4ccb026ebf5c6c (patch)
tree394b518c7e26bc5f115c6ce1c25f56a662a8e8ec /src
parent2c2ccadd32df75af312a32f2d07ca1d29e83f42b (diff)
downloadraylib-740834bb83734d436ba4c5324a4ccb026ebf5c6c.tar.gz
raylib-740834bb83734d436ba4c5324a4ccb026ebf5c6c.zip
REVIEW: GetDirectoryPath() and GetPrevDirectoryPath()
Diffstat (limited to 'src')
-rw-r--r--src/core.c42
-rw-r--r--src/raylib.h4
2 files changed, 23 insertions, 23 deletions
diff --git a/src/core.c b/src/core.c
index 930bd259..ac0ddd29 100644
--- a/src/core.c
+++ b/src/core.c
@@ -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
diff --git a/src/raylib.h b/src/raylib.h
index 1bf0afd5..3cb8d327 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -940,8 +940,8 @@ RLAPI bool DirectoryExists(const char *dirPath); // Check if a
RLAPI const char *GetExtension(const char *fileName); // Get pointer to extension for a filename string
RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string
RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (memory should be freed)
-RLAPI const char *GetDirectoryPath(const char *fileName); // Get full path for a given fileName (uses static string)
-RLAPI const char *GetPrevDirectoryPath(const char *path); // Get previous directory path for a given path (uses static string)
+RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string)
+RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string)
RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string)
RLAPI char **GetDirectoryFiles(const char *dirPath, int *count); // Get filenames in a directory path (memory should be freed)
RLAPI void ClearDirectoryFiles(void); // Clear directory files paths buffers (free memory)