From 863a9029ae50bd136e5144bc1ce2ea53a6b37ccc Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 14 May 2024 06:47:58 -0700 Subject: [PATCH] Added SDL_GlobFlags --- include/SDL3/SDL_filesystem.h | 14 +++++++++++++- include/SDL3/SDL_storage.h | 2 +- src/dynapi/SDL_dynapi_procs.h | 4 ++-- src/filesystem/SDL_filesystem.c | 6 +++--- src/filesystem/SDL_sysfilesystem.h | 2 +- src/storage/SDL_storage.c | 2 +- 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/include/SDL3/SDL_filesystem.h b/include/SDL3/SDL_filesystem.h index 71ed8afb12..d117c2c239 100644 --- a/include/SDL3/SDL_filesystem.h +++ b/include/SDL3/SDL_filesystem.h @@ -262,6 +262,18 @@ typedef struct SDL_PathInfo SDL_Time access_time; /* the last time the path was read */ } SDL_PathInfo; +/** + * Flags for path matching + * + * \since This datatype is available since SDL 3.0.0. + * + * \sa SDL_GlobDirectory + * \sa SDL_GlobStorageDirectory + */ +typedef Uint32 SDL_GlobFlags; + +#define SDL_GLOB_CASEINSENSITIVE (1u << 0) + /** * Create a directory. * @@ -365,7 +377,7 @@ extern DECLSPEC int SDLCALL SDL_GetPathInfo(const char *path, SDL_PathInfo *info * * \since This function is available since SDL 3.0.0. */ -extern DECLSPEC char **SDLCALL SDL_GlobDirectory(const char *path, const char *pattern, Uint32 flags, int *count); +extern DECLSPEC char **SDLCALL SDL_GlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count); #define SDL_GLOB_CASEINSENSITIVE (1u << 0) diff --git a/include/SDL3/SDL_storage.h b/include/SDL3/SDL_storage.h index 56e63b1bc9..4c4e72d214 100644 --- a/include/SDL3/SDL_storage.h +++ b/include/SDL3/SDL_storage.h @@ -401,7 +401,7 @@ extern DECLSPEC Uint64 SDLCALL SDL_GetStorageSpaceRemaining(SDL_Storage *storage * * \since This function is available since SDL 3.0.0. */ -extern DECLSPEC char **SDLCALL SDL_GlobStorageDirectory(SDL_Storage *storage, const char *path, const char *pattern, Uint32 flags, int *count); +extern DECLSPEC char **SDLCALL SDL_GlobStorageDirectory(SDL_Storage *storage, const char *path, const char *pattern, SDL_GlobFlags flags, int *count); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index a8b40db862..75ff12464a 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -535,8 +535,8 @@ SDL_DYNAPI_PROC(int,SDL_GetWindowSize,(SDL_Window *a, int *b, int *c),(a,b,c),re SDL_DYNAPI_PROC(int,SDL_GetWindowSizeInPixels,(SDL_Window *a, int *b, int *c),(a,b,c),return) SDL_DYNAPI_PROC(SDL_Surface*,SDL_GetWindowSurface,(SDL_Window *a),(a),return) SDL_DYNAPI_PROC(const char*,SDL_GetWindowTitle,(SDL_Window *a),(a),return) -SDL_DYNAPI_PROC(char**,SDL_GlobDirectory,(const char *a, const char *b, Uint32 c, int *d),(a,b,c,d),return) -SDL_DYNAPI_PROC(char**,SDL_GlobStorageDirectory,(SDL_Storage *a, const char *b, const char *c, Uint32 d, int *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(char**,SDL_GlobDirectory,(const char *a, const char *b, SDL_GlobFlags c, int *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(char**,SDL_GlobStorageDirectory,(SDL_Storage *a, const char *b, const char *c, SDL_GlobFlags d, int *e),(a,b,c,d,e),return) SDL_DYNAPI_PROC(SDL_bool,SDL_HapticEffectSupported,(SDL_Haptic *a, const SDL_HapticEffect *b),(a,b),return) SDL_DYNAPI_PROC(SDL_bool,SDL_HapticRumbleSupported,(SDL_Haptic *a),(a),return) SDL_DYNAPI_PROC(SDL_bool,SDL_HasARMSIMD,(void),(),return) diff --git a/src/filesystem/SDL_filesystem.c b/src/filesystem/SDL_filesystem.c index 7361b4f8c1..d038d2840a 100644 --- a/src/filesystem/SDL_filesystem.c +++ b/src/filesystem/SDL_filesystem.c @@ -221,7 +221,7 @@ typedef struct GlobDirCallbackData SDL_bool (*matcher)(const char *pattern, const char *str, SDL_bool *matched_to_dir); const char *pattern; int num_entries; - Uint32 flags; + SDL_GlobFlags flags; SDL_GlobEnumeratorFunc enumerator; SDL_GlobGetPathInfoFunc getpathinfo; void *fsuserdata; @@ -286,7 +286,7 @@ static int SDLCALL GlobDirectoryCallback(void *userdata, const char *dirname, co return retval; } -char **SDL_InternalGlobDirectory(const char *path, const char *pattern, Uint32 flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata) +char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata) { int dummycount; if (!count) { @@ -394,7 +394,7 @@ static int GlobDirectoryEnumerator(const char *path, SDL_EnumerateDirectoryCallb return SDL_EnumerateDirectory(path, cb, cbuserdata); } -char **SDL_GlobDirectory(const char *path, const char *pattern, Uint32 flags, int *count) +char **SDL_GlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count) { //SDL_Log("SDL_GlobDirectory('%s', '%s') ...", path, pattern); return SDL_InternalGlobDirectory(path, pattern, flags, count, GlobDirectoryEnumerator, GlobDirectoryGetPathInfo, NULL); diff --git a/src/filesystem/SDL_sysfilesystem.h b/src/filesystem/SDL_sysfilesystem.h index a41dd5cfe7..1655e69d64 100644 --- a/src/filesystem/SDL_sysfilesystem.h +++ b/src/filesystem/SDL_sysfilesystem.h @@ -30,7 +30,7 @@ int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info); typedef int (*SDL_GlobEnumeratorFunc)(const char *path, SDL_EnumerateDirectoryCallback cb, void *cbuserdata, void *userdata); typedef int (*SDL_GlobGetPathInfoFunc)(const char *path, SDL_PathInfo *info, void *userdata); -char **SDL_InternalGlobDirectory(const char *path, const char *pattern, Uint32 flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata); +char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata); #endif diff --git a/src/storage/SDL_storage.c b/src/storage/SDL_storage.c index c0e2de4e39..431110f953 100644 --- a/src/storage/SDL_storage.c +++ b/src/storage/SDL_storage.c @@ -335,7 +335,7 @@ static int GlobStorageDirectoryEnumerator(const char *path, SDL_EnumerateDirecto return SDL_EnumerateStorageDirectory((SDL_Storage *) userdata, path, cb, cbuserdata); } -char **SDL_GlobStorageDirectory(SDL_Storage *storage, const char *path, const char *pattern, Uint32 flags, int *count) +char **SDL_GlobStorageDirectory(SDL_Storage *storage, const char *path, const char *pattern, SDL_GlobFlags flags, int *count) { CHECK_STORAGE_MAGIC_RET(NULL) return SDL_InternalGlobDirectory(path, pattern, flags, count, GlobStorageDirectoryEnumerator, GlobStorageDirectoryGetPathInfo, storage);