From e8703c985af8cbe2de5eb235c7ec295ce1811c7f Mon Sep 17 00:00:00 2001 From: Nakidai Date: Mon, 24 Mar 2025 22:53:57 +0300 Subject: Some improvements - Fix paser - Add verbose mode --- main.c | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index a5f79e7..262e9b6 100644 --- a/main.c +++ b/main.c @@ -3,39 +3,49 @@ #include #include #include +#include +#include + + +int verbose = 0; int main(int argc, char **argv) { - if (!argv[1]) + int ch; + while ((ch = getopt(argc, argv, "v")) >= 0) + { + switch (ch) + { + case 'v': + { + verbose = 1; + } break; + default: + { + fprintf(stderr, "usage: %s [-v] file\n", argv[0]); + exit(1); + } break; + } + } + argc -= optind; + argv += optind; + + if (!*argv) return 1; struct cccl_File file; - int error = cccl_allocfile(argv[1], &file); + int error = cccl_allocfile(*argv, &file); if (error) err(1, "cccl_readfile()"); - FILE *f = fopen(argv[1], "r"); + FILE *f = fopen(*argv, "r"); if (!f) err(1, "fopen()"); - int bytes_read = 0; - while (bytes_read < file.size) - { - int read_now = fread( - file.buffer + bytes_read, - sizeof(*file.buffer), - (file.size - bytes_read) % 2048, - f - ); - if (read_now == 0) - { - if (ferror(f)) - errx(1, "couldn't read %s", argv[1]); - else - break; - } - } + int bytes_read = fread(file.buffer, 1, file.size, f); + if (ferror(f) || bytes_read != file.size) + errx(1, "couldn't read %s", *argv); fclose(f); cccl(file); -- cgit 1.4.1