From 125fb18e49dbef25b97bb546198d3f35603e58f1 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 6 Feb 2018 08:48:21 -0500 Subject: conditionals: if, do/while --- shell.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'shell.c') diff --git a/shell.c b/shell.c index 1d22269..751ef8f 100644 --- a/shell.c +++ b/shell.c @@ -41,10 +41,21 @@ int quit(interpreter *it) return 0; } -int main() +int main(int argc, char **argv) { interpreter interp; + if (argc != 2) { + printf("Usage: %s file\n", argv[0]); + return -1; + } + + FILE *fp = fopen(argv[1], "r"); + if (fp == 0) { + printf("Could not open file: %s\n", argv[1]); + return -1; + } + iinit(&interp); inew_cfunc(&interp, "put", s_put); inew_cfunc(&interp, "tp", s_type); @@ -54,14 +65,13 @@ int main() char *line = 0; unsigned int size; int result; - while (1) { - printf("%d> ", interp.lnidx); - getline(&line, &size, stdin); + while (getline(&line, &size, fp) != -1) { *strchr(line, '\n') = '\0'; result = idoline(&interp, line); if (result != 0) printf("Error: %d\n", result); } + fclose(fp); return 0; } -- cgit v1.2.3