51d37943468dfb01f16b35654049a6aafb05ef9d
braney
  Wed Dec 5 14:36:37 2012 -0800
supertracks were being left out of the track name polishing regime. (#9254)
diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index ff0584b..1083a8f 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -462,52 +462,59 @@
     {
     if (c == ' ')
 	break;
 
     if (!(isalnum(c) || c == '-' || c == '_'))
 	*in = '_';
     }
 }
 
 static void polishOneTrack( struct trackHub *hub, struct trackDb *bt,
     struct hash *hash)
 /* get rid of special characters in track name, squirrel away a copy
  * of the original name for html retrieval, make sure there aren't 
  * two tracks with the same name */
 {
-char *htmlName = trackDbSetting(bt, "html");
+char *polished = trackDbSetting(bt, "polished");
+if (polished != NULL)
+    return;
 
+trackDbAddSetting(bt, "polished", "polished");
+
+char *htmlName = trackDbSetting(bt, "html");
 /* if the user didn't specify an html variable, set it to be the original
  * track name */
 if (htmlName == NULL)
     trackDbAddSetting(bt, "html", bt->track);
 
 fixName(bt->track);
 
 if (hashLookup(hash, bt->track) != NULL)
     errAbort("more than one track called %s in hub %s\n", bt->track, hub->url);
 hashStore(hash, bt->track);
 }
 
 void trackHubPolishTrackNames(struct trackHub *hub, struct trackDb *tdbList)
 /* remove all the special characters from trackHub track names */
 {
 struct trackDb *next, *tdb;
 struct hash *nameHash = hashNew(5);
 
 for (tdb = tdbList; tdb != NULL; tdb = next)
     {
+    if (tdb->parent != NULL)
+	polishOneTrack(hub, tdb->parent, nameHash);
     next = tdb->next;
     polishOneTrack(hub, tdb, nameHash);
     if (tdb->subtracks != NULL)
 	{
 	trackHubPolishTrackNames(hub, tdb->subtracks);
 	}
     }
 }
 
 static int hubCheckGenome(struct trackHub *hub, struct trackHubGenome *genome,
     struct dyString *errors, boolean checkTracks)
 /* Check out genome within hub. */
 {
 struct errCatch *errCatch = errCatchNew();
 struct trackDb *tdbList = NULL;