Change of vterm handling logic on backend chardev input event (#40)
[lunaix-os.git] / lunaix-os / hal / term / lcntls / ansi_cntl.c
index 778eb4b5d24d931a79f3ae51beb47bca097b6a64..bc66139cb98abd4c67b9e99f9e0d83909142d56b 100644 (file)
@@ -9,25 +9,18 @@
  * @copyright Copyright (c) 2023
  *
  */
-#include <hal/term.h>
+#include "lcntl.h"
 #include <usr/lunaix/term.h>
 
 #define CTRL_MNEMO(chr) (chr - 'A' + 1)
 
-static inline int
-__ansi_actcontrol(struct term* termdev, struct linebuffer* lbuf, char chr)
+int
+__ansi_actcontrol(struct lcntl_state* state, char chr)
 {
-    struct rbuffer* cooked = lbuf->next;
-    switch (chr) {
-        default:
-            if ((int)chr < 32) {
-                rbuffer_put(cooked, '^');
-                return rbuffer_put(cooked, chr += 64);
-            }
-            break;
+    if (chr < 32 && chr != '\n') {
+        lcntl_put_char(state, '^');
+        return lcntl_put_char(state, chr += 64);
     }
 
-    return rbuffer_put_nof(cooked, chr);
+    return lcntl_put_char(state, chr);
 }
-
-struct term_lcntl ansi_line_controller = {.process_and_put = __ansi_actcontrol};
\ No newline at end of file