コード例 #1
0
static bool ChangeTmpToOutFile( FILE *tmpfile, const char *out_name )
/*******************************************************************/
{
    RcStatus    status;      /* error while deleting or renaming */
    FILE        *outfile;
    size_t      numread;
    char        *buffer;

    buffer = RESALLOC( BUFFER_SIZE );

    status = RS_OK;
    RESSEEK( tmpfile, 0, SEEK_SET );
    outfile = ResOpenFileRW( out_name );
    while( (numread = RESREAD( tmpfile, buffer, BUFFER_SIZE )) != 0 ) {
        if( numread != BUFFER_SIZE && RESIOERR( tmpfile, numread ) ) {
            status = RS_READ_ERROR;
            break;
        }
        if( RESWRITE( outfile, buffer, numread ) != numread ) {
            status = RS_WRITE_ERROR;
            break;
        }
    }
    ResCloseFile( outfile );

    RESFREE( buffer );
    return( status == RS_OK );

} /* ChangeTmpToOutFile */
コード例 #2
0
static bool ResOS2WriteAccelEntry( AccelTableEntryOS2 *currentry, WResFileID fid )
/********************************************************************************/
{
    if( RESWRITE( fid, currentry, sizeof( AccelTableEntryOS2 ) ) != sizeof( AccelTableEntryOS2 ) ) {
        WRES_ERROR( WRS_WRITE_FAILED );
        return( true );
    }
    return( false );
}
コード例 #3
0
RcStatus SemCopyDataUntilEOF( WResFileOffset offset, WResFileID fid,
                         void *buff, unsigned buffsize, int *err_code )
/*********************************************************************/
{
    WResFileSSize   numread;

    if( RESSEEK( fid, offset, SEEK_SET ) == -1 ) {
        *err_code = errno;
        return( RS_READ_ERROR );
    }

    while( (numread = RESREAD( fid, buff, buffsize )) != 0 ) {
        if( RESIOERR( fid, numread ) ) {
            *err_code = errno;
            return( RS_READ_ERROR );
        }
        if( RESWRITE( CurrResFile.fid, buff, numread ) != numread ) {
            *err_code = errno;
            return( RS_WRITE_ERROR );
        }
    }

    return( RS_OK );
}