e3bb4f76194bc1e842fa4a9c58422a3976df7361
max
  Wed Jul 15 03:28:25 2020 -0700
adding link to hosting docs to binary upload error message in hgCustom, refs #25891

diff --git src/hg/lib/customFactory.c src/hg/lib/customFactory.c
index 9c7e8ee..4198643 100644
--- src/hg/lib/customFactory.c
+++ src/hg/lib/customFactory.c
@@ -3409,49 +3409,53 @@
 
 static boolean bigDataOopsRecognizer(struct customFactory *fac,	struct customPp *cpp, char *type,
 				     struct customTrack *track)
 /* errAbort if looks like user uploaded a bigData file, otherwise return FALSE. */
 {
 char *line = customFactoryNextRealTilTrack(cpp);
 if (line == NULL)
     return FALSE;
 if (hasUnprintable(line, 6))
     {
     char *fileName = customPpFileName(cpp);
     if (type == NULL &&isNotEmpty(fileName))
 	{
 	if (endsWith(fileName, ".bam"))
 	    type = "bam";
-	else if (endsWith(fileName, ".bb"))
+	else if (endsWith(fileName, ".bb") || endsWith(fileName, ".bigBed"))
 	    type = "bigBed";
-	else if (endsWith(fileName, ".bw"))
+	else if (endsWith(fileName, ".bw") || endsWith(fileName, ".bigWig"))
 	    type = "bigWig";
 	}
     char *docUrl = NULL;
     if (isNotEmpty(type))
 	docUrl = bigDataDocPath(type);
     struct dyString *dataName = dyStringNew(0);
     if (isNotEmpty(fileName) && !sameString(fileName, CT_NO_FILE_NAME)
 	&& !startsWith("memory://", fileName))
 	dyStringPrintf(dataName, " (%s)", fileName);
     else if (track->tdb && track->tdb->shortLabel
 	     && differentString(track->tdb->shortLabel, CT_DEFAULT_TRACK_NAME))
 	dyStringPrintf(dataName, " (%s)", track->tdb->shortLabel);
     if (docUrl)
 	errAbort("It appears that you are directly uploading binary data of type %s%s.  "
 		 "Custom tracks of this type require the files to be accessible by "
-		 "public http/https/ftp, and file URLs must be passed as the bigDataUrl "
+		 "public http/https/ftp. Our <a href='../goldenPath/help/hgTrackHubHelp.html#Hosting' target=_blank>track hub documentation</a>"
+                 "lists third-party services where you can "
+                 "store custom track or track hub files. "
+                 "Once the files are available on the internet, file URLs can be entered as-is, one per line, "
+                 "or via the bigDataUrl "
 		 "setting on a &quot;track&quot; line.  "
 		 "See <A HREF='%s' TARGET=_BLANK>%s custom track documentation</A> for "
 		 "more information and examples.",
 		 type, dataName->string, docUrl, type);
     else
 	errAbort("It appears that you are directly uploading binary data in an unrecognized "
 		 "format%s.  For custom track formatting information, please see "
 		 "<A HREF='../goldenPath/help/customTrack.html' "
 		 "TARGET=_BLANK>custom track documentation</A>.", dataName->string);
     }
 customPpReuse(cpp, line);
 return FALSE;
 }
 
 static struct customTrack *bigDataOopsLoader(struct customFactory *fac, struct hash *chromHash,