From a6d2a2166560476c9a92473e248cca177743303e Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Wed, 17 Jul 2019 19:30:51 +0200
Subject: [PATCH] fix(pycardium): Properly print line-endings for serial

Signed-off-by: Rahix <rahix@rahix.de>
---
 pycardium/mphalport.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/pycardium/mphalport.c b/pycardium/mphalport.c
index b8ae7ec3..fdfb592d 100644
--- a/pycardium/mphalport.c
+++ b/pycardium/mphalport.c
@@ -44,7 +44,21 @@ int DEBUG_printf(const char *fmt, ...)
 /* newlib syscall to allow printf to work */
 long _write(int fd, const char *buf, size_t cnt)
 {
-	epic_uart_write_str(buf, cnt);
+	/*
+	 * Only print one line at a time.  Insert `\r` between lines so
+	 * they are properly displayed on the serial console.
+	 */
+	size_t i, last = 0;
+	for (i = 0; i < cnt; i++) {
+		if (buf[i] == '\n') {
+			epic_uart_write_str(&buf[last], i - last);
+			epic_uart_write_str("\r", 1);
+			last = i;
+		}
+	}
+	if (last != i) {
+		epic_uart_write_str(&buf[last], cnt - last);
+	}
 	return cnt;
 }
 
-- 
GitLab