- remove build warnings
[fw/openocd] / src / helper / log.c
index f7b2fc9698173778cfb8c60370eb70aea6fac5ae..8eea1ac0a8e1f540eb5deba02f95b60aa02e3f79 100644 (file)
 #include "config.h"
 #endif
 
+#include "replacements.h"
+
 #include "log.h"
 #include "configuration.h"
 #include "time_support.h"
 #include "command.h"
+#include "server.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <stdarg.h>
 
 #define PRINT_MEM() 0
@@ -54,13 +58,14 @@ static long long start;
 
 static char *log_strings[5] =
 {
-       "User:   ",
-       "Error:  ",
-       "Warning:",
-       "Info:   ",
-       "Debug:  "
+       "User : ",
+       "Error: ",
+       "Warn : ",  /* want a space after each colon, all same width, colons aligned */
+       "Info : ",
+       "Debug: "
 };
 
+
 static int count = 0;
 
 /* The log_puts() serves to somewhat different goals:
@@ -98,7 +103,7 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
                        struct mallinfo info;
                        info = mallinfo();
 #endif
-                       fprintf(log_output, "%s %d %d %s:%d %s()"
+                       fprintf(log_output, "%s%d %d %s:%d %s()"
 #if PRINT_MEM()
                                        " %d"
 #endif
@@ -108,9 +113,11 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
 #endif
                                        string);
                }
-               else
+               else if(server_use_pipes == 0)
                {
-                       if (strcmp(string, "\n")!=0)
+                       /* if we are using gdb through pipes then we do not want any output
+                        * to the pipe otherwise we get repeated strings */
+                       if (strcmp(string, "\n") != 0)
                        {
                                /* print human readable output - but skip empty lines */
                                fprintf(log_output, "%s%s",
@@ -203,6 +210,18 @@ int handle_debug_level_command(struct command_context_s *cmd_ctx, char *cmd, cha
        if (debug_level > 3)
                debug_level = 3;
 
+       if (debug_level >= LOG_LVL_DEBUG && server_use_pipes == 1)
+       {
+               /* if we are enabling debug info then we need to write to a log file
+                * otherwise the pipe will get full and cause issues with gdb */
+               FILE* file = fopen("openocd.log", "w");
+               if (file)
+               {
+                       log_output = file;
+                       LOG_WARNING("enabling log output as we are using pipes");
+               }
+       }
+
        return ERROR_OK;
 }
 
@@ -400,20 +419,19 @@ void kept_alive()
 void alive_sleep(int ms)
 {
        int i;
-       for (i=0; i<ms; i+=500)
+       int napTime=10;
+       for (i=0; i<ms; i+=napTime)
        {
                int sleep_a_bit=ms-i;
-               if (sleep_a_bit>500)
+               if (sleep_a_bit>napTime)
                {
-                       sleep_a_bit=500;
+                       sleep_a_bit=napTime;
                }
-               keep_alive();
                usleep(sleep_a_bit*1000);
                keep_alive();
        }
 }
 
-
 void busy_sleep(int ms)
 {
        long long then;