From 0689e3dd6752f45f493eceb3edf040fbc7849846 Mon Sep 17 00:00:00 2001 From: oharboe Date: Thu, 28 Feb 2008 08:11:18 +0000 Subject: - Added TARGET_REQ_DEBUGCHAR target_request debugmsg. This provides a better impeadance match for debug output char fn's, e.g. eCos. - Line endings are now added at the caller site of command_print*(). command_print() still adds a line ending - echo of commands in scripts are now available via debug_level instead of forced echo - Added a USER_SAMELINE() for printing without a lineend. git-svn-id: svn://svn.berlios.de/openocd/trunk@364 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/helper/log.c | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) (limited to 'src/helper/log.c') diff --git a/src/helper/log.c b/src/helper/log.c index a5432aa9..c55fd572 100644 --- a/src/helper/log.c +++ b/src/helper/log.c @@ -46,20 +46,14 @@ static char *log_strings[5] = "Debug: " }; -void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...) +static int count = 0; + +static void log_printfv(enum log_levels level, const char *file, int line, const char *function, const char *format, va_list args) { - static int count = 0; - count++; - va_list args; char buffer[512]; log_callback_t *cb; - if (level > debug_level) - return; - - va_start(args, format); vsnprintf(buffer, 512, format, args); - va_end(args); if (level == LOG_OUTPUT) { @@ -76,8 +70,8 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f if (debug_level >= LOG_DEBUG) { /* print with count and time information */ - time_t t=time(NULL)-start; - fprintf(log_output, "%s %d %ld %s:%d %s(): %s\n", log_strings[level+1], count, t, file, line, function, buffer); + int t=(int)(time(NULL)-start); + fprintf(log_output, "%s %d %d %s:%d %s(): %s\n", log_strings[level+1], count, t, file, line, function, buffer); } else { @@ -92,13 +86,40 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f { for (cb = log_callbacks; cb; cb = cb->next) { - va_start(args, format); cb->fn(cb->priv, file, line, function, format, args); - va_end(args); } } } +void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...) +{ + count++; + if (level > debug_level) + return; + + va_list args; + va_start(args, format); + log_printfv(level, file, line, function, format, args); + va_end(args); + +} + +void log_printfnl(enum log_levels level, const char *file, int line, const char *function, const char *format, ...) +{ + count++; + if (level > debug_level) + return; + + char *t=malloc(strlen(format)+2); + strcpy(t, format); + strcat(t, "\n"); + + va_list args; + va_start(args, format); + log_printfv(level, file, line, function, t, args); + va_end(args); +} + /* change the current debug level on the fly * 0: only ERRORS * 1: + WARNINGS -- cgit v1.2.3