summaryrefslogtreecommitdiff
path: root/src/helper/log.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-28 08:11:18 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-28 08:11:18 +0000
commit0689e3dd6752f45f493eceb3edf040fbc7849846 (patch)
tree57c2d288e4ea01551e0ea7806957cd1f5a2165dc /src/helper/log.c
parentb70e262867b724f7d265f0c6b206801a29ba284b (diff)
downloadopenocd_libswd-0689e3dd6752f45f493eceb3edf040fbc7849846.tar.gz
openocd_libswd-0689e3dd6752f45f493eceb3edf040fbc7849846.tar.bz2
openocd_libswd-0689e3dd6752f45f493eceb3edf040fbc7849846.tar.xz
openocd_libswd-0689e3dd6752f45f493eceb3edf040fbc7849846.zip
- 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
Diffstat (limited to 'src/helper/log.c')
-rw-r--r--src/helper/log.c47
1 files changed, 34 insertions, 13 deletions
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