--- 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.
*