From b7a4fec16253177a95db956f1a39305ffc657913 Mon Sep 17 00:00:00 2001 From: bx Date: Sun, 3 Apr 2022 09:05:25 +0100 Subject: [PATCH] changed command to take char * and char ** --- c_clipboard.c | 5 +++-- c_delete.c | 3 ++- c_file.c | 5 +++-- c_indent.c | 5 +++-- c_insertline.c | 3 ++- c_print.c | 15 ++++++++++----- c_quit.c | 3 ++- c_writeline.c | 3 ++- commands.c | 3 ++- efn.h | 14 +++++--------- main.c | 10 ++++------ 11 files changed, 38 insertions(+), 31 deletions(-) diff --git a/c_clipboard.c b/c_clipboard.c index c044e8b..926018d 100644 --- a/c_clipboard.c +++ b/c_clipboard.c @@ -1,5 +1,5 @@ void -c_copy(char *c) { +c_copy(char *c, char **argv) { c += 2; int start = atoi(c); for(; *c != '\0' && *c != ' '; c++); @@ -23,7 +23,7 @@ c_copy(char *c) { } void -c_paste(char *c) { +c_paste(char *c, char **argv) { Row *line = b_getline(buffer, atoi(c + 2)); if (line == NULL) {puts("invalid line."); return; } if (clipboard == NULL) {puts("empty clipboard"); return; } @@ -33,3 +33,4 @@ c_paste(char *c) { } } + diff --git a/c_delete.c b/c_delete.c index ba49cbc..e6d130e 100644 --- a/c_delete.c +++ b/c_delete.c @@ -1,5 +1,5 @@ void -c_delete(char *c) { +c_delete(char *c, char **argv) { Row *line = b_getline(buffer, atoi(c + 2)); Row *prev_line = b_getline(buffer, atoi(c + 2) - 1); if (line == NULL || prev_line == NULL) {puts ("invalid line"); return; } @@ -10,3 +10,4 @@ c_delete(char *c) { } + diff --git a/c_file.c b/c_file.c index 1f175aa..a8fa08d 100644 --- a/c_file.c +++ b/c_file.c @@ -1,5 +1,5 @@ void -c_open(char *file) { +c_open(char *file, char **argv) { FILE *f = fopen(file + 2, "r"); if(f == NULL) { puts("couldnt open file."); return; } b_truncate(buffer); @@ -20,7 +20,7 @@ c_open(char *file) { } void -c_save(char *file) { +c_save(char *file, char **argv) { FILE *f = fopen(file + 2, "w"); if(f == NULL) { puts("couldnt open file."); return; } Row *row = buffer; @@ -37,3 +37,4 @@ c_save(char *file) { } + diff --git a/c_indent.c b/c_indent.c index 4ddfcdf..c6357e3 100644 --- a/c_indent.c +++ b/c_indent.c @@ -1,5 +1,5 @@ void -c_indent(char *c) { +c_indent(char *c, char **argv) { Row *row = b_getline(buffer, atoi(c + 2)); if (row == NULL) { puts ("invalid line"); return; } @@ -11,7 +11,7 @@ c_indent(char *c) { } void -c_unindent(char *c) { +c_unindent(char *c, char **argv) { Row *row = b_getline(buffer, atoi(c + 2)); if (row == NULL) { puts ("invalid line"); return; } @@ -22,3 +22,4 @@ c_unindent(char *c) { } + diff --git a/c_insertline.c b/c_insertline.c index f89f868..e19a835 100644 --- a/c_insertline.c +++ b/c_insertline.c @@ -1,5 +1,5 @@ void -c_insertline(char *c) { +c_insertline(char *c, char **argv) { c += 2; int line = atoi(c); for(; *c != 0 && *c != ' '; c++); @@ -20,3 +20,4 @@ c_insertline(char *c) { r->text[i] = 0; } } + diff --git a/c_print.c b/c_print.c index 7f73bdc..eac99e4 100644 --- a/c_print.c +++ b/c_print.c @@ -8,13 +8,16 @@ else printf("%c", row->text[i]); } void -c_print(char *c) { - Row *row = buffer; +c_print(char *c, char **argv) { + Row *row = buffer; int line = 1; + if (atoi(c + 2) != 0) line = atoi(c + 2); + row = b_getline(buffer, line); + if (row == NULL) {puts("invalid line."); return;} for (;; line++) { -printf("%3.i| ", line); -print_with_fixed_tabs(row); -puts(""); + printf("%3.i| ", line); + print_with_fixed_tabs(row); + puts(""); if (row->n == NULL) break; row = row -> n; } @@ -24,3 +27,5 @@ puts(""); + + diff --git a/c_quit.c b/c_quit.c index 9160d04..dfb78ae 100644 --- a/c_quit.c +++ b/c_quit.c @@ -1,5 +1,6 @@ void -c_quit(char *b) { +c_quit(char *b, char **argv) { exit(0); } + diff --git a/c_writeline.c b/c_writeline.c index 4622b8d..24f075f 100644 --- a/c_writeline.c +++ b/c_writeline.c @@ -1,5 +1,5 @@ void -c_writeline(char *c) { +c_writeline(char *c, char **argv) { c += 2; int line = atoi(c); for(; *c != 0 && *c != ' '; c++); @@ -17,3 +17,4 @@ c_writeline(char *c) { r->text[i] = 0; } } + diff --git a/commands.c b/commands.c index 4ccca99..3343284 100644 --- a/commands.c +++ b/commands.c @@ -1,4 +1,4 @@ -void (*commands[256])(char *) = { +void (*commands[256])(char *, char **) = { NULL, ['O'] = c_open, ['w'] = c_writeline, @@ -15,3 +15,4 @@ NULL, + diff --git a/efn.h b/efn.h index 02e42ef..66e42cf 100644 --- a/efn.h +++ b/efn.h @@ -1,22 +1,18 @@ #include #include "globals.h" +/* extern void (*commands[256])(char *); +*/ -void c_quit(char *); -void c_open(char *); #include void b_truncate(Row *); -void c_print(char *); Row *b_insert(Row *); Row *b_getline(Row *, int); -void c_writeline(char *); -void c_save(char*); -void c_insertline(char *); -void c_indent(char *); -void c_unindent(char *); -void c_delete(char *); + +extern void (*commands[256])(char *, char **); + diff --git a/main.c b/main.c index da658cb..bfe71b4 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -void +char ** parse_command(char *input) { static char com[COM_BUF_SIZE]; memcpy(com, input, COM_BUF_SIZE); @@ -15,10 +15,7 @@ parse_command(char *input) { com[i] = '\0'; next_start++; } - - for (int i = 0; starts[i] != NULL; i++) { - puts(starts[i]); - } + return &starts[0]; } int @@ -32,10 +29,11 @@ main(int argc, char **argv) { if (buf[i] == '\n') buf[i] = '\0'; if (com != NULL) { - if (commands[com[0]] != NULL) commands[com[0]](buf); + if (commands[com[0]] != NULL) commands[com[0]](buf, parse_command(com)); else puts("invalid command."); } } return 0; } +