-#define DEBUG(expr ...) \
- do { \
- log_printf (LOG_DEBUG, __FILE__, __LINE__, __FUNCTION__, expr); \
- } while(0)
-
-#define INFO(expr ...) \
- do { \
- log_printf (LOG_INFO, __FILE__, __LINE__, __FUNCTION__, expr); \
- } while(0)
-
-#define WARNING(expr ...) \
- do { \
- log_printf (LOG_WARNING, __FILE__, __LINE__, __FUNCTION__, expr); \
- } while(0)
-
-#define ERROR(expr ...) \
- do { \
- log_printf (LOG_ERROR, __FILE__, __LINE__, __FUNCTION__, expr); \
- } while(0)
-
-#define SDEBUG(expr ...) \
- do { \
- short_log_printf (LOG_DEBUG, expr); \
- } while(0)
-
-#define SINFO(expr ...) \
- do { \
- short_log_printf (LOG_INFO, expr); \
- } while(0)
-
-#define SWARNING(expr ...) \
- do { \
- short_log_printf (LOG_WARNING, expr); \
- } while(0)
-
-#define SERROR(expr ...) \
- do { \
- short_log_printf (LOG_ERROR, expr); \
- } while(0)
+/* Avoid fn call and building parameter list if we're not outputting the information.
+ * Matters on feeble CPUs for DEBUG/INFO statements that are involved frequently */
+
+#define LOG_LEVEL_IS(FOO) ((debug_level) >= (FOO))
+
+#define LOG_DEBUG(expr ...) \
+ ((debug_level >= LOG_LVL_DEBUG) ? log_printf_lf (LOG_LVL_DEBUG, __FILE__, __LINE__, __FUNCTION__, expr) , 0 : 0)
+
+#define LOG_INFO(expr ...) \
+ log_printf_lf (LOG_LVL_INFO, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_INFO_N(expr ...) \
+ log_printf (LOG_LVL_INFO, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_WARNING(expr ...) \
+ log_printf_lf (LOG_LVL_WARNING, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_ERROR(expr ...) \
+ log_printf_lf (LOG_LVL_ERROR, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_USER(expr ...) \
+ log_printf_lf (LOG_LVL_USER, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_USER_N(expr ...) \
+ log_printf (LOG_LVL_USER, __FILE__, __LINE__, __FUNCTION__, expr)
+
+#define LOG_OUTPUT(expr ...) \
+ log_printf (LOG_LVL_OUTPUT, __FILE__, __LINE__, __FUNCTION__, expr)