コード例 #1
0
ファイル: vdb_info.c プロジェクト: genome-vendor/sra-sdk
static void get_meta_info( vdb_info_data * data, const KMetadata * meta )
{
    const KMDataNode * node;
    rc_t rc = KMetadataOpenNodeRead ( meta, &node, "schema" );
    if ( rc == 0 )
    {
        size_t size;
        rc = KMDataNodeReadAttr ( node, "name", data->schema_name, sizeof data->schema_name, &size );
        if ( rc == 0 )
            data->schema_name[ size ] = 0;
        KMDataNodeRelease ( node );
    }

    rc = KMetadataOpenNodeRead ( meta, &node, "LOAD/timestamp" );
    if ( rc == 0 )
    {
        rc = KMDataNodeReadAsU64 ( node, &data->ts.timestamp );
        if ( rc == 0 )
        {
            KTime time_rec;
            KTimeLocal ( &time_rec, data->ts.timestamp );
            data->ts.year  = time_rec.year;
            data->ts.month = time_rec.month + 1;
            data->ts.day   = time_rec.day + 1;
            data->ts.hour  = time_rec.hour;
            data->ts.minute= time_rec.minute;
        }
        KMDataNodeRelease ( node );
    }

    get_meta_event( meta, "SOFTWARE/formatter", &data->formatter );
    get_meta_event( meta, "SOFTWARE/loader", &data->loader );
    get_meta_event( meta, "SOFTWARE/update", &data->update );
}
コード例 #2
0
ファイル: copy_meta.c プロジェクト: gconcepcion/sratoolkit
static rc_t fill_timestring( char * s, size_t size )
{
    KTime tr;
    rc_t rc;
    
    KTimeLocal ( &tr, KTimeStamp() );
/*
    rc = string_printf ( s, size, NULL, 
                         "%.04u-%.02u-%.02u %.02u:%.02u:%.02u",
                         tr.year, tr.month + 1, tr.day, tr.hour, tr.minute, tr.second );
*/
    rc = string_printf ( s, size, NULL, "%lT", &tr );

    DISP_RC( rc, "fill_timestring:string_printf( date/time ) failed" );
    return rc;
}
コード例 #3
0
ファイル: report-vdb.c プロジェクト: ImAWolf/ncbi-vdb
static rc_t VDBDependenciesReportDepend1(const VDBDependencies *self,
    const ReportFuncs *f,
    uint32_t count, uint32_t indent, bool toreport, uint32_t *missing)
{
    KDirectory *dir = NULL;
    rc_t rc = 0;
    uint32_t i = ~0;

    assert(missing);

    *missing = 0;

    for (i = 0; i < count; ++i) {
        bool isMissing = false;
        bool local = false;
        const char* seq_id = "";
        const char* path = NULL;
        rc = VDBDependenciesSeqId(self, &seq_id, i);
        if (rc != 0 && toreport)
            reportErrorStrInt(indent, rc, "VDBDependenciesSeqId",
                "origin", "VDatabaseListDependencies", "idx", i);
        if (rc == 0) {
            rc = VDBDependenciesLocal(self, &local, i);
            if (rc != 0 && toreport) {
                reportErrorStrInt(indent, rc,
                    "VDBDependenciesLocal",
                    "origin", "VDatabaseListDependencies", "idx", i);
            }
        }
        if (rc == 0) {
            rc = VDBDependenciesPath(self, &path, i);
            if (rc != 0 && toreport) {
                reportErrorStrInt(indent, rc, "VDBDependenciesPath",
                    "origin", "VDatabaseListDependencies", "idx", i);
            }
        }
        if (rc == 0) {
            if (!local && (path == NULL || path[0] == '\0')) {
                isMissing = true;
                ++*missing;
            }
            if (toreport) {
                bool reported = false;
                if (!isMissing && !local)  {
                    rc_t rc = 0;
                    bool readable = false;
                    uint64_t size = ~0;
                    KTime_t date = 0;
                    bool ready = false;
                    if (dir == NULL)
                    {   rc = KDirectoryNativeDir(&dir); }
                    assert(!local && path && path[0]);
                    if (dir != NULL) {
                        rc = KDirectoryFileSize(dir, &size, "%s", path);
                        if (rc == 0)
                        {   rc = KDirectoryDate(dir, &date, "%s", path); }
                        if (rc == 0) {
                            const KFile* f = NULL;
                            rc = KDirectoryOpenFileRead(dir, &f, "%s", path);
                            if (rc == 0) {
                                char buffer[1024];
                                size_t num_read = 0;
                                size_t bsize =
                                    size > sizeof buffer ? sizeof buffer : size;
                                rc = KFileReadAll(f,
                                    0, buffer, bsize, &num_read);
                                if (rc == 0 && num_read != bsize) {
                                    rc = RC(rcVDB, rcFile, rcReading,
                                        rcBuffer, rcExcessive);
                                }
                                if (rc == 0)
                                {   readable = true; }
                            }
                            KFileRelease(f);
                        }
                        if (rc == 0)
                        {   ready = true; }
                    }
                    if (ready) {
                        KTime kt;
                        memset(&kt, 0, sizeof kt);
                        KTimeLocal(&kt, date);
                        report(indent, "Dependency", 7,
                            "index", 'd', i,
                            "seq_id", 's', seq_id,
                            "local", 's', local ? "true" : "false",
                            "path", 's', path,
                            "size", 'u', size,
                            "date", 'T', &kt,
                            "readable", 's', readable ? "true" : "false");
                        reported = true;
                    }
                    else {
                        report(indent, "Dependency", 5,
                            "index", 'd', i,
                            "seq_id", 's', seq_id,
                            "local", 's', local ? "true" : "false",
                            "path", 's', path,
                            "error", 'R', rc);
                        reported = true;
                    }
                }
                if (!reported) {
                    report(indent, "Dependency", 4,
                        "index", 'd', i,
                        "seq_id", 's', seq_id,
                        "local", 's', local ? "true" : "false",
                        "path", 's', path == NULL ? "" : path);
                }
            }
        }
        if (rc != 0 && !toreport)
        {   break; }
    }

    RELEASE(KDirectory, dir);

    return rc;
}
コード例 #4
0
ファイル: tstate.c プロジェクト: ncbi/ncbi-vdb
/* Dump
 */
static
void KThreadEventDump ( ctx_t ctx, KTime_t timestamp, const KFuncLoc * loc,
    uint32_t lineno, xc_sev_t severity, xc_org_t origin, const void * xc_param,
    const char * msg, const KThreadEvtNode * node )
{
    const XCErr * xc = xc_param;

    size_t pre_size, sz;
    char pre [ 4096 ];

#if _DEBUGGING
    const char *fname;
#endif

    static const char * err_strings [ 3 ] [ 4 ] =
    {
        { "NOTE", "WARNING", "SYSTEM ERROR", "FATAL SYSTEM ERROR" },
        { "NOTE", "WARNING", "INTERNAL ERROR", "FATAL INTERNAL ERROR" },
        { "NOTE", "WARNING", "USER ERROR", "FATAL USER ERROR" }
    };

    KTime tm;
    KTimeLocal ( & tm, timestamp );
    string_printf ( pre, sizeof pre, & pre_size
                    , "%04u-%02u-%02uT%02u:%02u:%02u "
                    , tm . year
                    , tm . month + 1
                    , tm . day
                    , tm . hour
                    , tm . minute
                    , tm . second
        );

#if _DEBUGGING
    string_printf ( & pre [ pre_size ], sizeof pre - pre_size, & sz
                    , "%.*s/%s/%s.%s:%u:"
                    , sizeof __FILE__ -
                      sizeof __mod__  -
                      sizeof __file__ -
                      sizeof __fext__ -
                      1
                    , __FILE__
                    , loc -> src -> mod
                    , loc -> src -> file
                    , loc -> src -> ext
                    , lineno
                    , loc -> func
        );
    pre_size += sz;

    /* function name */
    fname = loc -> func;

    /* remove leading "Java_" from jni names */
    if ( memcmp ( loc -> func, "Java_", sizeof "Java_" - 1 ) == 0 )
        fname += sizeof "Java_" - 1;

    /* print it into buffer */
    string_printf ( & pre [ pre_size ], sizeof pre - pre_size, & sz
                    , "%s - "
                    , fname
        );

    /* convert jni names into Java fqn */
    if ( fname != loc -> func )
    {
        size_t i;
        for ( i = 0; i < sz; ++ i )
        {
            if ( pre [ pre_size + i ] == '_' )
                pre [ pre_size + i ] = '.';
        }
    }
    pre_size += sz;
#endif

    string_printf ( & pre [ pre_size ], sizeof pre - pre_size, & sz
                    , "%s: "
                    , err_strings [ origin ] [ severity ]
        );
    pre_size += sz;

#if _DEBUGGING
    string_printf ( & pre [ pre_size ], sizeof pre - pre_size, & sz
                    , "( %s ) "
                    , xc -> name
        );
    pre_size += sz;
#endif

    string_printf ( & pre [ pre_size ], sizeof pre - pre_size, & sz
                    , "%s %s"
                    , extract_desc_xobj ( xc )
                    , extract_desc_xstate ( xc )
        );
    pre_size += sz;

    if ( msg == NULL || msg [ 0 ] == 0 )
        fprintf ( stderr, "%s.\n", pre );
    else
        fprintf ( stderr, "%s - %s.\n", pre, msg );

#if _DEBUGGING
    if ( node != NULL )
    {
        fprintf ( stderr, "Stack Trace:\n" );
        do
        {
            fprintf ( stderr
                      , "    %s/%s.%s:%s\n"
                      , node -> loc -> src -> mod
                      , node -> loc -> src -> file
                      , node -> loc -> src -> ext
                      , node -> loc -> func
                );
            node = node -> parent;
        }
        while ( node != NULL );
    }
    else if ( ctx != NULL )
    {
        fprintf ( stderr, "Stack Trace:\n" );
        do
        {
            fprintf ( stderr
                      , "    %s/%s.%s:%s\n"
                      , ctx -> loc -> src -> mod
                      , ctx -> loc -> src -> file
                      , ctx -> loc -> src -> ext
                      , ctx -> loc -> func
                );
            ctx = ctx -> caller;
        }
        while ( ctx != NULL );
    }
#endif
}
コード例 #5
0
ファイル: cg-dump.c プロジェクト: DCGenomics/sra-tools
static rc_t write_header( cg_dump_opts * opts, struct sg_lookup * lookup, lane * l )
{
    char buffer[ 1024 ];
    size_t num_writ_buf;
    sg * entry = NULL;

    rc_t rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#GENERATED_BY\t%s\n", UsageDefaultName );
    if ( rc != 0 )
    {
        (void)LOGERR( klogErr, rc, "cannot generate GENERATED_BY for header" );
    }
    else
        rc = write_header_line( l, buffer, num_writ_buf );

    if ( rc == 0 )
    {
        KTime now;
        KTimeLocal ( &now, KTimeStamp () );
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#GENERATED_AT\t%lT\n", &now );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate GENERATED_AT for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#SOFTWARE_VERSION\t%.3V\n", KAppVersion() );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate SOFTWARE_VERSION for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#FORMAT_VERSION\t2.0\n" );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate FORMAT_VERSION for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#TYPE\tSAM_READS\n" );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate SAM_READS for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#SLIDE\t%.*s\n", ( l->name->len - 4 ), l->name->addr );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate SLIDE for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#LANE\t%.*s\n", 3, l->name->addr + ( ( l->name->len - 3 ) ) );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate LANE for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#BATCH_FILE_NUMBER\t%d\n", l->chunk );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate BATCH_FILE_NUMBER for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#LANE\t%S\n", l->name );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate LANE(2) for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        perform_sg_lookup( lookup, l->name, &entry );
        if ( entry != NULL )
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#LIBRARY\t%S\n", &entry->lib );
        else
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#LIBRARY\t%s\n", opts->lib );   /* opts->lib */
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate LIBRARY for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        if ( entry != NULL )
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#SAMPLE\t%S\n", &entry->sample );
        else
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#SAMPLE\t%s\n", opts->sample );   /* opts->sample */
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate SAMPLE for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        if ( entry != NULL )
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#FIELD_SIZE\t%S\n", &entry->field_size );
        else
            rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "#FIELD_SIZE\t460800\n" );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate FIELD_SIZE for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }

    if ( rc == 0 )
    {
        rc = string_printf ( buffer, sizeof buffer, &num_writ_buf, "\n>readOffset\tside\tbases\tscores\n" );
        if ( rc != 0 )
        {
            (void)LOGERR( klogErr, rc, "cannot generate columns for header" );
        }
        else
            rc = write_header_line( l, buffer, num_writ_buf );
    }
    return rc;
}