From cf7a54528063b44ca932f1fe6336edfa936ba319 Mon Sep 17 00:00:00 2001 From: Ivo Julca Date: Sun, 16 Mar 2025 11:57:00 -0500 Subject: [PATCH 1/2] Refactor dofile to lower complexity (cherry picked from commit 13cf484b86d533e0bdaec9ba3cc484baebc3ffe9) (cherry picked from commit 007d6b6d4462eb1def16ed1de5494d1c2afbd7d1) --- main.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/main.c b/main.c index 308c4b5..c5df597 100644 --- a/main.c +++ b/main.c @@ -198,6 +198,24 @@ static void printhelp() } } +static void tryfile(const char *name) +{ + FILE *fp; +#ifdef _MSC_VER + errno_t err = fopen_s(&fp, name, "rb"); + if (err != 0) { +#else + fp = fopen(name, "rb"); + if (fp == NULL) { +#endif + haderrors++; + return; + } + dofile(fp, name); + fclose(fp); + didparse = 1; +} + static void doparse(int argc, char **argv) { int i; @@ -220,22 +238,7 @@ static void doparse(int argc, char **argv) continue; } - FILE *fp; -#ifdef _MSC_VER - errno_t err = fopen_s(&fp, argv[i], "rb"); - if (err != 0) { -#else - fp = fopen(argv[i], "rb"); - if (fp == NULL) { -#endif - printf("Error: Cannot open %s\n", argv[i]); - haderrors++; - continue; - } - - dofile(fp, argv[i]); - didparse = 1; - fclose(fp); + tryfile(argv[i]); } if (argc == 1) { didparse = 1; From 81f21c8f8e2c32fc304f938a7cdfca0534fd5286 Mon Sep 17 00:00:00 2001 From: Ivo Julca Date: Sun, 16 Mar 2025 15:15:05 -0500 Subject: [PATCH 2/2] Refactor main function for reusability --- main.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index c5df597..07d4d00 100644 --- a/main.c +++ b/main.c @@ -246,11 +246,8 @@ static void doparse(int argc, char **argv) } } -int main(int argc, char **argv) +static int ret() { - init(); - doparse(argc, argv); - if (!haderrors && didparse) { printf("Parse successful: %8d lines: %s\n", totlines, ""); if (ignorederrors) { @@ -269,3 +266,10 @@ int main(int argc, char **argv) return 1; } } + +int main(int argc, char **argv) +{ + init(); + doparse(argc, argv); + return ret(); +}