f043c937a34269023b71d7a89b7ff25103e6c125
angie
  Mon Feb 24 15:35:59 2020 -0800
Check user custom track group setting instead of allowing any string.  Don't silently drop warnings.  refs #25003, #25016

diff --git src/hg/lib/customTrack.c src/hg/lib/customTrack.c
index 6b194f1..cc5b50b 100644
--- src/hg/lib/customTrack.c
+++ src/hg/lib/customTrack.c
@@ -854,30 +854,32 @@
 
         if (fileName && fileName[0])
             {
             struct dyString *ds = dyStringNew(0);
             dyStringPrintf(ds, "File '%s' - %s", fileName, msg);
             err = dyStringCannibalize(&ds);
             }
         else
             err = msg;
         }
     else
 	{
 	err = customTrackUnavailableErrsFromList(newCts);
 	if (err)
 	    newCts = NULL;  /* do not save the unhappy remote cts*/
+        if (isNotEmpty(errCatch->message->string))
+            err = catTwoStrings(emptyForNull(err), errCatch->message->string);
 	}
     errCatchFree(&errCatch);
     }
 
 /* the 'ctfile_$db' variable contains a filename from the trash directory.
  * The file is created by hgCustom or hgTables after the custom track list
  * is created.  The filename may be reused.  The file contents are
  * custom tracks in "internal format" that have already been parsed */
 
 char *ctFileName = NULL;
 struct customTrack *ctList = NULL, *replacedCts = NULL;
 struct customTrack *nextCt = NULL;
 boolean removedCt = FALSE;
 
 /* load existing custom tracks from trash file */