Selaa lähdekoodia

ADDED: GetFileNameWithoutExt

Ray 7 vuotta sitten
vanhempi
commit
a511337ce8
2 muutettua tiedostoa jossa 36 lisäystä ja 0 poistoa
  1. 35 0
      src/core.c
  2. 1 0
      src/raylib.h

+ 35 - 0
src/core.c

@@ -1523,6 +1523,41 @@ const char *GetFileName(const char *filePath)
     return fileName + 1;
 }
 
+// Get filename string without extension (memory should be freed)
+const char *GetFileNameWithoutExt(const char *filePath)
+{
+    char *result, *lastDot, *lastSep;
+    
+    char nameDot = '.';     // Default filename to extension separator character
+    char pathSep = '/';     // Default filepath separator character
+
+    // Error checks and allocate string
+    if (filePath == NULL) return NULL;
+    
+    // Try to allocate new string, same size as original
+    // NOTE: By default strlen() does not count the '\0' character
+    if ((result = malloc(strlen(filePath) + 1)) == NULL) return NULL;
+    
+    strcpy(result, filePath);   // Make a copy of the string
+    
+    // NOTE: strrchr() returns a pointer to the last occurrence of character
+    lastDot = strrchr(result, nameDot);
+    lastSep = (pathSep == 0) ? NULL : strrchr(result, pathSep);
+
+    if (lastDot != NULL)            // Check if it has an extension separator...
+    {
+        if (lastSep != NULL)        // ...and it's before the extenstion separator...
+        {
+            if (lastSep < lastDot) 
+            {
+                *lastDot = '\0';    // ...then remove it
+            }
+        } 
+        else *lastDot = '\0';       // Has extension separator with no path separator
+    }
+
+    return result;                  // Return the modified string
+}
 
 // Get directory for a given fileName (with path)
 const char *GetDirectoryPath(const char *fileName)

+ 1 - 0
src/raylib.h

@@ -871,6 +871,7 @@ RLAPI int GetRandomValue(int min, int max);                       // Returns a r
 RLAPI bool IsFileExtension(const char *fileName, const char *ext);// Check file extension
 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 *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)