From 82938d522273eefd51b136f037810fa6b963a096 Mon Sep 17 00:00:00 2001 From: Victor Mignot Date: Wed, 18 Feb 2026 08:16:09 +0100 Subject: Implement `true` and `false` --- src/false.c | 6 ++++++ src/main.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/true.c | 5 +++++ 3 files changed, 60 insertions(+) create mode 100644 src/false.c create mode 100644 src/main.c create mode 100644 src/true.c (limited to 'src') diff --git a/src/false.c b/src/false.c new file mode 100644 index 0000000..2601ae2 --- /dev/null +++ b/src/false.c @@ -0,0 +1,6 @@ +int false_main(int argc, char *argv[]) { + (void) argc; + (void) argv; + + return 1; +} 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 +#include +#include +#include + +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; +} diff --git a/src/true.c b/src/true.c new file mode 100644 index 0000000..d7d4dfb --- /dev/null +++ b/src/true.c @@ -0,0 +1,5 @@ +int true_main(int argc, char *argv[]) { + (void) argc; + (void) argv; + return 0; +} -- cgit v1.2.3