summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debug.c35
-rw-r--r--debug.h13
2 files changed, 48 insertions, 0 deletions
diff --git a/debug.c b/debug.c
new file mode 100644
index 0000000..f507f50
--- /dev/null
+++ b/debug.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007 Stig Venaas <venaas@uninett.no>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ */
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdarg.h>
+#include "debug.h"
+
+static uint8_t debug_level = 0;
+
+void debug(uint8_t level, char *format, ...) {
+ extern int errno;
+
+ if (level >= debug_level) {
+ va_list ap;
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ if (errno) {
+ fprintf(stderr, ": ");
+ perror(NULL);
+ fprintf(stderr, "errno=%d\n", errno);
+ } else
+ fprintf(stderr, "\n");
+ }
+ if (level >= DBG_ERR)
+ exit(1);
+}
diff --git a/debug.h b/debug.h
new file mode 100644
index 0000000..6249ee9
--- /dev/null
+++ b/debug.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2007 Stig Venaas <venaas@uninett.no>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ */
+
+#define DBG_INFO 16
+#define DBG_WARN 32
+#define DBG_ERR 64
+
+void debug(uint8_t level, char *format, ...);