Add filtering folders in ScanDirectoryFiles and ScanDirectoryFilesRecursively
Add define FILTER_FOLDER for that purpose Fix folder names matching filter being added to result
This commit is contained in:
parent
5f49ec3d64
commit
6028447663
|
|
@ -194,6 +194,10 @@
|
||||||
#define MAGENTA CLITERAL(Color){ 255, 0, 255, 255 } // Magenta
|
#define MAGENTA CLITERAL(Color){ 255, 0, 255, 255 } // Magenta
|
||||||
#define RAYWHITE CLITERAL(Color){ 245, 245, 245, 255 } // My own White (raylib logo)
|
#define RAYWHITE CLITERAL(Color){ 245, 245, 245, 255 } // My own White (raylib logo)
|
||||||
|
|
||||||
|
// Filter string used in ScanDirectoryFiles, ScanDirectoryFilesRecursively and
|
||||||
|
// LoadDirectoryFilesEx to include directories in the result array
|
||||||
|
#define FILTER_FOLDER "/DIR"
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Structures Definition
|
// Structures Definition
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
|
||||||
28
src/rcore.c
28
src/rcore.c
|
|
@ -3312,6 +3312,8 @@ static void ScanDirectoryFiles(const char *basePath, FilePathList *files, const
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (filter != NULL)
|
if (filter != NULL)
|
||||||
|
{
|
||||||
|
if (IsPathFile(path))
|
||||||
{
|
{
|
||||||
if (IsFileExtension(path, filter))
|
if (IsFileExtension(path, filter))
|
||||||
{
|
{
|
||||||
|
|
@ -3320,6 +3322,15 @@ static void ScanDirectoryFiles(const char *basePath, FilePathList *files, const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (TextFindIndex(filter, FILTER_FOLDER) >= 0)
|
||||||
|
{
|
||||||
|
strcpy(files->paths[files->count], path);
|
||||||
|
files->count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
strcpy(files->paths[files->count], path);
|
strcpy(files->paths[files->count], path);
|
||||||
files->count++;
|
files->count++;
|
||||||
|
|
@ -3376,7 +3387,22 @@ static void ScanDirectoryFilesRecursively(const char *basePath, FilePathList *fi
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else ScanDirectoryFilesRecursively(path, files, filter);
|
else
|
||||||
|
{
|
||||||
|
if (filter != NULL && TextFindIndex(filter, FILTER_FOLDER) >= 0)
|
||||||
|
{
|
||||||
|
strcpy(files->paths[files->count], path);
|
||||||
|
files->count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (files->count >= files->capacity)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "FILEIO: Maximum filepath scan capacity reached (%i files)", files->capacity);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScanDirectoryFilesRecursively(path, files, filter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user