981b68955aada90b686af9ad7699e542c0ed24ff kate Tue Apr 13 12:22:00 2021 -0700 Extend #insert support in hgTrackDb to support variable substitution in filename. Prompted by single cell composite tracks, so subtracks can share a description page with subtrack-specific sections inserted. refs #27365 diff --git src/hg/lib/hVarSubst.c src/hg/lib/hVarSubst.c index 1893e30..3feb22f 100644 --- src/hg/lib/hVarSubst.c +++ src/hg/lib/hVarSubst.c @@ -225,30 +225,32 @@ dyStringAppend(dest, database); else if (sameString(varBase, "hgsid") && cart != NULL) dyStringAppend(dest, cartSessionId(cart)); } static void substTrackDbVar(char *desc, struct trackDb *tdb, char *database, char *varName, struct dyString *dest) /* substitute a variable value obtained from trackDb */ { if (sameString(varName, "matrix")) substMatrixHtml(tdb, dest); else if (sameString(varName, "chainLinearGap")) substLinearGap(tdb, dest); else if (sameString(varName, "downloadsServer")) dyStringAppend(dest, hDownloadsServer()); +else if (sameString(varName, "track")) + dyStringAppend(dest, tdb->track); else dyStringAppend(dest, lookupTrackDbSubVar(desc, tdb, varName, varName)); } static void substVar(char *desc, struct cart *cart, struct trackDb *tdb, char *database, char *varName, struct dyString *dest) /* look up varName and insert value in output string. Error if variable * can't be found */ { if (isDatabaseVar(varName)) substDatabaseVar(database, cart, varName, dest); else if (tdb == NULL) errAbort("invalid variable \"%s\" to substitute in %s", varName, desc); else if (startsWith("o_", varName) && isDatabaseVar(varName+2))