59dff194de2f867c3a8d3daaacace8d59dc7775b
braney
  Fri Jul 31 12:26:14 2026 -0700
quickLift: match trackDb types without regard to case, so 'type bigbed' is accepted

diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index 49a69f76283..2b030736a15 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -1871,50 +1871,52 @@
     dyStringPrintf(dy, "superTrack on show\n");
     }
 
 if (!isVetted(track))
     dyStringPrintf(dy, "avoidHandler on\n");
     
 dumpTdbAndChildren(cart, dy, tdb);
 
 return dy;
 }
 
 static boolean validateOneTdb(char *db, struct trackDb *tdb, struct trackDb **badList)
 /* Make sure the tdb is a track type we grok.  badList may be NULL to validate
  * silently (no user-facing complaint about non-liftable types). */
 {
+// trackDb types are matched without regard to case since that's how the rest of the
+// browser reads them (some trackDb stanzas say "bigbed" rather than "bigBed").
 if (sameString("cytoBandIdeo", trackHubSkipHubName(tdb->track)) ||
-    !( startsWith("bigBed", tdb->type) || \
-       startsWith("bigWig", tdb->type) || \
-       startsWith("bigDbSnp", tdb->type) || \
-       startsWith("bigGenePred", tdb->type) || \
-       startsWith("gvf", tdb->type) || \
-       startsWith("genePred", tdb->type) || \
-       startsWith("narrowPeak", tdb->type) || \
-       startsWith("bigLolly", tdb->type) || \
-       sameString("bed", tdb->type) ||
-       startsWith("bed ", tdb->type)))
+    !( startsWithNoCase("bigBed", tdb->type) || \
+       startsWithNoCase("bigWig", tdb->type) || \
+       startsWithNoCase("bigDbSnp", tdb->type) || \
+       startsWithNoCase("bigGenePred", tdb->type) || \
+       startsWithNoCase("gvf", tdb->type) || \
+       startsWithNoCase("genePred", tdb->type) || \
+       startsWithNoCase("narrowPeak", tdb->type) || \
+       startsWithNoCase("bigLolly", tdb->type) || \
+       sameWord("bed", tdb->type) ||
+       startsWithNoCase("bed ", tdb->type)))
     {
     if (badList != NULL)
         slAddHead(badList, tdb);
     return FALSE;
     }
 
 // make sure we have a bigDataUrl
-if (startsWith("bigBed", tdb->type) || \
-       startsWith("bigWig", tdb->type))
+if (startsWithNoCase("bigBed", tdb->type) || \
+       startsWithNoCase("bigWig", tdb->type))
     {
     char *fileName = cloneString(trackDbSetting(tdb, "bigDataUrl"));
 
     if (fileName == NULL)
         {
         struct sqlConnection *conn = hAllocConnTrack(db, tdb);
         fileName = bbiNameFromSettingOrTable(tdb, conn, tdb->table);
         hashAdd(tdb->settingsHash, "bigDataUrl", fileName);
         hFreeConn(&conn);
         }
     }
 
 return TRUE;
 }