コード例 #1
0
static
rc_t CC
_AuthMake (
            const char * Name,
            bool NameDefaulted,
            bool CanRead,
            bool CanWrite,
            bool CanExecute,
            const struct XFSAuth ** Auth
)
{
    struct XFSAuth * TheAuth;

    if ( Name == NULL || Auth == NULL ) {
        return XFS_RC ( rcNull );
    }
    * Auth = NULL;

    TheAuth = calloc ( 1, sizeof ( struct XFSAuth ) );
    if ( TheAuth == NULL ) {
        return XFS_RC ( rcExhausted );
    }

    if ( ! NameDefaulted ) {
        TheAuth -> Name = string_dup_measure ( Name, NULL );
        if ( TheAuth -> Name == NULL ) {
            _AuthDispose ( TheAuth );

            return XFS_RC ( rcExhausted );
        }
    }
    else {
        TheAuth -> Name = ( char * ) Name;
    }

    TheAuth -> NameDefaulted = NameDefaulted;
    TheAuth -> CanRead = CanRead;
    TheAuth -> CanWrite = CanWrite;
    TheAuth -> CanExecute = CanExecute;

    * Auth = TheAuth;

    return 0;
}   /* _AuthMake () */
コード例 #2
0
ファイル: ascp.c プロジェクト: gconcepcion/sratoolkit
static rc_t _KConfigGetAscpRate(const KConfig *self, const char **max_rate) {
    String *s = NULL;
    assert(self && max_rate);
    *max_rate = NULL;
    s = _KConfigAscpString(self, "tools/ascp/max_rate", "Aspera max rate");
    if (s != NULL) {
        if (s->size == 0) {
            free(s);
        }
        else {
            *max_rate = string_dup_measure(s->addr, NULL);
            free(s);
            if (*max_rate == NULL) {
                free((void*)*max_rate);
                return RC(rcNS, rcStorage, rcAllocating, rcMemory, rcExhausted);
            }
        }
        return 0;
    }
    return 0;
}
コード例 #3
0
ファイル: ref_exclude.c プロジェクト: ncbi/sra-tools
rc_t make_ref_exclude( ref_exclude *exclude, KDirectory *dir,
                       const char * path, bool info )
{
    rc_t rc;

    BSTreeInit( &exclude->ref_nodes );
    BSTreeInit( &exclude->translations );

    exclude->last_used_ref_node = NULL;
    exclude->info = info;
    rc = VDBManagerMakeUpdate ( &exclude->mgr, dir );
    if ( rc != 0 )
    {
        LogErr( klogInt, rc, "VDBManagerMakeUpdate() in make_ref_exclude() failed\n" );
    }
    else
    {
        insert_trans_nodes( &exclude->translations );
        exclude->path = string_dup_measure ( path, NULL );
    }
    return rc;
}
コード例 #4
0
ファイル: vdb-dump-fastq.c プロジェクト: sungsoo/sratoolkit
rc_t vdf_main( const p_dump_context ctx, const VDBManager * mgr, const char * acc_or_path )
{
    rc_t rc = 0;
    fastq_ctx fctx;
    fctx.run_name = vdb_fastq_extract_run_name( acc_or_path );
    
    ctx->path = string_dup_measure ( acc_or_path, NULL );

    if ( USE_PATHTYPE_TO_DETECT_DB_OR_TAB ) /* in vdb-dump-context.h */
    {
        rc = vdb_fastq_by_pathtype( ctx, mgr, &fctx );
    }
    else
    {
        rc = vdb_fastq_by_probing( ctx, mgr, &fctx );
    }

    free( (char*)ctx->path );
    free( (void*)fctx.run_name );
    ctx->path = NULL;

    return rc;
}
コード例 #5
0
ファイル: cache-mgr.c プロジェクト: DCGenomics/sra-tools
static rc_t get_user_repo_name( const Args * args, const char ** name )
{
    uint32_t count;
    rc_t rc = ArgsOptionCount( args, OPTION_URNAME, &count );
    if ( rc != 0 )
    {
        PLOGERR( klogErr, ( klogErr, rc,
                 "ArgsOptionCount( $(option) ) failed in $(func)", "option=%s,func=%s", OPTION_URNAME, __func__ ) );
    }
    else if ( count > 0 )
    {
        const char * s = NULL;
        rc = ArgsOptionValue( args, OPTION_URNAME, 0, &s );
        if ( rc != 0 )
        {
            PLOGERR( klogErr, ( klogErr, rc,
                     "ArgsOptionValue( $(option), 0 ) failed in $(func)", "option=%s,func=%s", OPTION_URNAME, __func__ ) );
        }
        else if ( s != NULL )
            *name = string_dup_measure ( s, NULL );
    }
    return rc;
}
コード例 #6
0
ファイル: cgi_request.c プロジェクト: ncbi/sra-tools
rc_t make_cgi_request( struct cgi_request ** request, const char * url )
{
    rc_t rc = 0;
    cgi_request * r = calloc( 1, sizeof * r );
    if ( r == NULL )
    {
        rc = RC( rcVDB, rcNoTarg, rcConstructing, rcMemory, rcExhausted );
        ErrMsg( "calloc( %d ) -> %R", ( sizeof * r ), rc );
    }
    else
    {
        r->url = string_dup_measure( url, NULL );
        if ( r->url == NULL )
        {
            rc = RC( rcVDB, rcNoTarg, rcConstructing, rcMemory, rcExhausted );
            ErrMsg( "string_dup_measure( '%s' ) -> %R", url, rc );
        }
        else
        {
            DBGMSG ( DBG_APP, DBG_FLAG ( DBG_APP_1 ), ( "%s\n", r -> url ) );
            rc = VNamelistMake( &r->params, 10 );
            if ( rc != 0 )
                ErrMsg( "VNamelistMake() -> %R", rc );
            else
            {
                rc = KNSManagerMake( &r->kns_mgr );
                if ( rc != 0 )
                    ErrMsg( "KNSManagerMake() -> %R", rc );
                else
                    *request = r;
            }
        }
        if ( rc != 0 )
            release_cgi_request( r );
    }
    return rc;
}
コード例 #7
0
ファイル: redactval.c プロジェクト: Bhumi28/sra-tools
/* allocate a redact-value */
static p_redact_val redact_val_init( const char* name, 
                                     const uint32_t len,
                                     const char* value )
{
    p_redact_val res = NULL;
    if ( name == NULL ) return res;
    if ( name[0] == 0 ) return res;
    res = calloc( 1, sizeof( redact_val ) );
    if ( res == NULL ) return res;
    res->name = string_dup_measure ( name, NULL );
    res->len = len;
    res->value = NULL;
    if ( value != NULL )
    {
        if ( value[0] == '\'' && value[2] == '\'' )
        {
            res->value = malloc( sizeof value[0] );
            if ( res->value )
            {
                res->len = 1;
                *( ( char * )res->value ) = value[1];
            }
        }
        else
        {
            char *endptr;
            uint64_t x = strtou64( value, &endptr, 0 );
            if ( res->len > sizeof x )
                res->len = sizeof x;
            res->value = malloc( len );
            if ( res->value )
                memcpy( res->value, &x, res->len );
        }
    }
    return res;
}
コード例 #8
0
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;
}
コード例 #9
0
ファイル: remote-fuser-test.c プロジェクト: Jingyu9/sra-tools
static
rc_t CC
_SFTestMake ( const struct _SFTest ** Test, const char * Path )
{
    rc_t RCt;
    struct _SFTest * Ret;
    struct KDirectory * Dir;
    uint32_t PathType;
    uint64_t Size;

    RCt = 0;
    Ret = NULL;
    Dir = NULL;
    PathType = kptNotFound;
    Size = 0;

    if ( Test != NULL ) {
        * Test = NULL;
    }

    if ( Test == NULL || Path == NULL ) {
        return RC ( rcExe, rcNoTarg, rcProcessing, rcParam, rcNull );
    }

        /* First we shoud check that file exist
         */
    RCt = KDirectoryNativeDir ( & Dir );
    if ( RCt == 0 ) {
        PathType = KDirectoryPathType ( Dir, Path );
        if ( PathType == kptFile ) {
            RCt = KDirectoryFileSize ( Dir, & Size, Path );
            if ( Size == 0 ) {
                return RC ( rcExe, rcNoTarg, rcProcessing, rcParam, rcInvalid );
            }
        }
        else {
            return RC ( rcExe, rcNoTarg, rcProcessing, rcParam, rcInvalid );
        }
        KDirectoryRelease ( Dir );
    }

    if ( RCt == 0 ) {
        Ret = calloc ( 1, sizeof ( struct _SFTest ) );
        if ( Ret == NULL ) {
            RCt = RC ( rcExe, rcNoTarg, rcProcessing, rcParam, rcExhausted );
        }
        else {
            Ret -> path = string_dup_measure ( Path, NULL );
            if ( Ret -> path == NULL ) {
                RCt = RC ( rcExe, rcNoTarg, rcProcessing, rcParam, rcExhausted );
            }
            else {
                Ret -> size = Size;

                * Test = Ret;
            }
        }
    }

    if ( RCt != 0 ) {
        * Test = NULL;

        _SFTestDispose ( Ret );
    }

    return RCt;
}   /* _SFTestMake () */
コード例 #10
0
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;
}