summaryrefslogtreecommitdiff
path: root/ports/unix/unix_mphal.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/unix/unix_mphal.c')
-rw-r--r--ports/unix/unix_mphal.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ports/unix/unix_mphal.c b/ports/unix/unix_mphal.c
index 8d6539c88..24c0fa3cd 100644
--- a/ports/unix/unix_mphal.c
+++ b/ports/unix/unix_mphal.c
@@ -184,10 +184,15 @@ main_term:;
return c;
}
-void mp_hal_stdout_tx_strn(const char *str, size_t len) {
+mp_uint_t mp_hal_stdout_tx_strn(const char *str, size_t len) {
ssize_t ret;
MP_HAL_RETRY_SYSCALL(ret, write(STDOUT_FILENO, str, len), {});
- mp_os_dupterm_tx_strn(str, len);
+ mp_uint_t written = ret < 0 ? 0 : ret;
+ int dupterm_res = mp_os_dupterm_tx_strn(str, len);
+ if (dupterm_res >= 0) {
+ written = MIN((mp_uint_t)dupterm_res, written);
+ }
+ return written;
}
// cooked is same as uncooked because the terminal does some postprocessing