4727e0251c76f69905d0748adab43484166d6870
angie
  Fri Mar 14 16:42:14 2014 -0700
In code review, Max pointed out that it's non-standard to conditionallyinclude header files in the middle of a .c file.  While looking at it,
I realized that there were a lot of unnecessary #ifdef's for KNETFILE_HOOKS
in general, all because there was not yet an #else implementation of
knetUdcInstall, which can be a no-op if KNETFILE_HOOKS is not used.
So I yanked out a lot of unnecessary old stuff, and tested basic bam and
vcf track operations with a few settings:

USE_SAMTABIX   USE_BAM   USE_TABIX   KNETFILE_HOOKS
1     (these tree are all implied by USE_SAMTABIX)
0        1          0       0
0        1          0       1
0        0          1       1
USE_TABIX without KNETFILE_HOOKS doesn't work because the tabix lib
wants to download .tbi files into the current working directory,
cgi-bin, and we don't allow that (and shouldn't!).  If we were going
to support that, we could add a change-dir solution as in bamFile.c,
but I don't think we need to support it now that there's samtabix.

refs #6235, refs #12850

diff --git src/hg/hgc/vcfClick.c src/hg/hgc/vcfClick.c
index c1237df..b563a7a 100644
--- src/hg/hgc/vcfClick.c
+++ src/hg/hgc/vcfClick.c
@@ -1,28 +1,30 @@
 /* vcfTrack -- handlers for Variant Call Format data. */
 
 #include "common.h"
 #include "dystring.h"
 #include "errCatch.h"
 #include "hCommon.h"
 #include "hdb.h"
 #include "hgc.h"
 #include "htmshell.h"
 #include "jsHelper.h"
 #include "pgSnp.h"
 #include "regexHelper.h"
 #include "trashDir.h"
+#include "knetUdc.h"
+#include "udc.h"
 #include "vcf.h"
 #include "vcfUi.h"
 
 #define NA "<em>n/a</em>"
 
 static void printKeysWithDescriptions(struct vcfFile *vcff, int wordCount, char **words,
 				      struct vcfInfoDef *infoDefs)
 /* Given an array of keys, print out a list of values with
  * descriptions if descriptions are available. */
 {
 int i;
 for (i = 0;  i < wordCount; i++)
     {
     if (i > 0)
 	printf(", ");
@@ -364,43 +366,36 @@
 char *displayAls[rec->alleleCount];
 makeDisplayAlleles(rec, showLeftBase, leftBase, 20, TRUE, FALSE, displayAls);
 printPosOnChrom(seqName, rec->chromStart, rec->chromEnd, NULL, FALSE, rec->name);
 printf("<B>Reference allele:</B> %s<BR>\n", displayAls[0]);
 vcfAltAlleleDetails(rec, displayAls);
 vcfQualDetails(rec);
 vcfFilterDetails(rec);
 vcfInfoDetails(rec);
 pgSnpCodingDetail(rec);
 makeDisplayAlleles(rec, showLeftBase, leftBase, 5, FALSE, TRUE, displayAls);
 vcfGenotypesDetails(rec, tdb->track, displayAls);
 }
 
 #ifdef USE_TABIX
 
-#if (defined KNETFILE_HOOKS)
-#include "knetUdc.h"
-#include "udc.h"
-#endif//def KNETFILE_HOOKS
-
 void doVcfTabixDetails(struct trackDb *tdb, char *item)
 /* Show details of an alignment from a VCF file compressed and indexed by tabix. */
 {
-#if (defined KNETFILE_HOOKS)
 knetUdcInstall();
 if (udcCacheTimeout() < 300)
     udcSetCacheTimeout(300);
-#endif//def KNETFILE_HOOKS
 int start = cartInt(cart, "o");
 int end = cartInt(cart, "t");
 struct sqlConnection *conn = hAllocConnTrack(database, tdb);
 char *fileOrUrl = bbiNameFromSettingOrTableChrom(tdb, conn, tdb->table, seqName);
 hFreeConn(&conn);
 int vcfMaxErr = -1;
 struct vcfFile *vcff = NULL;
 /* protect against temporary network error */
 struct errCatch *errCatch = errCatchNew();
 if (errCatchStart(errCatch))
     {
     vcff = vcfTabixFileMayOpen(fileOrUrl, seqName, start, end, vcfMaxErr, -1);
     }
 errCatchEnd(errCatch);
 if (errCatch->gotError)