Truncate exclusion names to have a terminal '\0'
[lttng-tools.git] / src / common / error.h
index 1b000ab7a58759bcf62422368d4d05474454ef95..e0cb1583e4cbf4270605238cfdd35ae0284e271b 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,6 +54,7 @@ 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
@@ -61,12 +67,18 @@ extern int lttng_opt_verbose;
 
 /*
  * 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) {            \
+               if (lttng_opt_quiet == 0 && lttng_opt_mi == 0 &&            \
+                               type == PRINT_MSG) {                                \
                        fprintf(stdout, fmt, ## args);                          \
-               } else if (lttng_opt_quiet == 0 &&                          \
+               } else if (lttng_opt_quiet == 0 && lttng_opt_mi == 0 &&     \
                                (((type & PRINT_DBG) && lttng_opt_verbose == 1) ||  \
                                ((type & (PRINT_DBG | PRINT_DBG2)) &&               \
                                        lttng_opt_verbose == 2) ||                      \
@@ -90,15 +102,43 @@ extern int lttng_opt_verbose;
 #define _MSG(fmt, args...) \
        __lttng_print(PRINT_MSG, fmt, ## args)
 #define ERR(fmt, args...) \
-       _ERRMSG("ERROR", PRINT_ERR, fmt, ## args)
+       __lttng_print(PRINT_ERR, "Error: " fmt "\n", ## args)
 #define WARN(fmt, args...) \
-       _ERRMSG("WARN", PRINT_WARN, fmt, ## args)
+       __lttng_print(PRINT_ERR, "Warning: " fmt "\n", ## args)
 
 #define BUG(fmt, args...) _ERRMSG("BUG", PRINT_BUG, fmt, ## args)
 
 #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.025001 seconds and 4 git commands to generate.