diff options
Diffstat (limited to 'proxy/src/gp_debug.c')
-rw-r--r-- | proxy/src/gp_debug.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/proxy/src/gp_debug.c b/proxy/src/gp_debug.c index f047e0d..4a1a26c 100644 --- a/proxy/src/gp_debug.c +++ b/proxy/src/gp_debug.c @@ -7,10 +7,11 @@ /* global debug switch */ int gp_debug; -void gp_debug_enable(void) +void gp_debug_enable(int level) { - gp_debug = 1; - GPDEBUG("Debug Enabled\n"); + if (level == 0) level = 1; + gp_debug = level; + GPDEBUG("Debug Enabled (level: %d)\n", level); } void gp_log_failure(gss_OID mech, uint32_t maj, uint32_t min) @@ -21,3 +22,38 @@ void gp_log_failure(gss_OID mech, uint32_t maj, uint32_t min) fprintf(stderr, "Failed with: %s\n", buf); } + +const char *gp_debug_timestamp(void) +{ + static __thread char buffer[24]; + static __thread time_t timestamp = 0; + struct tm tm_info; + time_t now; + + time(&now); + if (now == timestamp) return buffer; + + gmtime_r(&now, &tm_info); + strftime(buffer, 24, "[%Y/%m/%d %H:%M:%S]: ", &tm_info); + timestamp = now; + return buffer; +} + +void gp_debug_printf(const char *format, ...) +{ + va_list varargs; + va_start(varargs, format); + vfprintf(stderr, format, varargs); + va_end(varargs); +} + +void gp_debug_time_printf(const char *format, ...) +{ + va_list varargs; + + fprintf(stderr, "%s", gp_debug_timestamp()); + + va_start(varargs, format); + vfprintf(stderr, format, varargs); + va_end(varargs); +} |