c3bb5a0e0757e2f66a06395b05fc78a7f2957e87
hiram
  Fri Mar 23 11:34:33 2018 -0700
manage dataVersion trackDb setting in conjuction with hgFixed.trackVersion table refs #20215

diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index c992b97..61068af 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -8957,56 +8957,64 @@
 ins[11] = "$n";
 outs[11] = scName;
 
 ins[12] = "$taxId";
 outs[12] = taxId;
 
 uUrl = subMulti(url, ArraySize(ins), ins, outs);
 outs[0] = eItem;
 eUrl = subMulti(url, ArraySize(ins), ins, outs);
 freeDyString(&uUrl);
 freeMem(eItem);
 freeMem(scName);
 return eUrl->string;
 }
 
-void printDataVersion(char *database, struct trackDb *tdb)
-/* If this annotation has a dataVersion setting, print it.
- * check hgFixed.trackVersion, meta data and trackDb 'dataVersion'. */
+char *checkDataVersion(char *database, struct trackDb *tdb)
+/* see if trackDb has a dataVersion setting and check that file for version */
 {
 // try the metadata
 metadataForTable(database, tdb, NULL);
 char *version = (char *)metadataFindValue(tdb, "dataVersion");
 
 // try trackDb itself, this automatically will go up the hierarchy
 if (version == NULL)
     version = trackDbSetting(tdb, "dataVersion");
 
 if (version != NULL)
     {
     // dataVersion can also be the path to a local file, for otto tracks
     if (!trackHubDatabase(database) && !isHubTrack(tdb->table) && startsWith("/", version))
         {
         char *path = replaceInUrl(version, "", NULL, database, "", 0, 0, tdb->track, FALSE);
         struct lineFile* lf = lineFileMayOpen(path, TRUE);
         if (lf)
             version = lineFileReadAll(lf);
         else
             version = NULL;
         lineFileClose(&lf);
         }
     }
+return version;
+}
+
+void printDataVersion(char *database, struct trackDb *tdb)
+/* If this annotation has a dataVersion setting, print it.
+ * check hgFixed.trackVersion, meta data and trackDb 'dataVersion'. */
+{
+char *version = checkDataVersion(database, tdb);
+
 if (version == NULL)
     {
     // try the hgFixed.trackVersion table
     struct trackVersion *trackVersion = getTrackVersion(database, tdb->track);
     // try trackVersion table with parent, for composites/superTracks
     if (trackVersion == NULL && tdb->parent != NULL)
         trackVersion = getTrackVersion(database, tdb->parent->track);
     if (trackVersion != NULL)
         version = trackVersion->version;
     }
 
 if (isNotEmpty(version))
     printf("<B>Data version:</B> %s <BR>\n", version);
 }