From 2713f03ec2100068a3863c869f151b1d4bcaf779 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sun, 5 Apr 2026 04:54:49 +0500 Subject: [PATCH] filesystem: fix Quake gamedir check if pak0.pak is written in uppercase, omitting caseinsensitive FS emulation as is VFS is not enabled at this stage --- filesystem/filesystem.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/filesystem/filesystem.c b/filesystem/filesystem.c index db02770b..c86f3ab0 100644 --- a/filesystem/filesystem.c +++ b/filesystem/filesystem.c @@ -1123,27 +1123,28 @@ static qboolean FS_CheckForQuakeGameDir( const char *gamedir ) { // if directory contain quake.rc or progs.dat it's 100% quake gamedir // quake mods probably always archived, so check pak0.pak too - const char *files[] = { "progs.dat", "quake.rc" }; - char buf[MAX_SYSPATH]; + const char *files[] = { "pak0.pak", "PAK0.PAK", "progs.dat", "quake.rc" }; int i; - // try to read pak0.pak first, most quake mods are archived - if( Q_snprintf( buf, sizeof( buf ), "%s/pak0.pak", gamedir ) > 0 ) - { - if( FS_SysFileExists( buf )) - { - if( FS_CheckForQuakePak( buf, files, sizeof( files ) / sizeof( files[0] ))) - return true; - } - } - // search it in the filesystem for( i = 0; i < sizeof( files ) / sizeof( files[0] ); i++ ) { + char buf[MAX_SYSPATH]; + if( Q_snprintf( buf, sizeof( buf ), "%s/%s", gamedir, files[i] ) > 0 ) { - if( FS_SysFileExists( buf )) + if( !FS_SysFileExists( buf )) + continue; + + if( !Q_stricmp( COM_FileExtension( buf ), "pak" )) + { + if( FS_CheckForQuakePak( buf, &files[2], sizeof( files ) / sizeof( files[0] ) - 2 )) + return true; + } + else + { return true; + } } }