diff options
author | Tom Smeding <t.j.smeding@uu.nl> | 2024-07-13 18:33:37 +0200 |
---|---|---|
committer | Tom Smeding <t.j.smeding@uu.nl> | 2024-07-13 18:33:37 +0200 |
commit | a08a2a2dbb3d150bdb2d01bd54c6ad32f02fe5fa (patch) | |
tree | aaac1ffb99935d3b65eed111c9d7f158d28ac176 /main.c | |
parent | eba8b972d2bc85b8fe6acff90505116da8e29abd (diff) |
waar, poging 2
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 32 |
1 files changed, 31 insertions, 1 deletions
@@ -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; } |