common.h
changeset 23 31307efd7e78
parent 20 7512207c9041
child 24 8307d28329ae
--- a/common.h	Tue Jun 17 19:08:05 2008 +0300
+++ b/common.h	Thu Jun 26 01:32:56 2008 +0300
@@ -3,15 +3,14 @@
  * error handling
  */
 
-void _generic_err ( /*int level, */ const char *func, int perr, const char *fmt, ...)
-        __attribute__ ((format (printf, 3, 4)));
+void _generic_err ( /*int level, */ int use_stderr, const char *func, int perr, const char *fmt, ...)
+        __attribute__ ((format (printf, 4, 5)));
 
 // needs to be defined as its own function for the noreturn attribute
-void _generic_err_exit ( /* int level, */ const char *func, int perr, const char *fmt, ...)
-        __attribute__ ((format (printf, 3, 4)))
+void _generic_err_exit ( /* int level, */ int used_stderr, const char *func, int perr, const char *fmt, ...)
+        __attribute__ ((format (printf, 4, 5)))
         __attribute__ ((noreturn));
 
-/*
 enum _debug_level {
     DEBUG_FATAL,
     DEBUG_ERROR,
@@ -20,18 +19,19 @@
     DEBUG_DEBUG,
 };
 
+// not currently used
 extern enum _debug_level _cur_debug_level;
-*/
 
 // various kinds of ways to handle an error, 2**3 of them, *g*
-#define error(...)                  _generic_err(       NULL, 0, __VA_ARGS__)
-#define err_exit(...)               _generic_err_exit(  NULL, 0, __VA_ARGS__)
-#define perr(...)                   _generic_err(       NULL, 1, __VA_ARGS__)
-#define perr_exit(...)              _generic_err_exit(  NULL, 1, __VA_ARGS__)
-#define err_func(func, ...)         _generic_err(       func, 0, __VA_ARGS__)
-#define err_func_exit(func, ...)    _generic_err_exit(  func, 0, __VA_ARGS__)
-#define perr_func(func, ...)        _generic_err(       func, 1, __VA_ARGS__)
-#define perr_func_exit(func, ...)   _generic_err_exit(  func, 1, __VA_ARGS__)
+#define info(...)                   _generic_err(       0,  NULL,   0,  __VA_ARGS__ )
+#define error(...)                  _generic_err(       1,  NULL,   0,  __VA_ARGS__ )
+#define err_exit(...)               _generic_err_exit(  1,  NULL,   0,  __VA_ARGS__ )
+#define perr(...)                   _generic_err(       1,  NULL,   1,  __VA_ARGS__ )
+#define perr_exit(...)              _generic_err_exit(  1,  NULL,   1,  __VA_ARGS__ )
+#define err_func(func, ...)         _generic_err(       1,  func,   0,  __VA_ARGS__ )
+#define err_func_exit(func, ...)    _generic_err_exit(  1,  func,   0,  __VA_ARGS__ )
+#define perr_func(func, ...)        _generic_err(       1,  func,   1,  __VA_ARGS__ )
+#define perr_func_exit(func, ...)   _generic_err_exit(  1,  func,   1,  __VA_ARGS__ )
 
 // error(func + colon + msg, ...) + goto error
 #define ERROR(...) do { err_func(__func__, __VA_ARGS__); goto error; } while (0)
@@ -47,6 +47,17 @@
 #define DEBUG(...) if (0) { }
 #endif
 
+// default is to enable INFO
+#ifndef INFO_ENABLED
+#define INFO_ENABLED 1
+#endif
+
+#if INFO_ENABLED
+#define INFO(...) info(__VA_ARGS__)
+#else
+#define INFO(...) if (0) { }
+#endif
+
 /*
  * Parse a host:port string.
  *