summaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorZack Middleton <zturtleman@gmail.com>2015-07-04 20:42:57 -0500
committerTim Angus <tim@ngus.net>2016-04-07 11:02:30 +0100
commitb9d49e385f8a00f5b830b7547d9ad8070412af88 (patch)
tree3e02995c75be1a784cb1052b44261443748223f9 /src/sys
parenta1cb4046bef1a81e8d19a1b2556c285da5cf3229 (diff)
Fix Windows file list extension check
Windows' Sys_ListFiles would add files that contain the extension anywhere, not only at the end of the file name. Example: "word.pk3omghacks" use to be loaded as a pk3 file.
Diffstat (limited to 'src/sys')
-rw-r--r--src/sys/sys_win32.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/sys/sys_win32.c b/src/sys/sys_win32.c
index a2554b89..d8e589b0 100644
--- a/src/sys/sys_win32.c
+++ b/src/sys/sys_win32.c
@@ -412,6 +412,7 @@ char **Sys_ListFiles( const char *directory, const char *extension, char *filter
intptr_t findhandle;
int flag;
int i;
+ int extLen;
if (filter) {
@@ -445,6 +446,8 @@ char **Sys_ListFiles( const char *directory, const char *extension, char *filter
flag = _A_SUBDIR;
}
+ extLen = strlen( extension );
+
Com_sprintf( search, sizeof(search), "%s\\*%s", directory, extension );
// search
@@ -458,6 +461,14 @@ char **Sys_ListFiles( const char *directory, const char *extension, char *filter
do {
if ( (!wantsubs && flag ^ ( findinfo.attrib & _A_SUBDIR )) || (wantsubs && findinfo.attrib & _A_SUBDIR) ) {
+ if (*extension) {
+ if ( strlen( findinfo.name ) < extLen ||
+ Q_stricmp(
+ findinfo.name + strlen( findinfo.name ) - extLen,
+ extension ) ) {
+ continue; // didn't match
+ }
+ }
if ( nfiles == MAX_FOUND_FILES - 1 ) {
break;
}