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 ); }
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; }
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; }
/* 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 }
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; }