aboutsummaryrefslogtreecommitdiff
path: root/src/helper/log.c
diff options
context:
space:
mode:
authorMarc Schink <openocd-dev@marcschink.de>2016-08-18 12:02:08 +0200
committerPaul Fertser <fercerpav@gmail.com>2016-10-07 12:35:54 +0100
commit3c8832fe6eb32489ed8208229a831abb73cf4b1e (patch)
treee10fca640fff221942e1d4a4ec1d347fc24a542a /src/helper/log.c
parent640894e7316b4e45ee4533c611a3d4c4bee6177a (diff)
downloadriscv-openocd-3c8832fe6eb32489ed8208229a831abb73cf4b1e.zip
riscv-openocd-3c8832fe6eb32489ed8208229a831abb73cf4b1e.tar.gz
riscv-openocd-3c8832fe6eb32489ed8208229a831abb73cf4b1e.tar.bz2
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 <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/3709 Tested-by: jenkins Reviewed-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src/helper/log.c')
-rw-r--r--src/helper/log.c39
1 files changed, 25 insertions, 14 deletions
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);
}