2c8912b056f0460badfcad9cce2e5c0a8c290c6d kent Tue Jan 12 18:06:55 2021 -0800 Refactoring code so that in both hubs and in built in tracks the same trackDb fields are D substituted for file names so they don't have to be maintained in parallel. Build a new trackSettingIsFile routine to enable this and am calling it in the two places that used to decide whether to do a substitution. diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index eaad09f..bb0b130 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -890,41 +890,38 @@ static void expandOneUrl(struct hash *settingsHash, char *hubUrl, char *variable) { struct hashEl *hel = hashLookup(settingsHash, variable); if (hel != NULL) { char *oldVal = hel->val; hel->val = trackHubRelativeUrl(hubUrl, oldVal); freeMem(oldVal); } } static void expandBigDataUrl(struct trackHub *hub, struct trackHubGenome *genome, struct trackDb *tdb) /* Expand bigDataUrls so that no longer relative to genome->trackDbFile */ { -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "bigDataUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "bigDataIndex"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "frames"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "summary"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "linkDataUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "searchTrix"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "barChartSampleUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "barChartMatrixUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, "barChartStatsUrl"); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, SUBTRACK_HIDE_EMPTY_MULTIBED_URL); -expandOneUrl(tdb->settingsHash, genome->trackDbFile, SUBTRACK_HIDE_EMPTY_SOURCES_URL); +struct hashEl *hel; +struct hashCookie cookie = hashFirst(tdb->settingsHash); +while ((hel = hashNext(&cookie)) != NULL) + { + char *name = hel->name; + if (trackSettingIsFile(name)) + expandOneUrl(tdb->settingsHash, genome->trackDbFile, name); + } } struct trackHubGenome *trackHubFindGenome(struct trackHub *hub, char *genomeName) /* Return trackHubGenome of given name associated with hub. Return NULL if no * such genome. Check genomeName without hub prefix to see if this hub * is attached to an assembly hub.*/ { struct trackHubGenome *ret = hashFindVal(hub->genomeHash, genomeName); if (ret == NULL) ret = hashFindVal(hub->genomeHash, hubConnectSkipHubPrefix(genomeName)); return ret; } static void requireBarChartBars(struct trackHub *hub, struct trackHubGenome *genome, struct trackDb *tdb)