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;