From 0d449af09cebc1586eb79c8c9c841a33b6500ae4 Mon Sep 17 00:00:00 2001 From: Adam Fordsmand Date: Wed, 28 Sep 2022 20:27:35 +0200 Subject: [PATCH] Fixed som logic --- focussg.c | 74 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/focussg.c b/focussg.c index 1070a0f..ee2499c 100644 --- a/focussg.c +++ b/focussg.c @@ -3,54 +3,86 @@ #include #include #include - #include "BlogDB.h" static int HelpMessage(); -static int ShortArg(int argc, char *argv[]); -static int LongArg(int argc, char *argv[]); +static int VersionMessage(); +static int ShortArg(char currentArg[], int argIndex, char *argv[]); +static int LongArg(char currentArg[], int argIndex, char *argv[]); int HelpMessage() { printf("Usage: focussg [OPTION]\n"); + printf("FoCuSSG (Fordsmand's C Static Site Generator)\n"); + printf("\n"); + printf(" -h, --help Show this help message.\n"); + printf(" -V, --version Show the version number of FoCuSSG.\n"); exit(0); } -int ShortArg(int argc, char *argv[]) +int VersionMessage() { - switch (argv[1][1]) { - case 'h': - HelpMessage(); - break; - default: - HelpMessage(); - break; + printf("Pre-Release\n"); + exit(0); +} + +int ShortArg(char currentArg[], int argIndex, char *argv[]) +{ + char* options; + options = ¤tArg[1]; + + int count = strlen(options); + + if (count == 0) { HelpMessage(); exit(0); } + + for (int i = 0; i < count; ++i) { + switch (options[i]) { + case 'h': + HelpMessage(); + break; + case 'V': + VersionMessage(); + break; + case 0: // Missing character, should never happen + exit(1); + break; + default: + HelpMessage(); + break; + } } } -int LongArg(int argc, char *argv[]) +int LongArg(char currentArg[], int argIndex, char *argv[]) { char* option; - option = &argv[1][2]; + option = ¤tArg[2]; if (strcmp(option, "help") == 0) HelpMessage(); + else if (strcmp(option, "version") == 0) + VersionMessage(); else if (strcmp(option, "") == 0) - return 0; + HelpMessage(); else HelpMessage(); } + int main(int argc, char *argv[]) { - if (argc < 2) - HelpMessage(); - else if (argv[1][0] != '-') - HelpMessage(); - else if (argv[1][1] != '-') - ShortArg(argc, argv); + if (argc == 1) HelpMessage(); + + for (int i = 1; i < argc; ++i) + { + if (argv[i][0] != '-') + HelpMessage(); + else if (argv[i][1] != '-') + ShortArg(argv[i], i, argv); + else + LongArg(argv[i], i, argv); + } - LongArg(argc, argv); return 0; }