7612fc3c53be2e8ee6dbf9b1cebfec72efb68e2b
galt
  Thu Aug 15 17:17:53 2013 -0700
adding support for null cart which is used in qaPushQ and maybe a few other places
diff --git src/hg/lib/web.c src/hg/lib/web.c
index 6eca08b..d99aeda 100644
--- src/hg/lib/web.c
+++ src/hg/lib/web.c
@@ -1322,69 +1322,75 @@
 }
 
 char *menuBar(struct cart *cart)
 // Return HTML for the menu bar (read from a configuration file);
 // we fixup internal CGI's to add hgsid's and include the appropriate js and css files.
 {
 char *docRoot = hDocumentRoot();
 char *menuStr, buf[4096], uiVars[128];
 FILE *fd;
 int len, offset, err;
 char *navBarFile = "inc/globalNavBar.inc";
 struct stat statBuf;
 regex_t re;
 regmatch_t match[2];
 char *scriptName = cgiScriptName();
+if (cart)
     safef(uiVars, sizeof(uiVars), "%s=%u", cartSessionVarName(), cartSessionId(cart));
+else
+    uiVars[0] = 0;
 
 if(docRoot == NULL)
     // tolerate missing docRoot (i.e. don't bother with menu when running from command line)
     return NULL;
 
 jsIncludeFile("jquery.js", NULL);
 jsIncludeFile("jquery.plugins.js", NULL);
 webIncludeResourceFile("nice_menu.css");
 
 // Read in menu bar html
 safef(buf, sizeof(buf), "%s/%s", docRoot, navBarFile);
 fd = mustOpen(buf, "r");
 fstat(fileno(fd), &statBuf);
 len = statBuf.st_size;
 menuStr = needMem(len + 1);
 mustRead(fd, menuStr, statBuf.st_size);
 menuStr[len] = 0;
 carefulClose(&fd);
 
+if (cart)
+    {
     // fixup internal CGIs to have hgsid
     safef(buf, sizeof(buf), "/cgi-bin/hg[A-Za-z]+(%c%c?)", '\\', '?');
     err = regcomp(&re, buf, REG_EXTENDED);
     if(err)
 	errAbort("regcomp failed; err: %d", err);
     struct dyString *dy = newDyString(0);
     for(offset = 0; offset < len && !regexec(&re, menuStr + offset, ArraySize(match), match, 0); offset += match[0].rm_eo)
 	{
 	dyStringAppendN(dy, menuStr + offset, match[0].rm_eo);
 	if(match[1].rm_so == match[1].rm_eo)
 	    dyStringAppend(dy, "?");
 	dyStringAppend(dy, uiVars);
 	if(match[1].rm_so != match[1].rm_eo)
 	    dyStringAppend(dy, "&");
 	}
     if(offset < len)
 	dyStringAppend(dy, menuStr + offset);
     freez(&menuStr);
     menuStr = dyStringCannibalize(&dy);
+    }
 if(!loginSystemEnabled())
     stripRegEx(menuStr, "<\\!-- LOGIN_START -->.*<\\!-- LOGIN_END -->", REG_ICASE);
 
 if(scriptName)
     {  // Provide optional official mirror servers menu items
     char *geoMenu = geoMirrorMenu();
     char *pattern = "<!-- OPTIONAL_MIRROR_MENU -->";
     char *newMenuStr = replaceChars(menuStr, pattern, geoMenu);
     freez(&menuStr);
     menuStr = newMenuStr;
     }
 
 
 if(scriptName)
     {