:: commit 0922fafe4bbe0f1f5498c99cbefe9290c58b4ea2

Mintsuki <mintsuki@protonmail.com> — 2026-02-10 09:29

parents: 904c75e208

lib/print: Improve \n -> \r\n handling from last commit

diff --git a/common/lib/print.s2.c b/common/lib/print.s2.c
index c04ca1d1..3e34e0ee 100644
--- a/common/lib/print.s2.c
+++ b/common/lib/print.s2.c
@@ -25,36 +25,32 @@ static const char *base_digits = "0123456789abcdef";
 
 #define PRINT_BUF_MAX 4096
 
-static void prn_str(char *print_buf, size_t *print_buf_i, const char *string) {
-    size_t i;
+static void prn_char(char *print_buf, size_t *print_buf_i, char c) {
+    if (c == '\n') {
+        prn_char(print_buf, print_buf_i, '\r');
+    }
 
-    for (i = 0; string[i]; i++) {
-        if (*print_buf_i == (PRINT_BUF_MAX - 1))
-            break;
-        print_buf[(*print_buf_i)++] = string[i];
+    if (*print_buf_i < (PRINT_BUF_MAX - 1)) {
+        print_buf[(*print_buf_i)++] = c;
     }
 
     print_buf[*print_buf_i] = 0;
 }
 
-static void prn_nstr(char *print_buf, size_t *print_buf_i, const char *string, size_t len) {
+static void prn_str(char *print_buf, size_t *print_buf_i, const char *string) {
     size_t i;
 
-    for (i = 0; i < len; i++) {
-        if (*print_buf_i == (PRINT_BUF_MAX - 1))
-            break;
-        print_buf[(*print_buf_i)++] = string[i];
+    for (i = 0; string[i]; i++) {
+        prn_char(print_buf, print_buf_i, string[i]);
     }
-
-    print_buf[*print_buf_i] = 0;
 }
 
-static void prn_char(char *print_buf, size_t *print_buf_i, char c) {
-    if (*print_buf_i < (PRINT_BUF_MAX - 1)) {
-        print_buf[(*print_buf_i)++] = c;
-    }
+static void prn_nstr(char *print_buf, size_t *print_buf_i, const char *string, size_t len) {
+    size_t i;
 
-    print_buf[*print_buf_i] = 0;
+    for (i = 0; i < len; i++) {
+        prn_char(print_buf, print_buf_i, string[i]);
+    }
 }
 
 static void prn_i(char *print_buf, size_t *print_buf_i, int64_t x) {
@@ -133,13 +129,9 @@ void vprint(const char *fmt, va_list args) {
 
     for (;;) {
         while (*fmt && *fmt != '%') {
-            if (*fmt == '\n') {
-                prn_char(print_buf, &print_buf_i, '\r');
-            }
             prn_char(print_buf, &print_buf_i, *fmt++);
         }
 
-
         if (!*fmt++)
             goto out;
 
tab: 248 wrap: offon