b24581fff3eb64801b297ad8b3ad260d1c2cbd15
galt
  Thu May 4 02:23:26 2017 -0700
Added errCatch around bed validation which can errAbort. Minor tweak to textarea improves whitespace newline handling for BED input.

diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c
index e1ca566..63a93dc 100644
--- src/hg/hgTracks/config.c
+++ src/hg/hgTracks/config.c
@@ -628,53 +628,51 @@
 /* obsolete    
 if (conn && sqlTableExists(conn,"knownCanonical"))
     {
     hPrintf("<TR><TD>");
     cgiMakeRadioButton("virtModeType", "kcGenes", sameWord("kcGenes", virtModeType));
     hPrintf("</TD><TD>");
     hPrintf("Show gene regions genome-wide.");
     hPrintf("</TD></TR>\n");
     }
 */
 
 hPrintf("<TR><TD>");
 cgiMakeRadioButton("virtModeType", "customUrl", sameWord("customUrl", virtModeType));
 hPrintf("</TD><TD>");
 hPrintf("Enter Custom regions as BED, or a URL to them:<br>");
-//OLDWAY  GALT TODO REMOVE 
-//hTextVar("multiRegionsBedUrl", cartUsualString(cart, "multiRegionsBedUrl", multiRegionsBedUrl), 60);
 multiRegionsBedUrl = cartUsualString(cart, "multiRegionsBedUrl", multiRegionsBedUrl);
 struct dyString *dyMultiRegionsBedInput = dyStringNew(256);
 if (strstr(multiRegionsBedUrl,"://"))
     {
     dyStringAppend(dyMultiRegionsBedInput, multiRegionsBedUrl);
     }
 else
     {
     if (fileExists(multiRegionsBedUrl))
 	{
 	struct lineFile *lf = lineFileMayOpen(multiRegionsBedUrl, TRUE);
 	char *line;
 	int lineSize;
 	while (lineFileNext(lf, &line, &lineSize))
 	    {
 	    dyStringPrintf(dyMultiRegionsBedInput, "%s\n", line);
 	    }
 	lineFileClose(&lf);
 	}
     }
-hPrintf("<TEXTAREA NAME='multiRegionsBedInput' ID='multiRegionsBedInput' rows='4' cols='60'>%s</TEXTAREA>",
+hPrintf("<TEXTAREA NAME='multiRegionsBedInput' ID='multiRegionsBedInput' rows='4' cols='58' style='white-space: pre;'>%s</TEXTAREA>",
     dyMultiRegionsBedInput->string);
 hPrintf("</TD></TR>\n");
 
 
 /* The AllChroms option will be released in future
 if (emGeneTable && sqlTableExists(conn, emGeneTable))
     {
     hPrintf("<TR><TD>");
     cgiMakeRadioButton("virtModeType", "singleTrans", sameWord("singleTrans", virtModeType));
     hPrintf("</TD><TD>");
     hPrintf("Show only one transcript using an ID from %s : ", emGeneTrack->shortLabel);
     char *trans = cartUsualString(cart, "singleTransId", singleTransId);
     char sql[1024];
     sqlSafef(sql, sizeof sql, "select name from %s where name='%s'", emGeneTable, trans);
     char *result = sqlQuickString(conn, sql);