Browse Source

core: Support slashes as well in GetFileName & GetDirectoryPath

Fixes #634.
Ahmad Fatoum 7 years ago
parent
commit
5dda105a79
1 changed files with 15 additions and 6 deletions
  1. 15 6
      src/core.c

+ 15 - 6
src/core.c

@@ -1346,11 +1346,20 @@ const char *GetExtension(const char *fileName)
     return (dot + 1);
     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
 // Get pointer to filename for a path string
 const char *GetFileName(const char *filePath)
 const char *GetFileName(const char *filePath)
 {
 {
-    const char *fileName = strrchr(filePath, '\\');
-    
+    const char *fileName = strprbrk(filePath, "\\/");
+
     if (!fileName || fileName == filePath) return filePath;
     if (!fileName || fileName == filePath) return filePath;
 
 
     return fileName + 1;
     return fileName + 1;
@@ -1360,14 +1369,14 @@ const char *GetFileName(const char *filePath)
 // Get directory for a given fileName (with path)
 // Get directory for a given fileName (with path)
 const char *GetDirectoryPath(const char *fileName)
 const char *GetDirectoryPath(const char *fileName)
 {
 {
-    char *lastSlash = NULL;
+    const char *lastSlash = NULL;
     static char filePath[256];      // MAX_DIRECTORY_PATH_SIZE = 256
     static char filePath[256];      // MAX_DIRECTORY_PATH_SIZE = 256
     memset(filePath, 0, 256);
     memset(filePath, 0, 256);
-    
-    lastSlash = strrchr(fileName, '\\');
+
+    lastSlash = strprbrk(fileName, "\\/");
     strncpy(filePath, fileName, strlen(fileName) - (strlen(lastSlash) - 1));
     strncpy(filePath, fileName, strlen(fileName) - (strlen(lastSlash) - 1));
     filePath[strlen(fileName) - strlen(lastSlash)] = '\0';
     filePath[strlen(fileName) - strlen(lastSlash)] = '\0';
-    
+
     return filePath;
     return filePath;
 }
 }