d5d715b018b9ae8a4f75f70a57662d4016158898 max Wed Feb 5 09:43:02 2014 -0800 Making hgPcr and hgBlat work in the browserbox. To do this, the gfblat lib needs to be able to split a filename that is actually a URL diff --git src/jkOwnLib/gfInternal.c src/jkOwnLib/gfInternal.c index f932e18..7c6ae82 100644 --- src/jkOwnLib/gfInternal.c +++ src/jkOwnLib/gfInternal.c @@ -75,31 +75,34 @@ if (isRc) reverseIntRange(&range->tStart, &range->tEnd, nib->size); gfiExpandRange(range, querySize, nib->size, respectFrame, isRc, expansion); target = nibLdPart(fileName, nib->f, nib->size, range->tStart, range->tEnd - range->tStart); if (isRc) { reverseComplement(target->dna, target->size); reverseIntRange(&range->tStart, &range->tEnd, nib->size); } *retTotalSeqSize = nib->size; } else { struct twoBitFile *tbf = NULL; - char *tSeqName = strchr(fileName, ':'); + // split a filename+chrom like "/gbdb/hg19/hg19.2bit:chr1" + // (can also be URL like "http://hgdownload.cse.ucsc.edu/gbdb/hg19/hg19.2bit:chr1") + // into filename and tSeqName + char *tSeqName = strrchr(fileName, ':'); int tSeqSize = 0; if (tSeqName == NULL) errAbort("No colon in .2bit response from gfServer"); *tSeqName++ = 0; tbf = hashFindVal(tFileCache, fileName); if (tbf == NULL) { tbf = twoBitOpen(fileName); hashAdd(tFileCache, fileName, tbf); } tSeqSize = twoBitSeqSize(tbf, tSeqName); if (isRc) reverseIntRange(&range->tStart, &range->tEnd, tSeqSize); gfiExpandRange(range, querySize, tSeqSize, respectFrame, isRc, expansion); target = twoBitReadSeqFragLower(tbf, tSeqName, range->tStart, range->tEnd);