b29f1fbf93c9df5aa65fed050d9f8132dc6a2c73 braney Tue Nov 24 14:20:10 2015 -0800 support htslib for sam/bam/cram/tabix support #14717 diff --git src/lib/knetUdc.c src/lib/knetUdc.c index 4bbf9c2..0b85438 100644 --- src/lib/knetUdc.c +++ src/lib/knetUdc.c @@ -1,40 +1,49 @@ /* 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. */ /* Copyright (C) 2014 The Regents of the University of California * See README in this or parent directory for licensing information. */ #if ((defined USE_BAM || defined USE_TABIX) && defined KNETFILE_HOOKS) #include "common.h" #include "udc.h" #include "knetUdc.h" +#ifdef USE_HTS +#include "htslib/knetfile.h" +#else #include "knetfile.h" struct knetFile_s { struct udcFile *udcf; }; // typedef'd to knetFile in knetfile.h +#endif static char *udcCacheDir = NULL; static knetFile *kuOpen(const char *filename, const char *mode) /* Open the given filename with mode which must be "r". */ { +#ifdef USE_HTS +if (!(sameOk((char *)mode, "r") || sameOk((char *)mode, "rb"))) + errAbort("mode passed to kuOpen must be 'r' or 'rb' not '%s'", mode); +#else if (!sameOk((char *)mode, "r")) errAbort("mode passed to kuOpen must be 'r' not '%s'", mode); +#endif 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;