-#define __log(Level, Fmt, ...) \
- if (log_level >= Level) { \
- syslog(Level, Fmt, ##__VA_ARGS__); \
+#define likely(expr) __builtin_expect((expr) != 0, 1)
+#define unlikely(expr) __builtin_expect((expr) != 0, 0)
+
+#define __level_name(L) \
+ ( (L) == LOG_DEBUG ? "debug " \
+ : (L) == LOG_NOTICE ? "notice" \
+ : (L) == LOG_INFO ? "info " \
+ : (L) == LOG_WARNING ? "warn " \
+ : (L) == LOG_ERR ? "error " \
+ : (L) == LOG_CRIT ? "crit " \
+ : (L) == LOG_ALERT ? "alert " \
+ : "??? " )
+
+#define __log(Level, Fmt, ...) \
+ if (log_level >= Level) { \
+ if (log_syslog) { \
+ syslog(Level, "%s" Fmt, log_state, ##__VA_ARGS__); \
+ } else { \
+ fprintf(stderr, "[%s] %s" Fmt "\n", \
+ __level_name(Level), log_state, ##__VA_ARGS__);\
+ } \