4a030195664cbdd1d3c1a4b81b1ed41dbf6d9bc5
angie
  Fri Feb 15 14:02:58 2019 -0800
Prevent hgFind lib (specifically genomePos -> hgPositionsHtml) from opening a web page; instead, pass up results and warning messages to the calling CGI so it can open the page its own way.  refs #22945
hgTracks, hgTables and hgVai used to call findGenomePos{,Web} to resolve positions; hgTables and hgVai had to detect after the fact whether an HTML page had been started (with warnings and/or multiple results).
In fact, hgPositionsHtml called webEnd which could cause conflicts with what the CGI was doing afterwards.
Now, instead of findGenomePos{,Web} there is hgFindSearch which returns hgp and also warning messages, if any, via a dyString parameter.
The calling CGI decides how to open the page if necessary (for hgTracks, it's already open) and displays warnings/multiple results -- or just proceeds as usual with the single position result.

diff --git src/hg/hgVai/libifyMe.c src/hg/hgVai/libifyMe.c
index 3ec5709..6483455 100644
--- src/hg/hgVai/libifyMe.c
+++ src/hg/hgVai/libifyMe.c
@@ -1,70 +1,15 @@
 /* Stuff lifted from hgTables that should be libified. */
 
 /* Copyright (C) 2014 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 #include "common.h"
-#include "cheapcgi.h"
-#include "customTrack.h"
-#include "grp.h"
-#include "hdb.h"
-#include "hgFind.h"
-#include "hgMaf.h"
-#include "hui.h"
-#include "joiner.h"
-
-#include "libifyMe.h"
-#include "windowsToAscii.h"
-
-static boolean searchPosition(char *range, struct cart *cart, char *cartVar)
-/* Try and fill in region via call to hgFind. Return FALSE
- * if it can't find a single position. */
-{
-struct hgPositions *hgp = NULL;
-char retAddr[512];
-char position[512];
-char *chrom = NULL;
-int start=0, end=0;
-char *db = cloneString(cartString(cart, "db")); // gets clobbered if position is not found!
-safef(retAddr, sizeof(retAddr), "%s", cgiScriptName());
-hgp = findGenomePosWeb(db, range, &chrom, &start, &end,
-	cart, TRUE, retAddr);
-if (hgp != NULL && hgp->singlePos != NULL)
-    {
-    safef(position, sizeof(position),
-	    "%s:%d-%d", chrom, start+1, end);
-    cartSetString(cart, cartVar, position);
-    return TRUE;
-    }
-else if (start == 0)	/* Confusing way findGenomePosWeb says pos not found. */
-    {
-    cartSetString(cart, cartVar, hDefaultPos(db));
-    return FALSE;
-    }
-else
-    return FALSE;
-}
-
-boolean lookupPosition(struct cart *cart, char *cartVar)
-/* Look up position if it is not already seq:start-end.  Return FALSE if it puts
- * up multiple positions. */
-{
-char *db = cartString(cart, "db");
-char *range = windowsToAscii(cartUsualString(cart, cartVar, ""));
-boolean isSingle = TRUE;
-range = trimSpaces(range);
-if (range[0] != 0)
-    isSingle = searchPosition(range, cart, cartVar);
-else
-    cartSetString(cart, cartVar, hDefaultPos(db));
-return isSingle;
-}
 
 //#*** duplicated many places... htmlshell?
 void nbSpaces(int count)
 /* Print some non-breaking spaces. */
 {
 int i;
 for (i=0; i<count; ++i)
     printf("&nbsp;");
 }