예제 #1
0
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 );
}
예제 #2
0
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 );
}
예제 #3
0
bool WRCopyResFromDataToFile( void *ResData, uint_32 len, WResFileID dst_fid )
{
    return( WRWriteResData( dst_fid, (BYTE *)ResData, len ) );
}