From 39ab7a9055a3a75dc06bec4a6f4daefb262f139b Mon Sep 17 00:00:00 2001 From: bx Date: Sat, 2 Apr 2022 11:59:31 +0000 Subject: [PATCH] commands take buf, bad commmands dont segfault --- c_quit.c | 3 ++- commands.c | 2 +- efn.h | 7 +++++-- globals.h | 0 main.c | 5 +++-- 5 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 globals.h diff --git a/c_quit.c b/c_quit.c index 9bba0bc..9160d04 100644 --- a/c_quit.c +++ b/c_quit.c @@ -1,4 +1,5 @@ void -c_quit() { +c_quit(char *b) { exit(0); } + diff --git a/commands.c b/commands.c index 0de604c..2c549e8 100644 --- a/commands.c +++ b/commands.c @@ -1,3 +1,3 @@ -void (*commands[256])() = { +void (*commands[256])(char *) = { NULL, ['q'] = c_quit, diff --git a/efn.h b/efn.h index fb9bd37..e45ebfd 100644 --- a/efn.h +++ b/efn.h @@ -1,4 +1,7 @@ -extern void (*commands[256])(); +#include +#include "globals.h" -void c_quit(); +extern void (*commands[256])(char *); + +void c_quit(char *); diff --git a/globals.h b/globals.h new file mode 100644 index 0000000..e69de29 diff --git a/main.c b/main.c index e36e221..a231a38 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,11 @@ int main(int argc, char **argv) { static char buf[256]; - while (1) { + while(1) { char *com = fgets(buf, sizeof(buf), stdin); if (com != NULL) { - commands[com[0]](); + if (commands[com[0]] != NULL) commands[com[0]](buf); + else puts("invalid command."); } } return 0;