This is an automated email from Gerrit.

Marc Schink ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/3709

-- gerrit

commit baa9453f445e93cb7de2dbed5a1bb08a2189a338
Author: Marc Schink <[email protected]>
Date:   Thu Aug 18 12:02:08 2016 +0200

    helper/log: Add log_vprintf_lf()
    
    Add log_vprintf_lf() to enable the possibility to output log messages
    with a variable argument list.
    
    Change-Id: I7fd6e93db63a7d98f662df2881a42e4d923c3848
    Signed-off-by: Marc Schink <[email protected]>

diff --git a/src/helper/log.c b/src/helper/log.c
index 79cbd8e..e7af803 100644
--- a/src/helper/log.c
+++ b/src/helper/log.c
@@ -191,6 +191,30 @@ void log_printf(enum log_levels level,
        va_end(ap);
 }
 
+void log_vprintf_lf(enum log_levels level, const char *file, unsigned line,
+               const char *function, const char *format, va_list args)
+{
+       char *tmp;
+
+       count++;
+
+       if (level > debug_level)
+               return;
+
+       tmp = alloc_vprintf(format, args);
+
+       if (!tmp)
+               return;
+
+       /*
+        * Note: alloc_vprintf() guarantees that the buffer is at least one
+        * character longer.
+        */
+       strcat(tmp, "\n");
+       log_puts(level, file, line, function, tmp);
+       free(tmp);
+}
+
 void log_printf_lf(enum log_levels level,
        const char *file,
        unsigned line,
@@ -198,23 +222,10 @@ void log_printf_lf(enum log_levels level,
        const char *format,
        ...)
 {
-       char *string;
        va_list ap;
 
-       count++;
-       if (level > debug_level)
-               return;
-
        va_start(ap, format);
-
-       string = alloc_vprintf(format, ap);
-       if (string != NULL) {
-               strcat(string, "\n");   /* alloc_vprintf guaranteed the buffer 
to be at least one
-                                        *char longer */
-               log_puts(level, file, line, function, string);
-               free(string);
-       }
-
+       log_vprintf_lf(level, file, line, function, format, ap);
        va_end(ap);
 }
 
diff --git a/src/helper/log.h b/src/helper/log.h
index eb222cb..6b93816 100644
--- a/src/helper/log.h
+++ b/src/helper/log.h
@@ -60,6 +60,8 @@ enum log_levels {
 void log_printf(enum log_levels level, const char *file, unsigned line,
                const char *function, const char *format, ...)
 __attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));
+void log_vprintf_lf(enum log_levels level, const char *file, unsigned line,
+               const char *function, const char *format, va_list args);
 void log_printf_lf(enum log_levels level, const char *file, unsigned line,
                const char *function, const char *format, ...)
 __attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));

-- 

------------------------------------------------------------------------------
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to