summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eprintf.c26
-rw-r--r--eprintf.h3
2 files changed, 29 insertions, 0 deletions
diff --git a/eprintf.c b/eprintf.c
index 9f4aa11..d1cde98 100644
--- a/eprintf.c
+++ b/eprintf.c
@@ -9,6 +9,7 @@
#include "eprintf.h"
static char *pname;
+static int debug = 0;
// doprintf: print error message
__attribute__((format(printf, 1, 0)))
@@ -48,6 +49,25 @@ void weprintf(const char *fmt, ...)
va_end(va);
}
+// deprintf: print debug message if debugging is enabled
+void deprintf(const char *fmt, ...)
+{
+ va_list va;
+
+ assert(fmt != NULL);
+
+ if (!debug)
+ return;
+
+ if (pname != NULL)
+ fprintf(stderr, "%s: ", pname);
+
+ fputs("debug: ", stderr);
+ va_start(va, fmt);
+ vfprintf(stderr, fmt, va);
+ va_end(va);
+}
+
// estrdup: attempt to strdup a string or exit on error
char *estrdup(const char *s)
{
@@ -115,3 +135,9 @@ void setprogname(const char *s)
pname = estrdup(s);
}
+
+// setdebug: set debug
+void setdebug(int d)
+{
+ debug = d;
+}
diff --git a/eprintf.h b/eprintf.h
index 0bd662b..1afc4a6 100644
--- a/eprintf.h
+++ b/eprintf.h
@@ -7,10 +7,13 @@ noreturn void eprintf(const char *fmt, ...)
__attribute__((format(printf, 1, 2)));
void weprintf(const char *fmt, ...)
__attribute__((format(printf, 1, 2)));
+void deprintf(const char *fmt, ...)
+ __attribute__((format(printf, 1, 2)));
char *estrdup(const char *str);
void *emalloc(size_t size);
void *ecalloc(size_t nmemb, size_t size);
void *erealloc(void *p, size_t size);
void setprogname(const char *name);
+void setdebug(int d);
#endif // !EPRINTF_EPRINTF_H