summaryrefslogtreecommitdiff
path: root/lib/utils
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2018-11-30 14:40:01 -0800
committerScott Shawcroft <scott@tannewt.org>2018-11-30 14:40:01 -0800
commit95e03092630bbad9949c5fe32cd51e7c29bc065b (patch)
tree484cb7535142eaabe873bc10552bbfa1b48ab43b /lib/utils
parent754d6afd163ae5f295444166863b5d11afd1b2e4 (diff)
parentab94344baee1a5d73d3890de16319cab1e2616de (diff)
Merge remote-tracking branch 'adafruit/master' into mini_sam
Diffstat (limited to 'lib/utils')
-rw-r--r--lib/utils/stdout_helpers.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/utils/stdout_helpers.c b/lib/utils/stdout_helpers.c
index 3de119757..4323e8a08 100644
--- a/lib/utils/stdout_helpers.c
+++ b/lib/utils/stdout_helpers.c
@@ -12,11 +12,21 @@
// Send "cooked" string of given length, where every occurrence of
// LF character is replaced with CR LF.
void mp_hal_stdout_tx_strn_cooked(const char *str, size_t len) {
- while (len--) {
- if (*str == '\n') {
+ bool last_cr = false;
+ while (len > 0) {
+ size_t i = 0;
+ if (str[0] == '\n' && !last_cr) {
mp_hal_stdout_tx_strn("\r", 1);
+ i = 1;
}
- mp_hal_stdout_tx_strn(str++, 1);
+ // Lump all characters on the next line together.
+ while((last_cr || str[i] != '\n') && i < len) {
+ last_cr = str[i] == '\r';
+ i++;
+ }
+ mp_hal_stdout_tx_strn(str, i);
+ str = &str[i];
+ len -= i;
}
}