summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorTom Smeding <t.j.smeding@uu.nl>2024-07-13 18:33:37 +0200
committerTom Smeding <t.j.smeding@uu.nl>2024-07-13 18:33:37 +0200
commita08a2a2dbb3d150bdb2d01bd54c6ad32f02fe5fa (patch)
treeaaac1ffb99935d3b65eed111c9d7f158d28ac176 /main.c
parenteba8b972d2bc85b8fe6acff90505116da8e29abd (diff)
waar, poging 2
Diffstat (limited to 'main.c')
-rw-r--r--main.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/main.c b/main.c
index b5e3883..8cde9b8 100644
--- a/main.c
+++ b/main.c
@@ -1,5 +1,35 @@
#include <stdio.h>
+#include <string.h>
+
+#define X(name) int entry_ ## name (int argc, char **argv);
+PROGNAMES_XLIST
+#undef X
+
+static char* basename(char *path) {
+ size_t len = strlen(path);
+ for (size_t i = len - 1; i != 0; i--) {
+ if (path[i] == '/') return path + (i + 1);
+ }
+ return path;
+}
int main(int argc, char **argv) {
- fprintf(stderr, "Drukkedoos moet nog geïmplementeerd worden\n");
+ const char *prognamearg = basename(argv[0]);
+
+ if (strcmp(prognamearg, "drukkedoos") == 0) {
+ argv++;
+ argc--;
+ if (argc == 0) {
+ fprintf(stderr, "Gebruik: drukkedoos <commando>\n");
+ return 1;
+ }
+ prognamearg = basename(argv[0]);
+ }
+
+#define X(name) if (strcmp(argv[0], #name) == 0) return entry_ ## name (argc, argv);
+PROGNAMES_XLIST
+#undef X
+
+ fprintf(stderr, "Onbekend hulpmiddel: '%s'\n", prognamearg);
+ return 1;
}