Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//====== Copyright � 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose:
//
//=============================================================================
#include "closedcaptions.h"
#include "filesystem.h"
#include "tier1/utlbuffer.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
// Assumed to be set up by calling code
bool AsyncCaption_t::LoadFromFile( char const *pchFullPath ) { FileHandle_t fh = g_pFullFileSystem->Open( pchFullPath, "rb" ); if ( FILESYSTEM_INVALID_HANDLE == fh ) return false;
MEM_ALLOC_CREDIT();
CUtlBuffer dirbuffer;
// Read the header
g_pFullFileSystem->Read( &m_Header, sizeof( m_Header ), fh ); if ( m_Header.magic != COMPILED_CAPTION_FILEID ) { if( IsPS3() ) return false; else Error( "Invalid file id for %s\n", pchFullPath ); } if ( m_Header.version != COMPILED_CAPTION_VERSION ) { if( IsPS3() ) return false; else Error( "Invalid file version for %s\n", pchFullPath ); } if ( m_Header.directorysize < 0 || m_Header.directorysize > 64 * 1024 ) { if( IsPS3() ) return false; else Error( "Invalid directory size %d for %s\n", m_Header.directorysize, pchFullPath ); } //if ( m_Header.blocksize != MAX_BLOCK_SIZE )
// Error( "Invalid block size %d, expecting %d for %s\n", m_Header.blocksize, MAX_BLOCK_SIZE, pchFullPath );
int directoryBytes = m_Header.directorysize * sizeof( CaptionLookup_t ); m_CaptionDirectory.EnsureCapacity( m_Header.directorysize ); dirbuffer.EnsureCapacity( directoryBytes );
g_pFullFileSystem->Read( dirbuffer.Base(), directoryBytes, fh ); g_pFullFileSystem->Close( fh );
m_CaptionDirectory.CopyArray( (const CaptionLookup_t *)dirbuffer.PeekGet(), m_Header.directorysize ); m_CaptionDirectory.RedoSort( true );
m_DataBaseFile = pchFullPath; return true; }
|