From 0d185faaed5db14bf3c9d42d92337c9d749021c7 Mon Sep 17 00:00:00 2001 From: Chloe M Date: Sun, 16 Aug 2026 01:36:10 -0500 Subject: tools: Add checkenv tool for verifying if ENVs are set Signed-off-by: Chloe M --- checkenv/.bop/posthook.sh | 1 + checkenv/checkenv.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 checkenv/.bop/posthook.sh create mode 100644 checkenv/checkenv.c (limited to 'checkenv') diff --git a/checkenv/.bop/posthook.sh b/checkenv/.bop/posthook.sh new file mode 100644 index 0000000..67caec9 --- /dev/null +++ b/checkenv/.bop/posthook.sh @@ -0,0 +1 @@ +clang checkenv/*.o -o bin/checkenv diff --git a/checkenv/checkenv.c b/checkenv/checkenv.c new file mode 100644 index 0000000..d2d6c57 --- /dev/null +++ b/checkenv/checkenv.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +static void +help(void) +{ + printf("usage: ./checkenv :<...>:<...>\n"); + printf("[-h] Display this help menu\n"); +} + +static int +check_envs(const char *envlist) +{ + char *p, *tok; + char *env; + + p = strdup(envlist); + if (p == NULL) { + printf("fatal: out of memory\n"); + return -1; + } + + tok = strtok(p, ":"); + while (tok != NULL) { + if ((env = getenv(tok)) == NULL) { + printf("env '%s' not set\n", tok); + return -1; + } + tok = strtok(NULL, ":"); + } + + return 0; +} + +int +main(int argc, char **argv) +{ + int opt; + char *envlist; + int error; + + if (argc < 2) { + printf("fatal: too few arguments\n"); + help(); + return -1; + } + + while ((opt = getopt(argc, argv, "h")) != -1) { + switch (opt) { + case 'h': + help(); + return -1; + } + } + + while (optind < argc) { + envlist = argv[optind++]; + if ((error = check_envs(envlist)) < 0) { + return error; + } + } + + return 0; +} -- cgit v1.2.3