Fix: error.h: add missing parenthesis around macro parameter
[lttng-tools.git] / src / common / error.h
index 684ff5e5f4f9af9852c35e32d7182005c0985a38..ca5af86cdb56e6519164d8f7486697723a1b495a 100644 (file)
 #include <lttng/lttng-error.h>
 #include <common/compat/tid.h>
 
+/* Avoid conflict with Solaris <sys/regset.h> */
+#if defined(ERR) && defined(__sun__)
+#undef ERR
+#endif
+
 /* Stringify the expansion of a define */
 #define XSTR(d) STR(d)
 #define STR(s) #s
@@ -49,35 +54,41 @@ extern DECLARE_URCU_TLS(struct log_time, error_log_time);
 
 extern int lttng_opt_quiet;
 extern int lttng_opt_verbose;
+extern int lttng_opt_mi;
 
 /* Error type. */
-#define PRINT_ERR   0x1
-#define PRINT_WARN  0x2
-#define PRINT_BUG   0x3
-#define PRINT_MSG   0x4
-#define PRINT_DBG   0x10
-#define PRINT_DBG2  0x20
-#define PRINT_DBG3  0x30
+#define PRINT_ERR   (1 << 0)
+#define PRINT_WARN  (1 << 1)
+#define PRINT_BUG   (1 << 2)
+#define PRINT_MSG   (1 << 3)
+#define PRINT_DBG   (1 << 4)
+#define PRINT_DBG2  (1 << 5)
+#define PRINT_DBG3  (1 << 6)
 
 /*
  * Macro for printing message depending on command line option and verbosity.
+ *
+ * Machine interface:
+ * We use lttng_opt_mi to suppress all normal msg to stdout. We don't
+ * want any nested msg to show up when printing mi to stdout(if it's the case).
+ * All warnings and errors should be printed to stderr as normal.
  */
-#define __lttng_print(type, fmt, args...)                           \
-       do {                                                            \
-               if (lttng_opt_quiet == 0 && type == PRINT_MSG) {            \
-                       fprintf(stdout, fmt, ## args);                          \
-               } else if (lttng_opt_quiet == 0 &&                          \
-                               (((type & PRINT_DBG) && lttng_opt_verbose == 1) ||  \
-                               ((type & (PRINT_DBG | PRINT_DBG2)) &&               \
-                                       lttng_opt_verbose == 2) ||                      \
-                               ((type & (PRINT_DBG | PRINT_DBG2 | PRINT_DBG3)) &&  \
-                                       lttng_opt_verbose == 3))) {                     \
-                       fprintf(stderr, fmt, ## args);                          \
-               } else if (lttng_opt_quiet == 0 && (type & (PRINT_WARN))) { \
-                       fprintf(stderr, fmt, ## args);                          \
-               } else if (type & (PRINT_ERR | PRINT_BUG)) {                \
-                       fprintf(stderr, fmt, ## args);                          \
-               }                                                           \
+#define __lttng_print(type, fmt, args...)                                          \
+       do {                                                                       \
+               if (!lttng_opt_quiet && !lttng_opt_mi &&                           \
+                               (type) == PRINT_MSG) {                             \
+                       fprintf(stdout, fmt, ## args);                             \
+               } else if (!lttng_opt_quiet && !lttng_opt_mi &&                    \
+                               ((((type) & PRINT_DBG) && lttng_opt_verbose == 1) || \
+                               (((type) & (PRINT_DBG | PRINT_DBG2)) &&            \
+                                       lttng_opt_verbose == 2) ||                 \
+                               (((type) & (PRINT_DBG | PRINT_DBG2 | PRINT_DBG3)) && \
+                                       lttng_opt_verbose == 3))) {                \
+                       fprintf(stderr, fmt, ## args);                             \
+               } else if (!lttng_opt_quiet &&                                     \
+                               ((type) & (PRINT_WARN | PRINT_ERR | PRINT_BUG))) { \
+                       fprintf(stderr, fmt, ## args);                             \
+               }                                                                  \
        } while (0);
 
 /* Three level of debug. Use -v, -vv or -vvv for the levels */
@@ -99,6 +110,34 @@ extern int lttng_opt_verbose;
 #define DBG(fmt, args...) _ERRMSG("DEBUG1", PRINT_DBG, fmt, ## args)
 #define DBG2(fmt, args...) _ERRMSG("DEBUG2", PRINT_DBG2, fmt, ## args)
 #define DBG3(fmt, args...) _ERRMSG("DEBUG3", PRINT_DBG3, fmt, ## args)
+#define LOG(type, fmt, args...)                        \
+       do {                                    \
+               switch (type) {                 \
+               case PRINT_ERR:                 \
+                       ERR(fmt, ## args);      \
+                       break;                  \
+               case PRINT_WARN:                \
+                       WARN(fmt, ## args);     \
+                       break;                  \
+               case PRINT_BUG:                 \
+                       BUG(fmt, ## args);      \
+                       break;                  \
+               case PRINT_MSG:                 \
+                       MSG(fmt, ## args);      \
+                       break;                  \
+               case PRINT_DBG:                 \
+                       DBG(fmt, ## args);      \
+                       break;                  \
+               case PRINT_DBG2:                \
+                       DBG2(fmt, ## args);     \
+                       break;                  \
+               case PRINT_DBG3:                \
+                       DBG3(fmt, ## args);     \
+                       break;                  \
+               default:                        \
+                       assert(0);              \
+               }                               \
+       } while(0);
 
 #define _PERROR(fmt, args...) _ERRMSG("PERROR", PRINT_ERR, fmt, ## args)
 
This page took 0.025129 seconds and 4 git commands to generate.