f3aca36a01fb59700deb21186e015310f6676776
larrym
  Mon Oct 31 15:06:24 2011 -0700
skip tables which have "tableBrowser off" in trackDb (e.g. decipher; see redmine #5803)
diff --git src/hg/das/das.c src/hg/das/das.c
index add7b03..7b5d3df 100644
--- src/hg/das/das.c
+++ src/hg/das/das.c
@@ -202,47 +202,61 @@
 boolean ok = TRUE;
 word = nextWord(&line);
 if (word != NULL)
     {
     if (sameString("chain", word))
          ok = FALSE;
     else if (sameString("net", word))
          ok = FALSE;
     else if (sameString("netAlign", word))
          ok = FALSE;
     }
 freeMem(dupe);
 return ok;
 }
 
+static boolean disabledViaSettings(char *settings)
+// Return TRUE if this table is disabled via "tableBrowser off" in trackDb settings string.
+// We modify settings string (pass in a copy if you don't want it modified).
+{
+char *line;
+boolean disabled = FALSE;
+struct lineFile *lf = lineFileOnString("settings", TRUE, settings);
+
+while (!disabled && lineFileNext(lf, &line, NULL))
+    disabled = startsWith("tableBrowser off", line);
+lineFileClose(&lf);
+return disabled;
+}
+
 static struct hash *mkTrackTypeHash()
 /* build a hash of track name to type */
 {
 struct sqlConnection *conn = hAllocConn(database);
 struct hash *hash = hashNew(10);
 struct slName *trackDb, *trackDbs = hTrackDbList();
 for (trackDb = trackDbs; trackDb != NULL; trackDb = trackDb->next)
     {
     if (sqlTableExists(conn, trackDb->name))
         {
         char query[128];
-        safef(query, sizeof(query), "select tableName,type from %s", trackDb->name);
+        safef(query, sizeof(query), "select tableName,type,settings from %s", trackDb->name);
         struct sqlResult *sr = sqlGetResult(conn, query);
         char **row;
         while ((row = sqlNextRow(sr)) != NULL)
             {
-            if (dasableType(row[1]) && (hashLookup(hash, row[0]) == NULL))
+            if (dasableType(row[1]) && !disabledViaSettings(row[2]) && (hashLookup(hash, row[0]) == NULL))
                 hashAdd(hash, row[0], NULL);
             }
         sqlFreeResult(&sr);
         }
     }
 slFreeList(&trackDbs);
 hFreeConn(&conn);
 return hash;
 }
 
 static boolean dasableTrack(char *name)
 /* Return TRUE if track can be put into DAS format. */
 {
 static struct hash *types = NULL;
 if (types == NULL)