示例#1
0
BLARGG_EXPORT fex_err_t fex_identify_file( fex_type_t* type_out, const char path [] )
{
	*type_out = NULL;
	
	fex_type_t type = fex_identify_extension( path );
	
	// Unsupported extension?
	if ( !type )
		return blargg_ok; // reject
	
	// Unknown/no extension?
	if ( !*(type->extension) )
	{
		// Examine header
		FEX_FILE_READER in;
		RETURN_ERR( in.open( path ) );
		if ( in.remain() >= fex_identify_header_size )
		{
			char h [fex_identify_header_size];
			RETURN_ERR( in.read( h, sizeof h ) );
			
			type = fex_identify_extension( fex_identify_header( h ) );
		}
	}
	
	*type_out = type;
	return blargg_ok;
}
示例#2
0
blargg_err_t File_Extractor::open_arc_file( bool unbuffered )
{
	if ( reader_ )
		return blargg_ok;
	
	FEX_FILE_READER* in = BLARGG_NEW FEX_FILE_READER;
	CHECK_ALLOC( in );
	
	blargg_err_t err = in->open( arc_path() );
	if ( err )
	{
		delete in;
	}
	else
	{
		reader_ = in;
		own_file();
		if ( unbuffered )
			make_unbuffered( in );
	}
	
	return err;
}