diff options
-rw-r--r-- | eprintf.c | 26 | ||||
-rw-r--r-- | eprintf.h | 3 |
2 files changed, 29 insertions, 0 deletions
@@ -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; +} @@ -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 |