summaryrefslogtreecommitdiffstats
path: root/proxy/src/gp_debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'proxy/src/gp_debug.c')
-rw-r--r--proxy/src/gp_debug.c42
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);
+}