diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-02-28 18:23:06 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-02-28 18:23:06 +0800 |
| commit | 81267fd2afcbe5516018ec2f4fdd4c0c1bbbf1aa (patch) | |
| tree | 956595a17c1d1f854053fae65813744444fe37fa | |
| parent | 5c508c9698d49f852834baff8bd3e2fb93370a0f (diff) | |
| download | cvn-81267fd2afcbe5516018ec2f4fdd4c0c1bbbf1aa.tar.gz | |
Process args with getopt().
| -rw-r--r-- | main.c | 52 |
1 files changed, 52 insertions, 0 deletions
@@ -1,4 +1,56 @@ +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +#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 <command> [<args>]\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); +} + |
