} while (0)
#else
# define TRACE_ENABLED(level, mask, args...) 0
-# define TRACE(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_ERROR(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_USER(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_DATA(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_PROTO(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_STATE(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_DEVEL(msg, mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_ENTER(mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_LEAVE(mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_POINT(mask, args...) do { /* do nothing */ } while(0)
-# define TRACE_PRINTF(level, args...) do { /* do nothing */ } while(0)
-# define TRACE_PRINTF_LOC(level, args...) do { /* do nothing */ } while(0)
+# define TRACE(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_ERROR(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_USER(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_DATA(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_PROTO(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_STATE(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_DEVEL(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define TRACE_ENTER(mask, args...) __eat_all_args(mask, ##args)
+# define TRACE_LEAVE(mask, args...) __eat_all_args(mask, ##args)
+# define TRACE_POINT(mask, args...) __eat_all_args(mask, ##args)
+# define TRACE_PRINTF(level, args...) __eat_all_args(level, ##args)
+# define TRACE_PRINTF_LOC(level, args...) __eat_all_args(level, ##args)
#endif
#if defined (USE_TRACE) && (defined(DEBUG_DEV) || defined(DEBUG_FULL))
# define DBG_TRACE_PRINTF(level, args...) TRACE_PRINTF(level, ##args)
# define DBG_TRACE_PRINTF_LOC(level, args...) TRACE_PRINTF_LOC(level, ##args)
#else
-# define DBG_TRACE(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_ERROR(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_USER(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_DATA(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_PROTO(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_STATE(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_DEVEL(msg, mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_ENTER(mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_LEAVE(mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_POINT(mask, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_PRINTF(level, args...) do { /* do nothing */ } while(0)
-# define DBG_TRACE_PRINTF_LOC(level, args...) do { /* do nothing */ } while(0)
+# define DBG_TRACE(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_ERROR(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_USER(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_DATA(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_PROTO(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_STATE(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_DEVEL(msg, mask, args...) __eat_all_args(msg, mask, ##args)
+# define DBG_TRACE_ENTER(mask, args...) __eat_all_args(mask, ##args)
+# define DBG_TRACE_LEAVE(mask, args...) __eat_all_args(mask, ##args)
+# define DBG_TRACE_POINT(mask, args...) __eat_all_args(mask, ##args)
+# define DBG_TRACE_PRINTF(level, args...) __eat_all_args(level, ##args)
+# define DBG_TRACE_PRINTF_LOC(level, args...) __eat_all_args(level, ##args)
#endif
extern struct list trace_sources;