diff options
| -rw-r--r-- | src/stasis_main.c | 29 | 
1 files changed, 17 insertions, 12 deletions
| diff --git a/src/stasis_main.c b/src/stasis_main.c index ce49829..9348140 100644 --- a/src/stasis_main.c +++ b/src/stasis_main.c @@ -98,30 +98,35 @@ static void usage(char *progname) {      }  } -static const char *has_envctl_key_(size_t i) { -    for (size_t x = 0; globals.envctl[i].name[x] != NULL; x++) { +static int get_envctl_key_index_(size_t i) { +    for (int x = 0; x < (int)(sizeof(globals.envctl[i].name) / sizeof(*globals.envctl[i].name)); x++) {          const char *name = globals.envctl[i].name[x]; +        if (!name) { +            return -1; +        }          const char *data = getenv(name); -        if (data) { -            return name; +        if (data != NULL) { +            return x;          }      } -    return NULL; +    return -1;  }  static void check_system_env_requirements() {      msg(STASIS_MSG_L1, "Checking environment\n");      for (size_t i = 0; globals.envctl[i].name[0] != NULL; i++) {          unsigned int flags = globals.envctl[i].flags; -        const char *key = has_envctl_key_(i); -        if ((flags & STASIS_ENVCTL_REQUIRED) && !(key && strlen(getenv(key)))) { -            if (!strcmp(key, "STASIS_JF_REPO") && !globals.enable_artifactory) { -                continue; +        int key = get_envctl_key_index_(i); +        if (key < 0) { +            if (flags & STASIS_ENVCTL_REQUIRED) { +                if (!strcmp(globals.envctl[i].name[0], "STASIS_JF_REPO") && !globals.enable_artifactory) { +                    continue; +                } +                msg(STASIS_MSG_L2 | STASIS_MSG_ERROR, "Environment variable '%s' must be defined.\n", +                    globals.envctl[i].name[0]); +                exit(1);              } -            msg(STASIS_MSG_L2 | STASIS_MSG_ERROR, "Environment variable '%s' must be configured.\n", globals.envctl[i].name[0]); -            exit(1);          } -      }  } | 
