bebcb6453c54164564b24899c6f407310b551a93 max Thu Jan 5 06:37:34 2023 -0800 first go at s3:// support, refs #30445 adding cache file to UDC protocol support, refs #30445 handling expired presigned URLs in udc protocol, refs #30445 diff --git src/lib/verbose.c src/lib/verbose.c index 9ba41c9..5db9b0f 100644 --- src/lib/verbose.c +++ src/lib/verbose.c @@ -1,40 +1,51 @@ /* verbose.c - write out status messages according to the * current verbosity level. These messages go to stderr. */ /* Copyright (C) 2011 The Regents of the University of California * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "portable.h" #include "verbose.h" +#include "obscure.h" static int logVerbosity = 1; /* The level of log verbosity. 0 is silent. */ static FILE *logFile; /* File to log to. */ static boolean checkedDotsEnabled = FALSE; /* have we check for dot output * being enabled? */ static boolean dotsEnabled = FALSE; /* is dot output enabled? */ +static boolean doHtml = FALSE; + void verboseVa(int verbosity, char *format, va_list args) /* Log with at given verbosity vprintf formatted args. */ { if (verbosity <= logVerbosity) { if (logFile == NULL) logFile = stderr; + if (doHtml) + { + char buf[4096]; + int threadId = get_thread_id(); + safef(buf, sizeof(buf), "%d %s
", threadId, format); // cannot do two printfs, as they are not thread safe, so the
will not stay with the line + vfprintf(logFile, buf, args); + } + else vfprintf(logFile, format, args); fflush(logFile); } } void verbose(int verbosity, char *format, ...) /* Write printf formatted message to log (which by * default is stderr) if global verbose variable * is set to verbosity or higher. */ { va_list args; va_start(args, format); verboseVa(verbosity, format, args); va_end(args); } @@ -117,15 +128,28 @@ if (sameString(name, "stdout")) logFile = stdout; else if (sameString(name, "stderr")) logFile = stderr; else logFile = mustOpen(name, "w"); } FILE *verboseLogFile() /* Get the verbose log file. */ { if (logFile == NULL) logFile = stderr; return logFile; } + +void verboseCgi(char *level) +/* Set verbosity level for a CGI: if level is not NULL, set output file to stdout, set verbosity and print a content-type header */ +{ + if (level==NULL) + return; + int levelNum = atoi(level); + verboseSetLevel(levelNum); + verboseSetLogFile("stdout"); + puts("Content-type: text/html\n"); + doHtml = TRUE; + verbose(0, "Debugging output activated, level %d", levelNum); +}