/* constants */
-#define DEBUG 3
-#define INFO 2
+#define DEBUG 3
+#define INFO 2
#define WARNING 1
-#define ERROR 0
+#define ERROR 0
+
+/* colors */
+
+#define COLOR_BLACK 30
+#define COLOR_RED 31
+#define COLOR_GREEN 32
+#define COLOR_YELLOW 33
+#define COLOR_BLUE 34
+#define COLOR_MAGENTA 35
+#define COLOR_CYAN 36
+#define COLOR_WHITE 37
+#define COLOR_DEFAULT 39
/* macros */
-#define VERBOSE(level, statement...) do { if (level <= verbose) { statement; } } while(0)
+#define VERBOSE(level, statement...) \
+ do { if (level <= verbose) { CHANGE_COLOR(level); statement; CHANGE_COLOR(-1); } } while(0)
+#define CHANGE_COLOR(level) \
+ fprintf ((level == ERROR) ? stderr : stdout, \
+ "\1\033[%dm\1", (level == ERROR) ? COLOR_RED : \
+ (level == WARNING) ? COLOR_YELLOW : \
+ (level == INFO) ? COLOR_BLUE : \
+ (level == DEBUG) ? COLOR_GREEN : COLOR_DEFAULT)
+
+/* vim: set ts=4 sw=4 et: */
/* gobal variables */
extern int verbose;