Typed env config with defaults and range checks in C
C
#include <errno.h>
#include <stdlib.h>
int env_int(const char *name, int def, int lo, int hi, int *out) {
const char *s = getenv(name);
if (!s || !*s) { *out = def; return 0; }
char *end;
errno = 0;
long v = strtol(s, &end, 10);
if (errno != 0 || *end != '\0' || v < lo || v > hi) return -1;
*out = (int)v;
return 0;
}
const char *env_str(const char *name, const char *def) {
const char *s = getenv(name);
return s && *s ? s : def;
}