merge 14-argument-handler int command-line-interface #36

Merged
asdam9 merged 2 commits from 14-argument-handler into command-line-interface 2022-09-28 18:44:19 +00:00
1 changed files with 53 additions and 21 deletions
Showing only changes of commit 0d449af09c - Show all commits

View File

@ -3,54 +3,86 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
#include "BlogDB.h" #include "BlogDB.h"
static int HelpMessage(); static int HelpMessage();
static int ShortArg(int argc, char *argv[]); static int VersionMessage();
static int LongArg(int argc, char *argv[]); static int ShortArg(char currentArg[], int argIndex, char *argv[]);
static int LongArg(char currentArg[], int argIndex, char *argv[]);
int HelpMessage() int HelpMessage()
{ {
printf("Usage: focussg [OPTION]\n"); 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); exit(0);
} }
int ShortArg(int argc, char *argv[]) int VersionMessage()
{ {
switch (argv[1][1]) { printf("Pre-Release\n");
case 'h': exit(0);
HelpMessage(); }
break;
default: int ShortArg(char currentArg[], int argIndex, char *argv[])
HelpMessage(); {
break; char* options;
options = &currentArg[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; char* option;
option = &argv[1][2]; option = &currentArg[2];
if (strcmp(option, "help") == 0) if (strcmp(option, "help") == 0)
HelpMessage(); HelpMessage();
else if (strcmp(option, "version") == 0)
VersionMessage();
else if (strcmp(option, "") == 0) else if (strcmp(option, "") == 0)
return 0; HelpMessage();
else else
HelpMessage(); HelpMessage();
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
if (argc < 2) if (argc == 1) HelpMessage();
HelpMessage();
else if (argv[1][0] != '-') for (int i = 1; i < argc; ++i)
HelpMessage(); {
else if (argv[1][1] != '-') if (argv[i][0] != '-')
ShortArg(argc, argv); HelpMessage();
else if (argv[i][1] != '-')
ShortArg(argv[i], i, argv);
else
LongArg(argv[i], i, argv);
}
LongArg(argc, argv);
return 0; return 0;
} }