Added log_spacer()
authorClifford Wolf <clifford@clifford.at>
Sat, 16 Aug 2014 13:34:00 +0000 (15:34 +0200)
committerClifford Wolf <clifford@clifford.at>
Sat, 16 Aug 2014 13:34:00 +0000 (15:34 +0200)
kernel/driver.cc
kernel/log.cc
kernel/log.h

index 6f97642381b8dcbcb018bd9d9388442c6750c915..d59e68a5031d52ed9e47161b87f6d16f596e404e 100644 (file)
@@ -274,7 +274,8 @@ int main(int argc, char **argv)
 
                struct rusage ru_buffer;
                getrusage(RUSAGE_SELF, &ru_buffer);
-               log("\nEnd of script. Logfile hash: %s, CPU: user %.2fs system %.2fs\n", hash.c_str(),
+               log_spacer();
+               log("End of script. Logfile hash: %s, CPU: user %.2fs system %.2fs\n", hash.c_str(),
                                ru_buffer.ru_utime.tv_sec + 1e-6 * ru_buffer.ru_utime.tv_usec,
                                ru_buffer.ru_stime.tv_sec + 1e-6 * ru_buffer.ru_stime.tv_usec);
                log("%s\n", yosys_version_str);
index 1f082603956a9a5459676b1db1f6e8240076aaa2..b742a5495b7be0be69e6df7a7268cacd9e0ad8a8 100644 (file)
@@ -45,6 +45,7 @@ int string_buf_size = 0;
 
 static struct timeval initial_tv = { 0, 0 };
 static bool next_print_log = false;
+static int log_newline_count = 0;
 
 void logv(const char *format, va_list ap)
 {
@@ -55,6 +56,15 @@ void logv(const char *format, va_list ap)
 
        std::string str = vstringf(format, ap);
 
+       if (str.empty())
+               return;
+
+       size_t nnl_pos = str.find_last_not_of('\n');
+       if (nnl_pos == std::string::npos)
+               log_newline_count += SIZE(str);
+       else
+               log_newline_count = SIZE(str) - nnl_pos - 1;
+
        if (log_hasher)
                log_hasher->update(str);
 
@@ -92,7 +102,7 @@ void logv_header(const char *format, va_list ap)
 {
        bool pop_errfile = false;
 
-       log("\n");
+       log_spacer();
        if (header_count.size() > 0)
                header_count.back()++;
 
@@ -160,6 +170,12 @@ void log_cmd_error(const char *format, ...)
        logv_error(format, ap);
 }
 
+void log_spacer()
+{
+       while (log_newline_count < 2)
+               log("\n");
+}
+
 void log_push()
 {
        header_count.push_back(0);
index 037a62a3bb0c07c40888163384043b99dcb2c833..b1c44b46b6fd4b82b3a53b892d595df612b62b36 100644 (file)
@@ -51,6 +51,7 @@ void log_header(const char *format, ...) __attribute__ ((format (printf, 1, 2)))
 void log_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
 void log_cmd_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
 
+void log_spacer();
 void log_push();
 void log_pop();