diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..1c2ae2e --- /dev/null +++ b/src/main.c @@ -0,0 +1,49 @@ +#include <libgen.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +typedef int util_main(int, char **); + +extern util_main true_main; +extern util_main false_main; + +typedef struct futiles_util futiles_util_t; +struct futiles_util { + const char *name; + util_main *main; +}; + +int display_utils(int, char **); +const futiles_util_t utils[] = { + { .name = "futiles", .main = display_utils }, + { .name = "true", .main = true_main }, + { .name = "false", .main = false_main } +}; +#define UTILS_NB (sizeof(utils) / sizeof(futiles_util_t)) + +int display_utils(int argc, char *argv[]) { + (void) argc; + (void) argv; + + printf("Available utils: "); + for (size_t i = 1; i < UTILS_NB; i++) { + printf("%s ", utils[i].name); + } + printf("\n"); + + return EXIT_SUCCESS; +} + +int main(int argc, char *argv[]) { + (void) argc; + + char *called_basename = basename(argv[0]); + + for (size_t i = 0; i < UTILS_NB; i++) { + if (strcmp(called_basename, utils[i].name) == 0) { + return utils[i].main(argc, argv); + } + } + return EXIT_FAILURE; +} |
