From b9d49e385f8a00f5b830b7547d9ad8070412af88 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sat, 4 Jul 2015 20:42:57 -0500 Subject: 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. --- src/sys/sys_win32.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/sys') 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; } -- cgit