a43e257f2404b7af25e1df558a491566b5c53158
hiram
  Wed Sep 30 08:29:37 2020 -0700
allow database browsers to also display the chromAlias.txt file as download link when exists refs #24396

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index cb31886..752b995 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -10220,30 +10220,40 @@
 /* Show link to chrom.sizes file at end of chromInfo table (unless this is a hub) */
 {
 if (! trackHubDatabase(database))
     {
     cgiSimpleTableRowStart();
     cgiSimpleTableFieldStart();
     puts("Download as file:");
     cgiTableFieldEnd();
     cgiSimpleTableFieldStart();
     printf("<A HREF='http://%s/goldenPath/%s/bigZips/%s.chrom.sizes'>%s.chrom.sizes</A>",
            hDownloadsServer(), database, database, database);
     cgiTableFieldEnd();
     if (hasAlias)
 	{
 	cgiSimpleTableFieldStart();
+	/* see if this database has the chromAlias.txt download file */
+	char aliasFile[1024];
+        safef(aliasFile, sizeof aliasFile, "http://%s/goldenPath/%s/bigZips/%s.chromAlias.txt", hDownloadsServer(), database, database);
+        struct udcFile *file = udcFileMayOpen(aliasFile, udcDefaultDir());
+	if (file)
+	    {
+	    udcFileClose(&file);
+	    printf("<A HREF='%s'>%s.chromAlias.txt</A>", aliasFile, database);
+	    }
+	else
 	    puts("&nbsp");
 	cgiTableFieldEnd();
 	}
     cgiTableRowEnd();
     }
 else if (hubAliasFile)
     {
     cgiSimpleTableRowStart();
     cgiSimpleTableFieldStart();
     puts("Download as file:");
     cgiTableFieldEnd();
     cgiSimpleTableFieldStart();
     if (chromSizesFile)
 	{
         printf("<a href='%s' target=_blank>%s.chrom.sizes.txt</A>", chromSizesFile, trackHubSkipHubName(database));