diff --git a/src/core.c b/src/core.c index 7363a0c1..ce510406 100644 --- a/src/core.c +++ b/src/core.c @@ -1346,11 +1346,20 @@ const char *GetExtension(const char *fileName) return (dot + 1); } +/* "string pointer reverse break": return right-most occurrence of charset in s */ +static const char *strprbrk(const char *s, const char *charset) +{ + const char *latest_match = NULL; + for(; s = strpbrk(s, charset), s != NULL; latest_match=s++) + ; + return latest_match; +} + // Get pointer to filename for a path string const char *GetFileName(const char *filePath) { - const char *fileName = strrchr(filePath, '\\'); - + const char *fileName = strprbrk(filePath, "\\/"); + if (!fileName || fileName == filePath) return filePath; return fileName + 1; @@ -1360,14 +1369,17 @@ const char *GetFileName(const char *filePath) // Get directory for a given fileName (with path) const char *GetDirectoryPath(const char *fileName) { - char *lastSlash = NULL; + const char *lastSlash = NULL; static char filePath[256]; // MAX_DIRECTORY_PATH_SIZE = 256 memset(filePath, 0, 256); - - lastSlash = strrchr(fileName, '\\'); + + lastSlash = strprbrk(fileName, "\\/"); + if (!lastSlash) + return NULL; + strncpy(filePath, fileName, strlen(fileName) - (strlen(lastSlash) - 1)); filePath[strlen(fileName) - strlen(lastSlash)] = '\0'; - + return filePath; }