Missing negative sign to interpret error code
[lttng-tools.git] / include / lttngerr.h
index c987fdd6141f92ad2da633e701d0deea0f3d4231..062908098f0f757543deb904de9c482ba3cbecdb 100644 (file)
@@ -3,8 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation; only version 2
+ * of the License.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 #define _LTTNGERR_H
 
 #include <errno.h>
-#include <stdarg.h>
+#include <stdio.h>
+
+/* Stringify the expansion of a define */
+#define XSTR(d) STR(d)
+#define STR(s) #s
 
 extern int opt_quiet;
 extern int opt_verbose;
@@ -36,29 +40,24 @@ enum __lttng_print_type {
 /*
  *  __lttng_print
  *
- *  Internal function for printing message
- *  depending on command line option and verbosity.
+ *  Macro for printing message depending on
+ *  command line option and verbosity.
  */
-void __lttng_print(enum __lttng_print_type type, const char *fmt, ...)
-{
-       va_list ap;
-       va_start(ap, fmt);
-
-       if (opt_quiet == 0) {
-               if (type == PRINT_MSG || (opt_verbose && type == PRINT_DBG)) {
-                       vfprintf(stdout, fmt, ap);
-               } else if (type != PRINT_MSG && type != PRINT_DBG) {
-                       vfprintf(stderr, fmt, ap);
-               }
-       }
-
-       va_end(ap);
-}
+#define __lttng_print(type, fmt, args...)      \
+       do {                                                    \
+               if (opt_quiet == 0) {           \
+                       if (type == PRINT_MSG || (opt_verbose && type == PRINT_DBG)) {  \
+                               fprintf(stdout, fmt, ## args);  \
+                       } else if (type != PRINT_MSG && type != PRINT_DBG) {    \
+                               fprintf(stderr, fmt, ## args);          \
+                       }       \
+               }       \
+       } while (0);
 
 #define MSG(fmt, args...) __lttng_print(PRINT_MSG, fmt "\n", ## args)
 #define ERR(fmt, args...) __lttng_print(PRINT_ERR, "Error: " fmt "\n", ## args)
 #define WARN(fmt, args...) __lttng_print(PRINT_WARN, "Warning: " fmt "\n", ## args)
 #define BUG(fmt, args...) __lttng_print(PRINT_BUG, "BUG: " fmt "\n", ## args)
-#define DBG(fmt, args...) __lttng_print(PRINT_DBG, "DEBUG: " fmt "\n", ## args)
+#define DBG(fmt, args...) __lttng_print(PRINT_DBG, "DEBUG: " fmt " [in %s() at " __FILE__ ":" XSTR(__LINE__) "]\n", ## args, __func__)
 
 #endif /* _LTTNGERR_H */
This page took 0.02359 seconds and 4 git commands to generate.