rc_t prepare_ref_iter( prepare_ctx *ctx, const VDBManager *vdb_mgr, VSchema *vdb_schema, const char * path, BSTree * regions ) { rc_t rc = prepare_db_table( ctx, vdb_mgr, vdb_schema, path ); if ( rc == 0 ) { rc = prepare_reflist( ctx ); if( rc == 0 ) { if ( ctx->reflist == NULL || count_ref_regions( regions ) == 0 ) { /* the user has not specified a reference-range : use the whole file... */ rc = prepare_whole_file( ctx ); } else { /* pick only the requested ranges... */ rc = foreach_ref_region( regions, prepare_region_cb, ctx ); } } if ( ctx->reflist != NULL ) { ReferenceList_Release( ctx->reflist ); } } VTableRelease ( ctx->seq_tab ); VDatabaseRelease ( ctx->db ); return rc; }
static rc_t ref_walker_prepare( struct ref_walker * self ) { rc_t rc = 0; if ( self == NULL ) rc = RC( rcApp, rcNoTarg, rcConstructing, rcParam, rcNull ); else { uint32_t s_count = 0; rc = VNameListCount ( self->sources, &s_count ); if ( rc == 0 && s_count > 0 ) { uint32_t r_count = count_ref_regions( &self->regions ); if ( r_count == 0 ) { uint32_t idx; for ( idx = 0; idx < s_count && rc == 0; ++idx ) { const char * name = NULL; rc = VNameListGet ( self->sources, idx, &name ); if ( rc == 0 && name != NULL ) rc = ref_walker_prepare_1_src( self, name ); } } } check_ref_regions( &self->regions ); self->prepared = ( rc == 0 ); } return rc; }
static rc_t gather_region_options( Args * args, samdump_opts * opts ) { uint32_t count; rc_t rc = ArgsOptionCount( args, OPT_REGION, &count ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error counting comandline option '$(t)'", "t=%s", OPT_REGION ) ); } else if ( count > 0 ) { uint32_t i; BSTreeInit( &opts->regions ); for ( i = 0; i < count && rc == 0; ++i ) { const char * s; rc = ArgsOptionValue( args, OPT_REGION, i, &s ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error retrieving comandline option '$(t)'", "t=%s", OPT_REGION ) ); } else rc = parse_and_add_region( &opts->regions, s ); } if ( rc == 0 ) { check_ref_regions( &opts->regions ); opts->region_count = count_ref_regions( &opts->regions ); } } return rc; }