bool WRCopyResFromFileToFile( WResFileID src_fid, uint_32 offset, uint_32 length, WResFileID dst_fid ) { uint_32 size; uint_8 *buf; bool ok; size = 0; buf = NULL; ok = (src_fid != WRES_NIL_HANDLE && dst_fid != WRES_NIL_HANDLE); ok = (ok && (buf = (uint_8 *)MemAlloc( CHUNK_SIZE )) != NULL); ok = (ok && RESSEEK( src_fid, offset, SEEK_SET ) != -1); while( ok && length - size > CHUNK_SIZE ) { ok = ok && WRReadResData( src_fid, (BYTE *)buf, CHUNK_SIZE ); ok = ok && WRWriteResData( dst_fid, (BYTE *)buf, CHUNK_SIZE ); size += CHUNK_SIZE; } ok = ok && WRReadResData( src_fid, (BYTE *)buf, length - size ); ok = ok && WRWriteResData( dst_fid, (BYTE *)buf, length - size ); if( buf != NULL ) { MemFree( buf ); } return( ok ); }
int WRAPI WRSaveDataToFile( char *file_name, BYTE *data, uint_32 length ) { WResFileID file; int ok; file = -1; ok = (file_name != NULL && data != NULL && length != 0); if( ok ) { file = open( file_name, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, S_IWRITE | S_IREAD ); ok = (file != -1); } if( ok ) { ok = WRWriteResData( file, data, length ); } if( file != -1 ) { ResCloseFile( file ); } return( ok ); }
bool WRCopyResFromDataToFile( void *ResData, uint_32 len, WResFileID dst_fid ) { return( WRWriteResData( dst_fid, (BYTE *)ResData, len ) ); }