From 81267fd2afcbe5516018ec2f4fdd4c0c1bbbf1aa Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 28 Feb 2026 18:23:06 +0800 Subject: Process args with getopt(). --- main.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/main.c b/main.c index 50bc2c9..ddf094e 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,56 @@ +#include +#include +#include + +#define DEFAULT_BRANCH_NAME "master" + +static inline void init(int argc, char *argv[]); + +struct command { + char *name; + void (*func)(int argc, char *argv[]); +}; + +struct command cmd[] = { + {"init", init}, + {NULL, NULL} +}; + int main(int argc, char *argv[]) { + uint8_t i; + + if (argc < 2) { + fprintf(stderr, "Usage: %s []\n", argv[0]); + return 1; + } + + for (i = 0; cmd[i].name != NULL; i++) { + if (strcmp(argv[1], cmd[i].name) == 0) { + cmd[i].func(argc - 1, argv + 1); + return 0; + } + } + return 0; } + +void init(int argc, char *argv[]) +{ + int opt; + char *branch; + + optind = 1; + branch = DEFAULT_BRANCH_NAME; + + while ((opt = getopt(argc, argv, "b:")) != -1) { + switch (opt) { + case 'b': + branch = optarg; + break; + default: return; + } + } + printf("Initialized repository, branch: %s\n", branch); +} + -- cgit v1.2.3