mirror of https://github.com/raysan5/raylib
Added missing "standalone" functions to raudio.c & fixed return bug (#3760)
* Added GetFileNameWithoutExt, GetFileName & strprbrk to raudio.c * Gave return values to SaveFileData & SaveFileText in raudio.c
This commit is contained in:
parent
f4add5f10d
commit
cf10cdd6b3
74
src/raudio.c
74
src/raudio.c
|
@ -416,6 +416,8 @@ static void MixAudioFrames(float *framesOut, const float *framesIn, ma_uint32 fr
|
|||
#if defined(RAUDIO_STANDALONE)
|
||||
static bool IsFileExtension(const char *fileName, const char *ext); // Check file extension
|
||||
static const char *GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes the dot: .png)
|
||||
static const char *GetFileName(const char *filePath); // Get pointer to filename for a path string
|
||||
static const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string)
|
||||
|
||||
static unsigned char *LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read)
|
||||
static bool SaveFileData(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write)
|
||||
|
@ -2642,6 +2644,50 @@ static const char *GetFileExtension(const char *fileName)
|
|||
return dot;
|
||||
}
|
||||
|
||||
// String pointer reverse break: returns right-most occurrence of charset in s
|
||||
static const char *strprbrk(const char *s, const char *charset)
|
||||
{
|
||||
const char *latestMatch = NULL;
|
||||
for (; s = strpbrk(s, charset), s != NULL; latestMatch = s++) { }
|
||||
return latestMatch;
|
||||
}
|
||||
|
||||
// Get pointer to filename for a path string
|
||||
static const char *GetFileName(const char *filePath)
|
||||
{
|
||||
const char *fileName = NULL;
|
||||
if (filePath != NULL) fileName = strprbrk(filePath, "\\/");
|
||||
|
||||
if (!fileName) return filePath;
|
||||
|
||||
return fileName + 1;
|
||||
}
|
||||
|
||||
// Get filename string without extension (uses static string)
|
||||
static const char *GetFileNameWithoutExt(const char *filePath)
|
||||
{
|
||||
#define MAX_FILENAMEWITHOUTEXT_LENGTH 256
|
||||
|
||||
static char fileName[MAX_FILENAMEWITHOUTEXT_LENGTH] = { 0 };
|
||||
memset(fileName, 0, MAX_FILENAMEWITHOUTEXT_LENGTH);
|
||||
|
||||
if (filePath != NULL) strcpy(fileName, GetFileName(filePath)); // Get filename with extension
|
||||
|
||||
int size = (int)strlen(fileName); // Get size in bytes
|
||||
|
||||
for (int i = 0; (i < size) && (i < MAX_FILENAMEWITHOUTEXT_LENGTH); i++)
|
||||
{
|
||||
if (fileName[i] == '.')
|
||||
{
|
||||
// NOTE: We break on first '.' found
|
||||
fileName[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return fileName;
|
||||
}
|
||||
|
||||
// Load data from file into a buffer
|
||||
static unsigned char *LoadFileData(const char *fileName, int *dataSize)
|
||||
{
|
||||
|
@ -2699,9 +2745,19 @@ static bool SaveFileData(const char *fileName, void *data, int dataSize)
|
|||
|
||||
fclose(file);
|
||||
}
|
||||
else TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open file", fileName);
|
||||
else
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open file", fileName);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else TRACELOG(LOG_WARNING, "FILEIO: File name provided is not valid");
|
||||
else
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "FILEIO: File name provided is not valid");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Save text data to file (write), string must be '\0' terminated
|
||||
|
@ -2720,9 +2776,19 @@ static bool SaveFileText(const char *fileName, char *text)
|
|||
|
||||
fclose(file);
|
||||
}
|
||||
else TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open text file", fileName);
|
||||
else
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "FILEIO: [%s] Failed to open text file", fileName);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else TRACELOG(LOG_WARNING, "FILEIO: File name provided is not valid");
|
||||
else
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "FILEIO: File name provided is not valid");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue