fix: corner cases when printing large content through term interface
[lunaix-os.git] / lunaix-os / hal / term / lcntls / ansi_cntl.c
index 0596a7a64af40a6a26d8f5f02d080ae9216b5bf0..778eb4b5d24d931a79f3ae51beb47bca097b6a64 100644 (file)
@@ -14,7 +14,7 @@
 
 #define CTRL_MNEMO(chr) (chr - 'A' + 1)
 
-static inline size_t
+static inline int
 __ansi_actcontrol(struct term* termdev, struct linebuffer* lbuf, char chr)
 {
     struct rbuffer* cooked = lbuf->next;
@@ -22,13 +22,12 @@ __ansi_actcontrol(struct term* termdev, struct linebuffer* lbuf, char chr)
         default:
             if ((int)chr < 32) {
                 rbuffer_put(cooked, '^');
-                chr += 64;
+                return rbuffer_put(cooked, chr += 64);
             }
             break;
     }
 
-    return rbuffer_put(cooked, chr);
+    return rbuffer_put_nof(cooked, chr);
 }
 
-struct term_lcntl ansi_line_controller = { .process_and_put =
-                                             __ansi_actcontrol };
\ No newline at end of file
+struct term_lcntl ansi_line_controller = {.process_and_put = __ansi_actcontrol};
\ No newline at end of file