a1dcdda03cad5b931d17066789091a64f8dceca6
max
  Tue Nov 22 16:05:21 2016 -0800
adding bigDataIndex support to the table browser, refs #18420

diff --git src/hg/lib/hgBam.c src/hg/lib/hgBam.c
index de360f1..5e0ac5d 100644
--- src/hg/lib/hgBam.c
+++ src/hg/lib/hgBam.c
@@ -175,38 +175,45 @@
     sam->qual = lmCloneStringZ(lm, bamQual, core->l_qseq);
     addToChars(sam->qual, core->l_qseq, 33);
     }
 dyStringClear(dy);
 bamUnpackAux(bam, dy);
 sam->tagTypeVals = lmCloneStringZ(lm, dy->string, dy->stringSize);
 slAddHead(&helper->samList, sam);
 return 0;
 }
 
 struct samAlignment *bamFetchSamAlignmentPlus(char *fileOrUrl, char *chrom, int start, int end,
 	struct lm *lm,  char *refUrl, char *cacheDir)
 /* Fetch region as a list of samAlignments - which is more or less an unpacked
  * bam record.  Results is allocated out of lm, since it tends to be large... */
 {
+return bamAndIndexFetchSamAlignmentPlus(fileOrUrl, NULL, chrom, start, end, lm,  refUrl, cacheDir);
+}
+
+struct samAlignment *bamAndIndexFetchSamAlignmentPlus(char *fileOrUrl, char *baiUrl, char *chrom, int start, int end,
+	struct lm *lm,  char *refUrl, char *cacheDir)
+/* Like bamFetchSamAlignmentPlus but can specify bai index file url in addition to the bam file */
+{
 struct bamToSamHelper helper;
 helper.lm = lm;
 helper.chrom = chrom;
 helper.dy = dyStringNew(0);
 helper.samList = NULL;
 char posForBam[256];
 safef(posForBam, sizeof(posForBam), "%s:%d-%d", chrom, start+1, end);
-bamFetchPlus(fileOrUrl, posForBam, bamAddOneSamAlignment, &helper, &helper.samFile,
+bamAndIndexFetchPlus(fileOrUrl, baiUrl, posForBam, bamAddOneSamAlignment, &helper, &helper.samFile,
     refUrl, cacheDir);
 dyStringFree(&helper.dy);
 slReverse(&helper.samList);
 return helper.samList;
 }
 
 struct samAlignment *bamFetchSamAlignment(char *fileOrUrl, char *chrom, int start, int end,
 	struct lm *lm)
 /* Fetch region as a list of samAlignments - which is more or less an unpacked
  * bam record.  Results is allocated out of lm, since it tends to be large... */
 {
 return bamFetchSamAlignmentPlus(fileOrUrl, chrom, start, end, lm, NULL, NULL);
 }
 
 struct samAlignment *bamReadNextSamAlignments(samfile_t *fh, bam_hdr_t *header,  int count, struct lm *lm)