X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=vfilesys.h;h=4e4faa9aaa3ae76e5e5a3ff77173e1cbb7366932;hp=5206d57c4bf5af76829d9982838c1f28e5bd73a8;hb=d7339f0f28ca5b35ad60a393ca270cbae1a154c6;hpb=0399aad1d7374badf037a2696d9e276d71b7a297 diff --git a/vfilesys.h b/vfilesys.h index 5206d57..4e4faa9 100644 --- a/vfilesys.h +++ b/vfilesys.h @@ -76,19 +76,19 @@ void fs_set_gameinfo( const char *path ) if( !fs->vpk ) { - fprintf( stderr, "Could not locate pak01_dir.vpk in %i searchpaths. Stock models will not load!", csr_sb_count( fs->searchpaths ) ); + log_error( "Could not locate pak01_dir.vpk in %i searchpaths. Stock models will not load!", csr_sb_count( fs->searchpaths ) ); } - printf( "fs_info:\n\ - gamedir: %s\n\ - exedir: %s\n\ - bin: %s\n\ - pack: %s\n\ - searchpaths:\n", fs->gamedir, fs->exedir, fs->bindir, pack_path ); + log_info( "fs_info:\n" ); + log_info( " gamedir: %s\n", fs->gamedir ); + log_info( " exedir: %s\n", fs->exedir ); + log_info( " bin: %s\n", fs->bindir ); + log_info( " pack: %s\n", pack_path ); + log_info( " searchpaths:\n" ); for( int i = 0; i < csr_sb_count( fs->searchpaths ); i ++ ) { - printf( " %s\n", fs->searchpaths[i] ); + log_info( " '%s'\n", fs->searchpaths[i] ); } } @@ -103,8 +103,11 @@ void fs_exit(void) csr_sb_free( fs->searchpaths ); fs->searchpaths = NULL; - vpk_free( fs->vpk ); - fs->vpk = NULL; + if( fs->vpk ) + { + vpk_free( fs->vpk ); + fs->vpk = NULL; + } if( fs->current_archive ) { @@ -120,61 +123,62 @@ char *valve_fs_get( const char *path ) VPKDirectoryEntry *entry; char pak[ 533 ]; - if( (entry = vpk_find( fs->vpk, path )) ) + if( fs->vpk ) { - if( entry->ArchiveIndex != fs->current_idx ) + if( (entry = vpk_find( fs->vpk, path )) ) { - if( fs->current_archive ) + if( entry->ArchiveIndex != fs->current_idx ) { - fclose( fs->current_archive ); - fs->current_archive = NULL; + if( fs->current_archive ) + { + fclose( fs->current_archive ); + fs->current_archive = NULL; + } + + fs->current_idx = entry->ArchiveIndex; } - fs->current_idx = entry->ArchiveIndex; - } - - if( !fs->current_archive ) - { - sprintf( pak, "%scsgo/pak01_%03hu.vpk", fs->exedir, fs->current_idx ); - fs->current_archive = fopen( pak, "rb" ); - if( !fs->current_archive ) { - fprintf( stderr, "Could not locate %s\n", pak ); + sprintf( pak, "%scsgo/pak01_%03hu.vpk", fs->exedir, fs->current_idx ); + fs->current_archive = fopen( pak, "rb" ); + + if( !fs->current_archive ) + { + log_error( "Could not locate %s\n", pak ); + return NULL; + } + } + + char *filebuf = csr_malloc( entry->EntryLength ); + + fseek( fs->current_archive, entry->EntryOffset, SEEK_SET ); + if( fread( filebuf, 1, entry->EntryLength, fs->current_archive ) == entry->EntryLength ) + { + return filebuf; + } + else + { + free( filebuf ); return NULL; } } - - char *filebuf = csr_malloc( entry->EntryLength ); - - fseek( fs->current_archive, entry->EntryOffset, SEEK_SET ); - if( fread( filebuf, 1, entry->EntryLength, fs->current_archive ) == entry->EntryLength ) - { - return filebuf; - } - else - { - free( filebuf ); - return NULL; - } } - else + + // Use physical searchpaths + char path_buf[ 512 ]; + + for( int i = 0; i < csr_sb_count( fs->searchpaths ); i ++ ) { - // Use physical searchpaths - char path_buf[ 512 ]; + strcpy( path_buf, fs->searchpaths[ i ] ); + strcat( path_buf, path ); - for( int i = 0; i < csr_sb_count( fs->searchpaths ); i ++ ) + char *filebuf; + if( (filebuf = csr_asset_read( path_buf )) ) { - strcpy( path_buf, fs->searchpaths[ i ] ); - strcat( path_buf, path ); - - char *filebuf; - if( (filebuf = csr_asset_read( path_buf )) ) - { - return filebuf; - } + return filebuf; } - - return NULL; } + + return NULL; }