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);
+}