19663905eef3c662d647b8da9d30ced044290713 max Fri Oct 24 06:33:41 2025 -0700 making hgMenubar not abort when run outside of an Apache SSI statement, refs #36580 diff --git src/hg/hgMenubar/hgMenubar.c src/hg/hgMenubar/hgMenubar.c index df6c9a2459f..e0e86341860 100644 --- src/hg/hgMenubar/hgMenubar.c +++ src/hg/hgMenubar/hgMenubar.c @@ -3,30 +3,32 @@ * On an Apache with activated SSI, a html statement like * * will include the menu bar into a static page. */ #include "common.h" #include "cheapcgi.h" #include "dystring.h" #include "filePath.h" #include "linefile.h" #include "jsHelper.h" #define CGI_NAME "cgi-bin/hgMenubar" #define NAVBAR_INC_PATH "/inc/globalNavBar.inc" #define OLD_HREF "href=\"../" +char* errMessage; + char *incFilePath(char *cgiPath, char *filePath, char *docRoot) /* Replace CGI_NAME in cgiPath with docRoot/filePath. filePath must begin with "/" eg "/inc/..." */ { char *incPath = replaceChars(cgiPath, "/"CGI_NAME, filePath); return catTwoStrings(docRoot, incPath); } void printIncludes(char* baseDir) { printf ("JavaScript is disabled in your web browserYou must have JavaScript enabled in your web browser to use the Genome Browser\n"); printf ("\n", baseDir); printf ("\n", baseDir); printf("\n", baseDir); printf ("\n", baseDir); } @@ -67,33 +69,40 @@ " e.currentTarget.href += \"&pix=\" + pix;\n" " }\n" " }\n" "});\n"); jsInlineFinish(); } void parseEnvOrDie (char **cgiPath, char** docRoot, char** pagePath) { *cgiPath = getenv("SCRIPT_NAME"); *docRoot = getenv("DOCUMENT_ROOT"); *pagePath = getenv("REDIRECT_URL"); if (*pagePath == NULL) *pagePath = getenv("DOCUMENT_URI"); +if (*pagePath == NULL) + { + *pagePath = cloneString("/inc/"); + errMessage = "Error: hgMenubar was run without the REDIRECT_URL or DOCUMENT_URI variable set. Looks like it wasn't run from an SSI statement. Defaulting to the 'inc/' directory, avoids errors in the Apache error log."; + } if ( (*cgiPath == NULL) || (*docRoot == NULL) || (*pagePath == NULL) ) { fprintf (stderr, "Error: bad invocation of menubar\n"); exit (1); } } int main(int argc, char *argv[]) /* Process command line. */ { char *cgiPath, *docRoot, *pagePath; parseEnvOrDie(&cgiPath, &docRoot, &pagePath); cgiSpoof(&argc, argv); char *incFile = cgiUsualString("incFile", NAVBAR_INC_PATH); printMenuBar(cgiPath, docRoot, pagePath, incFile); +if (errMessage) + puts(errMessage); return 0; }
JavaScript is disabled in your web browser
You must have JavaScript enabled in your web browser to use the Genome Browser