]> git.sur5r.net Git - openocd/blobdiff - src/helper/log.c
print out an error if srst_pulls_trst is not specified for
[openocd] / src / helper / log.c
index d0f0e3ddb4ba615727a72c82c0bb34d450850af0..e9c1fa205d2a5aa5273a3b2fa445593aa6d5ee88 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
-#include <time.h>
+
+#define PRINT_MEM() 0
+#if PRINT_MEM()
+#include <malloc.h>
+#endif
 
 int debug_level = -1;
 
@@ -61,6 +65,7 @@ static int count = 0;
  */
 static void log_puts(enum log_levels level, const char *file, int line, const char *function, const char *string)
 {
+       char *f;
        if (level == LOG_LVL_OUTPUT)
        {
                /* do not prepend any headers, just print out what we were given and return */
@@ -69,7 +74,7 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
                return;
        }
 
-       char *f = strrchr(file, '/');
+       f = strrchr(file, '/');
        if (f != NULL)
                file = f + 1;
 
@@ -79,7 +84,19 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
                {
                        /* print with count and time information */
                        int t=(int)(timeval_ms()-start);
-                       fprintf(log_output, "%s %d %d %s:%d %s(): %s", log_strings[level+1], count, t, file, line, function, string);
+#if PRINT_MEM()        
+                       struct mallinfo info;
+                       info = mallinfo();
+#endif
+                       fprintf(log_output, "%s %d %d %s:%d %s()"
+#if PRINT_MEM()
+                                       " %d"
+#endif
+                                       ": %s", log_strings[level+1], count, t, file, line, function, 
+#if PRINT_MEM()
+                                       info.fordblks,
+#endif
+                                       string);
                }
                else
                {
@@ -112,12 +129,12 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
 void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...)
 {
        char *string;
+       va_list ap;
 
        count++;
        if (level > debug_level)
                return;
 
-       va_list ap;
        va_start(ap, format);
 
        string = alloc_vprintf(format, ap);
@@ -133,12 +150,12 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f
 void log_printf_lf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...)
 {
        char *string;
+       va_list ap;
 
        count++;
        if (level > debug_level)
                return;
        
-       va_list ap;
        va_start(ap, format);
        
        string = alloc_vprintf(format, ap);
@@ -276,6 +293,8 @@ char *alloc_vprintf(const char *fmt, va_list ap)
        for (;;)
        {
                char *t = string;
+               va_list ap_copy;
+               int ret;
                string = realloc(string, size);
                if (string == NULL)
                {
@@ -284,10 +303,8 @@ char *alloc_vprintf(const char *fmt, va_list ap)
                        return NULL;
                }
 
-               va_list ap_copy;
                va_copy(ap_copy, ap);
 
-               int ret;
                ret = vsnprintf(string, size, fmt, ap_copy);
                /* NB! The result of the vsnprintf() might be an *EMPTY* string! */
                if ((ret >= 0) && ((ret + 1) < size))