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>
This commit is contained in:
parent
640894e731
commit
3c8832fe6e
|
@ -191,6 +191,30 @@ void log_printf(enum log_levels level,
|
||||||
va_end(ap);
|
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,
|
void log_printf_lf(enum log_levels level,
|
||||||
const char *file,
|
const char *file,
|
||||||
unsigned line,
|
unsigned line,
|
||||||
|
@ -198,23 +222,10 @@ void log_printf_lf(enum log_levels level,
|
||||||
const char *format,
|
const char *format,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
char *string;
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
count++;
|
|
||||||
if (level > debug_level)
|
|
||||||
return;
|
|
||||||
|
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
log_vprintf_lf(level, file, line, function, format, ap);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,8 @@ enum log_levels {
|
||||||
void log_printf(enum log_levels level, const char *file, unsigned line,
|
void log_printf(enum log_levels level, const char *file, unsigned line,
|
||||||
const char *function, const char *format, ...)
|
const char *function, const char *format, ...)
|
||||||
__attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));
|
__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,
|
void log_printf_lf(enum log_levels level, const char *file, unsigned line,
|
||||||
const char *function, const char *format, ...)
|
const char *function, const char *format, ...)
|
||||||
__attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));
|
__attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));
|
||||||
|
|
Loading…
Reference in New Issue