16439684a0ecc75ede242ded740c51cf1f60c8a4 angie Tue Feb 22 11:36:43 2011 -0800 Feature #2820 (tabix: add as optional linked library in kent/src):Added lineFile wrapper on tabix: lineFileOnTabix to open; then lineFileNext and its derivatives work as usual. lineFileSetTabixRegion seeks to the given position range, and subsequent lineFileNext's return lines in that position range. lineFileSeek is not supported -- tabix doesn't have linear offsets but rather a block number and offset which are packed into 64 bits. Line numbers are not known after calls to lineFileSetTabixRegion. diff --git src/hg/lib/knetUdc.c src/hg/lib/knetUdc.c deleted file mode 100644 index 25c8229..0000000 --- src/hg/lib/knetUdc.c +++ /dev/null @@ -1,87 +0,0 @@ -/* knetUdc -- install udc i/o functions in knetfile interface in samtools. */ -/* As of 2/23/10, the KNETFILE_HOOKS extension is a UCSC-local modification of samtools. */ - -#if (defined USE_BAM && defined KNETFILE_HOOKS) - -#include "common.h" -#include "udc.h" -#include "knetUdc.h" -#include "knetfile.h" - -static char const rcsid[] = "$Id: knetUdc.c,v 1.3 2010/03/10 23:52:06 angie Exp $"; - -struct knetFile_s { - struct udcFile *udcf; -}; // typedef'd to knetFile in knetfile.h - -static char *udcCacheDir = NULL; - -static knetFile *kuOpen(const char *filename, const char *mode) -/* Open the given filename with mode which must be "r". */ -{ -if (!sameOk((char *)mode, "r")) - errAbort("mode passed to kuOpen must be 'r' not '%s'", mode); -struct udcFile *udcf = udcFileMayOpen((char *)filename, udcCacheDir); -if (udcf == NULL) - return NULL; -knetFile *kf = NULL; -AllocVar(kf); -kf->udcf = udcf; -verbose(2, "kuOpen: returning %lu\n", (unsigned long)(kf->udcf)); -return kf; -} - -static knetFile *kuDopen(int fd, const char *mode) -/* Open from a file descriptor -- not necessary for our use of samtools. */ -{ -errAbort("kuDopen not implemented"); -return NULL; -} - -static off_t kuRead(knetFile *fp, void *buf, off_t len) -/* Read len bytes into buf, return amount actually read. */ -{ -verbose(2, "udcRead(%lu, buf, %lld)\n", (unsigned long)(fp->udcf), (long long)len); -return (off_t)udcRead(fp->udcf, buf, (int)len); -} - -static off_t kuSeek(knetFile *fp, int64_t off, int whence) -/* Seek to off according to whence (but don't waste time with samtools' SEEK_END to - * check empty record at end of file. Don't be fooled by the off_t return type -- - * it's 0 for OK, non-0 for fail. */ -{ -bits64 offset; -if (whence == SEEK_SET) - offset = off; -else if (whence == SEEK_CUR) - offset = off+ udcTell(fp->udcf); -else - return -1; -verbose(2, "udcSeek(%lu, %lld)\n", (unsigned long)(fp->udcf), offset); -udcSeek(fp->udcf, offset); -return 0; -} - -static off_t kuTell(knetFile *fp) -/* Tell current offset in file. */ -{ -verbose(2, "udcTell(%lu)\n", (unsigned long)(fp->udcf)); -return udcTell(fp->udcf); -} - -static int kuClose(knetFile *fp) -/* Close and free fp->udcf. */ -{ -verbose(2, "udcClose(%lu)\n", (unsigned long)(fp->udcf)); -udcFileClose(&(fp->udcf)); -return 0; -} - -void knetUdcInstall() -/* install udc i/o functions in knetfile interface in Heng Li's samtools lib. */ -{ -// maybe init udcCacheDir from hg.conf? -knet_init_alt(kuOpen, kuDopen, kuRead, kuSeek, kuTell, kuClose); -} - -#endif//def USE_BAM && KNETFILE_HOOKS