From 89bf98ed54da03267e0d49d7d71e8b7fe70b6ae4 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 22 Jan 2011 12:55:48 -0500 Subject: Using FastCGI debug info --- src/c/fastcgi.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/c') diff --git a/src/c/fastcgi.c b/src/c/fastcgi.c index 756ed3b0..1498580b 100644 --- a/src/c/fastcgi.c +++ b/src/c/fastcgi.c @@ -134,6 +134,8 @@ static int write_stdout(void *data, const char *buf, size_t len) { return 0; } +#include + static void write_stderr(FCGI_Output *o, const char *fmt, ...) { int len; va_list ap; @@ -167,6 +169,24 @@ static void log_error(void *data, const char *fmt, ...) { } static void log_debug(void *data, const char *fmt, ...) { + FCGI_Output *o = (FCGI_Output *)data; + va_list ap; + va_start(ap, fmt); + + if (o) { + strcpy((char *)o->r.contentData, "DEBUG: "); + int len = vsnprintf((char *)o->r.contentData + 7, 65535 - 7, fmt, ap); + if (len < 0) + fprintf(stderr, "vsnprintf() failed in log_debug().\n"); + else if (fastcgi_send(o, FCGI_STDERR, len + 7)) { + len += 7; + if (len >= 65535) len = 65534; + o->r.contentData[len] = 0; + fputs((char *)o->r.contentData, stderr); + fflush(stderr); + } + } else + vfprintf(stderr, fmt, ap); } typedef struct { -- cgit v1.2.3