From c839aa9e615064ab4ba6f2aa90b1a45cb6807477 Mon Sep 17 00:00:00 2001 From: bx Date: Sat, 2 Apr 2022 13:51:43 +0000 Subject: [PATCH] can now writelines --- b_getline.c | 8 ++++++++ c_writeline.c | 19 +++++++++++++++++++ commands.c | 1 + efn.c | 3 +++ efn.h | 2 ++ 5 files changed, 33 insertions(+) create mode 100644 b_getline.c create mode 100644 c_writeline.c diff --git a/b_getline.c b/b_getline.c new file mode 100644 index 0000000..8a5950b --- /dev/null +++ b/b_getline.c @@ -0,0 +1,8 @@ +Row * +b_getline(Row *r, int l) { + + if (l == 1) return r; + if (r->n == NULL) return NULL; + return b_getline(r->n, l - 1); +} + diff --git a/c_writeline.c b/c_writeline.c new file mode 100644 index 0000000..4622b8d --- /dev/null +++ b/c_writeline.c @@ -0,0 +1,19 @@ +void +c_writeline(char *c) { + c += 2; + int line = atoi(c); + for(; *c != 0 && *c != ' '; c++); + c += 1; // start of text + Row *r = b_getline(buffer, line); + if (r == NULL) { + printf("%i, invalid line.\n", line); + return; + } + int i = 0; + for (;i < ROW_SIZE && c[i] != 0; i++) { + r->text[i] = c[i]; + } + for(;i < ROW_SIZE; i++) { + r->text[i] = 0; + } +} diff --git a/commands.c b/commands.c index a972245..738bd6e 100644 --- a/commands.c +++ b/commands.c @@ -3,3 +3,4 @@ NULL, ['q'] = c_quit, ['O'] = c_open, ['P'] = c_print, +['w'] = c_writeline, diff --git a/efn.c b/efn.c index 868dab7..07c18d9 100644 --- a/efn.c +++ b/efn.c @@ -17,3 +17,6 @@ #include "b_truncate.c" #include "c_print.c" #include "b_insert.c" +#include "c_writeline.c" +#include "b_getline.c" + diff --git a/efn.h b/efn.h index e86cc1e..a00a2e6 100644 --- a/efn.h +++ b/efn.h @@ -10,3 +10,5 @@ void c_open(char *); void b_truncate(Row *); void c_print(char *); Row *b_insert(Row *); +Row *b_getline(Row *, int); +void c_writeline(char *);