[niepce] Have ERR_OUT() print the file and line #



commit 1423efe2c82f6acb784f9427f3725b026ca0620f
Author: Hubert Figuière <hub figuiere net>
Date:   Tue Jun 25 18:00:18 2013 -0400

    Have ERR_OUT() print the file and line #

 src/fwk/base/debug.cpp |   43 ++++++++++++++++++++++++++++++++-----------
 src/fwk/base/debug.hpp |    7 ++++---
 2 files changed, 36 insertions(+), 14 deletions(-)
---
diff --git a/src/fwk/base/debug.cpp b/src/fwk/base/debug.cpp
index 7be5abf..f6421b2 100644
--- a/src/fwk/base/debug.cpp
+++ b/src/fwk/base/debug.cpp
@@ -45,6 +45,8 @@ namespace fwk {
 
        static void _vprint(const char *prefix, const char *fmt, 
                                                                                 const char* func,      
va_list marker);
+static void _v2print(const char *prefix, const char* filen, int linen,
+                     const char *fmt, const char* func, va_list marker);
        static void _print(const char *prefix, const char *fmt, 
                                           const char* func, ...);
 
@@ -79,19 +81,20 @@ namespace fwk {
        }
 
 
-       void err_print(const char *fmt, const char* func, ...)
-       {
-#define ERROR_MSG "ERROR: "
-               va_list marker;
-               
-               va_start(marker, func);
-               // TODO make this atomic
-               _vprint(ERROR_MSG, fmt, func, marker);
+void err_print(const char *fmt, const char* func, const char* filen,
+               int linen, ...)
+{
+#define ERROR_MSG "ERROR %s:%d: "
+    va_list marker;
+
+    va_start(marker, linen);
+    // TODO make this atomic
+    _v2print(ERROR_MSG, filen, linen, fmt, func, marker);
+
+    va_end(marker);
 
-               va_end(marker);
-               
 #undef ERROR_MSG
-       }
+}
 
 
        static void _print(const char *prefix, const char *fmt, 
@@ -123,6 +126,24 @@ namespace fwk {
                fprintf(stderr, "\n");
        }
 
+static void _v2print(const char* prefix, const char* filen, int linen,
+                     const char* fmt, const char* func, va_list marker)
+{
+    char buf[128];
+    snprintf(buf, 128, "(0x%lx) ", (unsigned long)pthread_self());
+    fwrite(buf, 1, strlen(buf), stderr);
+
+    fprintf(stderr, prefix, filen, linen);
+
+    if(func) {
+        fwrite(func, 1, strlen(func), stderr);
+        fwrite(" - ", 1, 3, stderr);
+    }
+
+    vfprintf(stderr, fmt, marker);
+    fprintf(stderr, "\n");
+}
+
 }
 /*
   Local Variables:
diff --git a/src/fwk/base/debug.hpp b/src/fwk/base/debug.hpp
index 247dd0a..cc9197f 100644
--- a/src/fwk/base/debug.hpp
+++ b/src/fwk/base/debug.hpp
@@ -48,7 +48,7 @@ namespace fwk {
 #endif
 
 #define ERR_OUT(x, ...) \
-       fwk::err_print(x,  __FUNCTION__, ## __VA_ARGS__)
+    fwk::err_print(x,  __FUNCTION__, __FILE__, __LINE__, ## __VA_ARGS__)
 
 
        /** print debug messages. printf format.
@@ -77,8 +77,9 @@ void dbg_assert(bool condvalue, const char* cond, const char* func,
         * @param fmt the formt string, printf style
         * @param func the func name
         */
-       void err_print(const char *fmt, const char* func, ...)
-    __attribute__ ((format (printf, 1, 3)));
+void err_print(const char *fmt, const char* func, const char* filen,
+               int linen, ...)
+    __attribute__ ((format (printf, 1, 5)));
 
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]