コード例 #1
0
ファイル: lookup_reader.c プロジェクト: Jingyu9/sra-tools
rc_t make_lookup_reader( const KDirectory *dir, const struct index_reader * index,
                         struct lookup_reader ** reader, size_t buf_size, const char * fmt, ... )
{
    rc_t rc;
    const struct KFile * f = NULL;
    
    va_list args;
    va_start ( args, fmt );
    
    rc = KDirectoryVOpenFileRead( dir, &f, fmt, args );
    if ( rc != 0 )
    {
        char tmp[ 4096 ];
        size_t num_writ;
        rc_t rc1 = string_vprintf( tmp, sizeof tmp, &num_writ, fmt, args );
        if ( rc1 != 0 )
            ErrMsg( "make_lookup_reader.KDirectoryVOpenFileRead( '?' ) -> %R", rc );
        else
            ErrMsg( "make_lookup_reader.KDirectoryVOpenFileRead( '%s' ) -> %R", tmp, rc );
    }
    else
    {
        const struct KFile * temp_file = NULL;
        rc = KBufFileMakeRead( &temp_file, f, buf_size );
        KFileRelease( f );
        if ( rc != 0 )
        {
            ErrMsg( "make_lookup_reader.KBufFileMakeRead() -> %R", rc );
        }
        else
        {
            lookup_reader * r = calloc( 1, sizeof * r );
            if ( r == NULL )
            {
                KFileRelease( temp_file );
                rc = RC( rcVDB, rcNoTarg, rcConstructing, rcMemory, rcExhausted );
                ErrMsg( "make_lookup_reader.calloc( %d ) -> %R", ( sizeof * r ), rc );
            }
            else
            {
                r->f = temp_file;
                r->index = index;
                rc = make_SBuffer( &r->buf, 4096 );
                if ( rc == 0 )
                    *reader = r;
                else
                    release_lookup_reader( r );
            }
        }
    }
    va_end ( args );
    return rc;
}
コード例 #2
0
ファイル: lookup_writer.c プロジェクト: ncbi/sra-tools
static rc_t make_lookup_writer_obj( struct lookup_writer ** writer,
                             struct index_writer * idx,
                             struct KFile * f )
{
    rc_t rc = 0;
    lookup_writer * w = calloc( 1, sizeof * w );
    if ( w == NULL )
    {
        rc = RC( rcVDB, rcNoTarg, rcConstructing, rcMemory, rcExhausted );
        ErrMsg( "calloc( %d ) -> %R", ( sizeof * w ), rc );
    }
    else
    {
        w -> f = f;
        w -> idx = idx;
        rc = make_SBuffer( &w -> buf, 4096 );
        if ( rc == 0 )
            *writer = w;
        else
            release_lookup_writer( w );
    }
    return rc;
}
コード例 #3
0
ファイル: sorter.c プロジェクト: Bhumi28/sra-tools
static rc_t init_sorter( struct sorter * sorter, const sorter_params * params )
{
    rc_t rc = KVectorMake( &sorter->store );
    if ( rc != 0 )
        ErrMsg( "KVectorMake() -> %R", rc );
    else
    {
        rc = make_SBuffer( &sorter->buf, 4096 );
        if ( rc == 0 )
        {
            sorter->params.dir = params->dir;
            sorter->params.output_filename = params->output_filename;
            sorter->params.index_filename = NULL;
            sorter->params.temp_path = params->temp_path;
            sorter->params.src = params->src;
            sorter->params.buf_size = params->buf_size;
            sorter->params.mem_limit = params->mem_limit;
            sorter->params.prefix = params->prefix;
            sorter->bytes_in_store = 0;
            sorter->sub_file_id = 0;
        }
    }
    return rc;
}