void tmap_sam_io_set_vfo(tmap_sam_io_t *samio, int64_t bam_start_vfo, int64_t bam_end_vfo) { samio->bam_end_vfo = bam_end_vfo; if (bam_start_vfo > 0) { fprintf(stderr, "seeking to bam virtual file offset %lu\n", bam_start_vfo); BGZF* bgzf_fp = samio->fp->x.bam; if (0 > bam_seek(bgzf_fp, bam_start_vfo, SEEK_SET)) { fprintf(stderr, "error seeking to offset\n"); } } }
SEXP bamfile_isincomplete(SEXP ext) { int ans = FALSE; BAM_FILE bfile; if (NULL != BAMFILE(ext)) { _checkext(ext, BAMFILE_TAG, "isIncomplete"); bfile = BAMFILE(ext); if (NULL != bfile && NULL != bfile->file) { /* heuristic: can we read a record? bam_seek does not * support SEEK_END */ off_t offset = bam_tell(bfile->file->x.bam); char buf; ans = bam_read(bfile->file->x.bam, &buf, 1) > 0; bam_seek(bfile->file->x.bam, offset, SEEK_SET); } } return ScalarLogical(ans); }