37#define M_DEBUG_LEVEL (0x0F)
39#define M_FATAL (1 << 4)
40#define M_NONFATAL (1 << 5)
41#define M_WARN (1 << 6)
42#define M_DEBUG (1 << 7)
44#define M_ERRNO (1 << 8)
46#define M_NOMUTE (1 << 11)
47#define M_NOPREFIX (1 << 12)
48#define M_USAGE_SMALL (1 << 13)
49#define M_MSG_VIRT_OUT (1 << 14)
50#define M_OPTERR (1 << 15)
51#define M_NOLF (1 << 16)
52#define M_NOIPREFIX (1 << 17)
55#define M_ERR (M_FATAL | M_ERRNO)
56#define M_USAGE (M_USAGE_SMALL | M_NOPREFIX | M_OPTERR)
57#define M_CLIENT (M_MSG_VIRT_OUT | M_NOMUTE | M_NOIPREFIX)
65#pragma warning(disable : 4127)
68#define EXIT_FATAL(flags) \
71 if ((flags) & M_FATAL) \
77#define msg(flags, ...) \
80 if (msg_test(flags)) \
82 x_msg((flags), __VA_ARGS__); \
87#define dmsg(flags, ...) \
90 if (msg_test(flags)) \
92 x_msg((flags), __VA_ARGS__); \
97#define dmsg(flags, ...)
100void x_msg(
const unsigned int flags,
const char *format, ...);
102void x_msg_va(
const unsigned int flags,
const char *format, va_list arglist);
static bool msg_test(unsigned int flags)
Return true if flags represent an enabled, not muted log level.
unsigned int x_debug_level
bool dont_mute(unsigned int flags)
Check muting filter.
void x_msg(const unsigned int flags, const char *format,...)
static bool check_debug_level(unsigned int level)
void x_msg_va(const unsigned int flags, const char *format, va_list arglist)