4e84edcbf2bd31c87f184b2c63c92ad8691638a7
galt
  Thu Oct 6 01:35:15 2016 -0700
hgGateway needs early warn handlers. htmshell.c needs to also write error to stderr on early errors.

diff --git src/lib/htmshell.c src/lib/htmshell.c
index 7539218..56e645d 100644
--- src/lib/htmshell.c
+++ src/lib/htmshell.c
@@ -34,40 +34,47 @@
 }
 
 void htmlNoEscape()
 {
 NoEscape = TRUE;
 }
 
 void htmlDoEscape()
 {
 NoEscape = FALSE;
 }
 
 void htmlVaEncodeErrorText(char *format, va_list args)
 /* Write an error message encoded against XSS. */
 {
+va_list argscp;
+va_copy(argscp, args);
 char warning[1024];
 int sz = vaHtmlSafefNoAbort(warning, sizeof(warning), format, args, TRUE, FALSE);
 if (sz < 0)
     {
     safecpy(warning, sizeof(warning), "Low level error in htmlSafef. See error logs for details.");
     vfprintf(stderr, format, args);
     fprintf(stderr, "\n");
     fflush(stderr);
     }
 fprintf(stdout, "%s\n", warning);
+/* write warning/error message to stderr so they get logged. */
+vfprintf(stderr, format, argscp);
+fprintf(stderr, "\n");
+fflush(stderr);
+va_end(argscp);
 }
 
 
 void htmlVaParagraph(char *line, va_list args)
 /* Print a line in it's own paragraph. */
 {
 fputs("<P>", stdout);
 vfprintf(stdout, line, args);
 fputs("</P>\n", stdout);
 }
 
 void htmlParagraph(char *line, ...)
 {
 va_list args;
 va_start(args, line);