2
0
mirror of https://github.com/FWGS/xash3d-fwgs synced 2024-11-25 11:19:59 +01:00

filesystem: wad: fix loading WADs by absolute paths

This commit is contained in:
Alibek Omarov 2023-02-13 06:49:29 +03:00
parent f4069de7f2
commit 1e8c26a527

View File

@ -287,17 +287,33 @@ open the wad for reading & writing
static wfile_t *W_Open( const char *filename, int *error ) static wfile_t *W_Open( const char *filename, int *error )
{ {
wfile_t *wad = (wfile_t *)Mem_Calloc( fs_mempool, sizeof( wfile_t )); wfile_t *wad = (wfile_t *)Mem_Calloc( fs_mempool, sizeof( wfile_t ));
const char *basename;
int i, lumpcount; int i, lumpcount;
dlumpinfo_t *srclumps; dlumpinfo_t *srclumps;
size_t lat_size; size_t lat_size;
dwadinfo_t header; dwadinfo_t header;
// NOTE: FS_Open is load wad file from the first pak in the list (while fs_ext_path is false) // NOTE: FS_Open is load wad file from the first pak in the list (while fs_ext_path is false)
if( fs_ext_path ) basename = filename; if( fs_ext_path )
else basename = COM_FileWithoutPath( filename ); {
int ind;
searchpath_t *search = FS_FindFile( filename, &ind, NULL, 0, false );
wad->handle = FS_Open( basename, "rb", false ); // allow direct absolute paths
// TODO: catch them in FS_FindFile_DIR!
if( !search || ind < 0 )
{
wad->handle = FS_SysOpen( filename, "rb" );
}
else
{
wad->handle = search->pfnOpenFile( search, filename, "rb", ind );
}
}
else
{
const char *basename = COM_FileWithoutPath( filename );
wad->handle = FS_Open( basename, "rb", false );
}
if( wad->handle == NULL ) if( wad->handle == NULL )
{ {