mirror of
https://github.com/estkme-group/lpac
synced 2025-06-30 16:52:55 +02:00
53 lines
1.6 KiB
C
53 lines
1.6 KiB
C
#include "helpers.h"
|
|
|
|
#include <ctype.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
static bool is_numeric(const char *value) {
|
|
if (value == NULL) return false;
|
|
for (size_t i = strlen(value); i > 0; --i) {
|
|
if (isdigit(value[i])) continue;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
const char *getenv_str_or_default(const char *name, const char *default_value) {
|
|
const char *value = getenv(name);
|
|
if (value == NULL) return default_value;
|
|
return value;
|
|
}
|
|
|
|
bool getenv_bool_or_default(const char *name, const bool default_value) {
|
|
const char *value = getenv(name);
|
|
if (value == NULL) return default_value;
|
|
if (is_numeric(value)) return strcmp(value, "0") != 0;
|
|
return strcasecmp(value, "y") == 0 ||
|
|
strcasecmp(value, "yes") == 0 ||
|
|
strcasecmp(value, "true") == 0;
|
|
}
|
|
|
|
int getenv_int_or_default(const char *name, const int default_value) {
|
|
return (int) getenv_long_or_default(name, default_value);
|
|
}
|
|
|
|
long getenv_long_or_default(const char *name, const long default_value) {
|
|
const char *value = getenv(name);
|
|
if (value == NULL) return default_value;
|
|
return strtol(value, NULL, 10);
|
|
}
|
|
|
|
void set_deprecated_env_name(const char *name, const char *deprecated_name) {
|
|
const char *value = getenv(name);
|
|
if (value != NULL) return; // new env var already set
|
|
value = getenv(deprecated_name);
|
|
if (value == NULL) return; // deprecated env var not set
|
|
fprintf(stderr, "WARNING: Please use '%s' instead of '%s'\n", name, deprecated_name);
|
|
#ifdef _WIN32
|
|
_putenv_s(name, value);
|
|
#else
|
|
setenv(name, value, 1);
|
|
#endif
|
|
}
|