static void context_destroy( p_context ctx ) { if ( ctx == NULL ) return; free( (char*)ctx->output_file ); free( (char*)ctx->dependency_file ); VNamelistRelease( ctx->include_files ); VNamelistRelease( ctx->src_files ); free( ctx ); }
void release_options( samdump_opts * opts ) { free_ref_regions( &opts->regions ); if ( opts->qname_prefix != NULL ) free( (void*)opts->qname_prefix ); if ( opts->qual_quant != NULL ) free( (void*)opts->qual_quant ); if( opts->outputfile != NULL ) free( (void*)opts->outputfile ); VNamelistRelease( opts->hdr_comments ); VNamelistRelease( opts->input_files ); VectorWhack ( &opts->mp_dist, release_range_wrapper, NULL ); }
LIB_EXPORT rc_t CC XFSOwpListKeys ( const struct XFSOwp * self, const struct KNamelist ** Keys ) { rc_t RCt; struct VNamelist * List; RCt = 0; if ( self == NULL || Keys == NULL ) { return XFS_RC ( rcNull ); } * Keys = NULL; RCt = VNamelistMake ( & List, 16 /* ?? */ ); if ( RCt == 0 ) { BSTreeForEach ( ( BSTree * ) self, false, _ListKeysCallback, List ); RCt = VNamelistToConstNamelist ( List, Keys ); VNamelistRelease ( List ); } return RCt; } /* XFSOwpListKeys () */
rc_t nlt_build_intersect( const KNamelist *nl1, const KNamelist *nl2, const KNamelist ** dst ) { VNamelist *v_names; rc_t rc = VNamelistMake ( &v_names, 5 ); if ( rc == 0 ) { /* loop through nl1: if a entry is found in nl2 -> add it to dst */ uint32_t count; rc = KNamelistCount( nl1, &count ); if ( rc == 0 ) { uint32_t idx; for ( idx = 0; idx < count && rc == 0; ++idx ) { const char *s; rc = KNamelistGet( nl1, idx, &s ); if ( rc == 0 && s != NULL ) { if ( nlt_is_name_in_namelist( nl2, s ) ) rc = VNamelistAppend ( v_names, s ); } } } if ( rc == 0 ) rc = VNamelistToConstNamelist ( v_names, dst ); VNamelistRelease( v_names ); } return rc; }
rc_t register_temp_file( temp_registry * self, uint32_t read_id, const char * filename ) { rc_t rc = 0; if ( self == NULL ) rc = RC( rcVDB, rcNoTarg, rcConstructing, rcSelf, rcNull ); else if ( filename == NULL ) rc = RC( rcVDB, rcNoTarg, rcConstructing, rcParam, rcNull ); else { rc = KLockAcquire ( self -> lock ); if ( rc == 0 ) { VNamelist * l = VectorGet ( &self -> lists, read_id ); if ( l == NULL ) { rc = VNamelistMake ( &l, 12 ); if ( rc == 0 ) { rc = VectorSet ( &self -> lists, read_id, l ); if ( rc != 0 ) VNamelistRelease ( l ); } } if ( rc == 0 && l != NULL ) { rc = VNamelistAppend ( l, filename ); if ( rc == 0 ) rc = Add_File_to_Cleanup_Task ( self -> cleanup_task, filename ); } KLockUnlock ( self -> lock ); } } return rc; }
rc_t make_column_namelist ( const BSTree *columns, KNamelist **names ) { VNamelist *list; rc_t rc = VNamelistMake ( & list, 8 ); if ( rc == 0 ) { const String *last = NULL; const VColumnRef *cref = ( const VColumnRef* ) BSTreeFirst ( columns ); while ( cref != NULL ) { if ( last == NULL || ! StringEqual ( last, & cref -> name ) ) { rc = VNamelistAppend ( list, cref -> name . addr ); if ( rc != 0 ) break; last = & cref -> name; } cref = ( const VColumnRef* ) BSTNodeNext ( & cref -> n ); } if ( rc == 0 ) rc = VNamelistToNamelist ( list, names ); VNamelistRelease ( list ); } return rc; }
rc_t nlt_copy_namelist( const KNamelist *src, const KNamelist ** dst ) { VNamelist *v_names; rc_t rc = VNamelistMake ( &v_names, 5 ); if ( rc == 0 ) { uint32_t count; rc = KNamelistCount( src, &count ); if ( rc == 0 ) { uint32_t idx; for ( idx = 0; idx < count && rc == 0; ++idx ) { const char *s; rc = KNamelistGet( src, idx, &s ); if ( rc == 0 && s != NULL ) rc = VNamelistAppend ( v_names, s ); } } if ( rc == 0 ) rc = VNamelistToConstNamelist ( v_names, dst ); VNamelistRelease( v_names ); } return rc; }
static void ref_walker_release( struct ref_walker * self ) { KDirectoryRelease( self->dir ); VDBManagerRelease( self->vmgr ); VSchemaRelease( self->vschema ); AlignMgrRelease ( self->amgr ); VFSManagerRelease ( self->vfs_mgr ); VNamelistRelease ( self->sources ); free_ref_regions( &self->regions ); free( ( void * )self->spot_group ); }
void release_cgi_request( struct cgi_request * request ) { if ( request != NULL ) { if ( request->kns_mgr != NULL ) KNSManagerRelease( request->kns_mgr ); if ( request->params != NULL ) VNamelistRelease( request->params ); if ( request->url != NULL ) free( ( void * ) request->url ); free( ( void * ) request ); } }
static const char * get_db_seq_tbl_name( tool_ctx_t * tool_ctx ) { const char * res = tool_ctx -> seq_tbl_name; VNamelist * tables = cmn_get_table_names( tool_ctx -> dir, tool_ctx -> accession_path ); /* cmn_iter.c */ if ( tables != NULL ) { int32_t idx; rc_t rc = VNamelistContainsStr( tables, consensus_table, &idx ); if ( rc == 0 && idx > -1 ) res = consensus_table; VNamelistRelease ( tables ); } return res; }
rc_t clear_cgi_request_params( struct cgi_request * request ) { rc_t rc; if ( request == NULL ) rc = RC( rcVDB, rcNoTarg, rcConstructing, rcParam, rcNull ); else { if ( request->params != NULL ) { rc = VNamelistRelease( request->params ); if ( rc == 0 ) rc = VNamelistMake( &request->params, 10 ); } } return rc; }
static rc_t clear_tool_options( tool_options * options ) { rc_t rc = VNamelistRelease ( options->paths ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "VNamelistRelease() failed in $(func)", "func=%s", __func__ ) ); } if ( options->user_repo_name != NULL ) { free( (void*) options->user_repo_name ); options->user_repo_name = NULL; } return rc; }
rc_t make_column_typelist ( const BSTree *columns, const char *col, uint32_t *dflt_idx, KNamelist **typedecls ) { VNamelist *list; rc_t rc = VNamelistMake ( & list, 8 ); if ( rc == 0 ) { uint32_t idx; const VColumnRef *first; String col_name; StringInitCString ( & col_name, col ); first = ( const VColumnRef* ) BSTreeFind ( columns, & col_name, VColumnRefCmpString ); if ( first != NULL ) { const VColumnRef *cref = ( const VColumnRef* ) BSTNodePrev ( & first -> n ); while ( cref != NULL && StringEqual ( & first -> name, & cref -> name ) ) { first = cref; cref = ( const VColumnRef* ) BSTNodePrev ( & cref -> n ); } for ( cref = first, idx = 0; ; ++ idx ) { rc = VNamelistAppend ( list, cref -> typedecl ); if ( rc != 0 ) break; if ( cref -> dflt ) * dflt_idx = idx; cref = ( const VColumnRef* ) BSTNodeNext ( & cref -> n ); if ( cref == NULL || ! StringEqual ( & first -> name, & cref -> name ) ) break; } } if ( rc == 0 ) rc = VNamelistToNamelist ( list, typedecls ); VNamelistRelease ( list ); } return rc; }
rc_t report_clear( p_report self ) { rc_t rc = 0; if ( self != NULL ) { VectorWhack ( &(self->data), report_data_whack, NULL ); VNamelistRelease ( self->columns ); /* ignores NULL */ if ( self->max_width != NULL ) { free( self->max_width ); self->max_width = NULL; } } else rc = RC( rcExe, rcNoTarg, rcConstructing, rcSelf, rcNull ); return rc; }
static rc_t print_headers_by_recalculating( const samdump_opts * opts, input_files * ifs ) { rc_t rc = KOutMsg( "@HD\tVN:1.3\n" ); if ( rc == 0 ) { BSTree tree; /* collect sequenc-id's and names and their lengths, unique by sequence-id */ BSTreeInit( &tree ); rc = build_seq_id_tree( &tree, ifs ); if ( rc == 0 ) { hdr_print_ctx hctx; hctx.rc = 0; hctx.use_seq_id = opts->use_seqid_as_refname; /* ptrint it */ BSTreeForEach( &tree, false, print_header_callback, &hctx ); rc = hctx.rc; } free_seq_id_tree( &tree ); /* collect spot-groups ( unique ) */ if ( rc == 0 ) { VNamelist * spotgroups; rc = VNamelistMake( &spotgroups, 10 ); if ( rc == 0 ) { bool from_stats = false; rc = extract_spotgroups( spotgroups, ifs, from_stats ); if ( rc == 0 ) rc = print_spotgroups( spotgroups, from_stats ); else rc = 0; /* otherwise the tool would be not able to handle something that has no headers */ VNamelistRelease( spotgroups ); } } } return rc; }
rc_t report_set_columns( p_report self, size_t count, ... ) { rc_t rc; if ( self != NULL ) { VNamelistRelease ( self->columns ); /* ignores NULL */ rc = VNamelistMake ( &self->columns, count ); if ( rc == 0 ) { self->col_count = count; if ( self->max_width != NULL ) free( self->max_width ); self->max_width = malloc( count * sizeof( *self->max_width ) ); if ( self->max_width == NULL ) rc = RC( rcExe, rcNoTarg, rcConstructing, rcMemory, rcExhausted ); if ( rc == 0 ) { size_t idx; va_list args; va_start ( args, count ); for ( idx = 0; idx < count && rc == 0; ++idx ) { const char * s = va_arg( args, const char * ); if ( s != NULL ) { rc = VNamelistAppend ( self->columns, s ); self->max_width[ idx ] = string_size( s ); } else { rc = VNamelistAppend ( self->columns, "." ); self->max_width[ idx ] = 1; } } va_end ( args ); }
LIB_EXPORT rc_t CC KDlsetList ( const KDlset *self, KNamelist **listp ) { list_dylib_param pb; assert ( listp != NULL ); if ( self == NULL ) pb . rc = RC ( rcFS, rcDylib, rcListing, rcSelf, rcNull ); else { pb . rc = VNamelistMake ( & pb . list, VectorLength ( & self -> name ) ); if ( pb . rc == 0 ) { bool fail = VectorDoUntil ( & self -> name, false, list_dylib, & pb ); if ( ! fail ) pb . rc = VNamelistToNamelist ( pb . list, listp ); VNamelistRelease ( pb . list ); } } return pb . rc; }
rc_t nlt_make_namelist_from_string( const KNamelist **list, const char * src ) { VNamelist *v_names; rc_t rc = VNamelistMake ( &v_names, 5 ); if ( rc == 0 ) { char * s = string_dup_measure ( src, NULL ); if ( s ) { uint32_t str_begin = 0; uint32_t str_end = 0; char c; do { c = s[ str_end ]; if ( c == ',' || c == 0 ) { if ( str_begin < str_end ) { char c_temp = c; s[ str_end ] = 0; rc = VNamelistAppend ( v_names, &(s[str_begin]) ); s[ str_end ] = c_temp; } str_begin = str_end + 1; } str_end++; } while ( c != 0 && rc == 0 ); free( s ); } if ( rc == 0 ) rc = VNamelistToConstNamelist ( v_names, list ); VNamelistRelease( v_names ); } return rc; }
static rc_t print_headers_from_file( const samdump_opts * opts ) { KDirectory * dir; rc_t rc = KDirectoryNativeDir ( &dir ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant created native directory for file '$(t)'", "t=%s", opts->header_file ) ); } else { const struct KFile * f; rc = KDirectoryOpenFileRead ( dir, &f, "%s", opts->header_file ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant open file '$(t)'", "t=%s", opts->header_file ) ); } else { VNamelist * headers; rc = VNamelistMake ( &headers, 25 ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant create container for file '$(t)'", "t=%s", opts->header_file ) ); } else { rc = LoadKFileToNameList( f, headers ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant load file '$(t)' into container", "t=%s", opts->header_file ) ); } else { uint32_t count; rc = VNameListCount ( headers, &count ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant get count for container of '$(t)'", "t=%s", opts->header_file ) ); } else { uint32_t i; for ( i = 0; i < count && rc == 0; ++i ) { const char * line; rc = VNameListGet ( headers, i, &line ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "cant get line #$(t) from container", "t=%u", i ) ); } else { rc = KOutMsg( "%s\n", line ); } } } } VNamelistRelease ( headers ); } KFileRelease ( f ); } KDirectoryRelease ( dir ); } return rc; }
static void CC destroy_list( void * item, void * data ) { if ( item != NULL ) VNamelistRelease ( item ); }
static rc_t gather_string_options( Args * args, samdump_opts * opts ) { const char * s; uint32_t count; rc_t rc = get_str_option( args, OPT_PREFIX, &s ); if ( rc == 0 && s != NULL ) { opts->qname_prefix = string_dup_measure( s, NULL ); if ( opts->qname_prefix == NULL ) { rc = RC( rcExe, rcNoTarg, rcValidating, rcMemory, rcExhausted ); (void)LOGERR( klogErr, rc, "error storing QNAME-PREFIX" ); } } if ( rc == 0 ) { rc = get_str_option( args, OPT_Q_QUANT, &s ); if ( rc == 0 && s != NULL ) { opts->qual_quant = string_dup_measure( s, NULL ); if ( opts->qual_quant == NULL ) { rc = RC( rcExe, rcNoTarg, rcValidating, rcMemory, rcExhausted ); (void)LOGERR( klogErr, rc, "error storing QUAL-QUANT" ); } else { bool bres = QualityQuantizerInitMatrix( opts->qual_quant_matrix, opts->qual_quant ); if ( !bres ) { rc = RC( rcExe, rcNoTarg, rcValidating, rcParam, rcInvalid ); (void)LOGERR( klogErr, rc, "error initializing quality-quantizer-matrix" ); } } } } if ( rc == 0 ) { rc = get_str_option( args, OPT_OUTPUTFILE, &s ); if ( rc == 0 && s != NULL ) { opts->outputfile = string_dup_measure( s, NULL ); if ( opts->outputfile == NULL ) { rc = RC( rcExe, rcNoTarg, rcValidating, rcMemory, rcExhausted ); (void)LOGERR( klogErr, rc, "error storing OUTPUTFILE" ); } } } if ( rc == 0 ) { rc = ArgsOptionCount( args, OPT_HDR_COMMENT, &count ); if ( rc == 0 && count > 0 ) { uint32_t i; rc = VNamelistMake( &opts->hdr_comments, 10 ); for ( i = 0; i < count && rc == 0; ++i ) { const char * src; rc = ArgsOptionValue( args, OPT_HDR_COMMENT, i, &src ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error retrieving comandline option '$(t)' #$(n)", "t=%s,n=%u", OPT_HDR_COMMENT, i ) ); } else { rc = VNamelistAppend( opts->hdr_comments, src ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error appending hdr-comment '$(t)'", "t=%s", src ) ); } } } if ( rc != 0 ) { VNamelistRelease( opts->hdr_comments ); opts->hdr_comments = NULL; } } } if ( rc == 0 ) { rc = ArgsParamCount( args, &count ); if ( rc == 0 && count > 0 ) { uint32_t i; rc = VNamelistMake( &opts->input_files, 10 ); for ( i = 0; i < count && rc == 0; ++i ) { const char * src; rc = ArgsParamValue( args, i, &src ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error retrieving comandline param #$(n)", "n=%u", i ) ); } else { rc = VNamelistAppend( opts->input_files, src ); if ( rc != 0 ) { (void)PLOGERR( klogErr, ( klogErr, rc, "error appending input_file '$(t)'", "t=%s", src ) ); } } } if ( rc != 0 ) { VNamelistRelease( opts->input_files ); opts->input_files = NULL; } } opts->input_file_count = count; } rc = get_str_option( args, OPT_CIGAR_TEST, &s ); if ( rc == 0 && s != NULL ) { opts->cigar_test = string_dup_measure( s, NULL ); if ( opts->cigar_test == NULL ) { rc = RC( rcExe, rcNoTarg, rcValidating, rcMemory, rcExhausted ); (void)LOGERR( klogErr, rc, "error storing CIGAR-TEST" ); } } return rc; }
static void CC report_data_whack( void *item, void *data ) { const VNamelist * values = item; if ( values != NULL ) VNamelistRelease ( values ); }
/* ListPhysColumns * avail: 2.4 */ LIB_EXPORT rc_t CC VTableListPhysColumns ( const VTable *self, KNamelist **names ) { rc_t rc; if ( names == NULL ) rc = RC ( rcVDB, rcTable, rcListing, rcParam, rcNull ); else { * names = NULL; if ( self == NULL ) rc = RC ( rcVDB, rcTable, rcListing, rcSelf, rcNull ); else { KNamelist *kcol_names; rc = KTableListCol ( self -> ktbl, & kcol_names ); if ( rc == 0 ) { uint32_t kcol_count; rc = KNamelistCount ( kcol_names, & kcol_count ); if ( rc == 0 ) { uint32_t scol_count = 0; KNamelist *scol_names = NULL; const KMDataNode *col_node = self -> col_node; #if LAZY_OPEN_COL_NODE if ( col_node == NULL ) { rc = KMetadataOpenNodeRead ( self -> meta, & ( ( VTable* ) self ) -> col_node, "col" ); if ( rc == 0 || GetRCState ( rc ) != rcNotFound ) col_node = self -> col_node; } #endif if ( col_node != NULL ) { rc = KMDataNodeListChildren ( col_node, & scol_names ); if ( rc == 0 ) rc = KNamelistCount ( scol_names, & scol_count ); } if ( rc == 0 ) { VNamelist *vnames; rc = VNamelistMake ( & vnames, kcol_count + scol_count ); if ( rc == 0 ) { uint32_t i; const char *name; for ( i = 0; i < kcol_count && rc == 0; ++ i ) { rc = KNamelistGet ( kcol_names, i, & name ); if ( rc == 0 ) rc = VNamelistAppend ( vnames, name ); } for ( i = 0; i < scol_count && rc == 0; ++ i ) { rc = KNamelistGet ( scol_names, i, & name ); if ( rc == 0 ) rc = VNamelistAppend ( vnames, name ); } if ( rc == 0 ) { rc = VNamelistToNamelist ( vnames, names ); if ( rc == 0 ) VNamelistReorder ( vnames, false ); } } VNamelistRelease ( vnames ); } KNamelistRelease ( scol_names ); } KNamelistRelease ( kcol_names ); } } } return rc; }
LIB_EXPORT rc_t CC XFS_SimpleTokenize_ZHR ( const char * SimpleString, char Separator, struct KNamelist ** Tokens ) { rc_t RCt; struct VNamelist * List; char LN [ XFS_SIZE_1024 ], * LNEnd; const char * End; RCt = 0; List = NULL; LNEnd = NULL; End = NULL; if ( Tokens == NULL || SimpleString == NULL ) { return XFS_RC ( rcNull ); } * Tokens = NULL; RCt = VNamelistMake ( & List, 16 /* he-he */ ); if ( RCt == 0 ) { End = SimpleString; LNEnd = LN; while ( * End != 0 ) { * LNEnd = * End; if ( * End == Separator ) { *LNEnd = 0; RCt = _AddTrimStringToList_ZHR ( List, LN ); if ( RCt != 0 ) { break; } LNEnd = LN; End ++; } else { End ++; LNEnd ++; } } if ( RCt == 0 ) { if ( LN != LNEnd ) { * LNEnd = 0; RCt = _AddTrimStringToList_ZHR ( List, LN ); } } if ( RCt == 0 ) { RCt = VNamelistToNamelist ( List, Tokens ); } VNamelistRelease ( List ); } return RCt; } /* XFS_SimpleTokenize_ZHR () */