From 09c15f206edac18bd2158c189c821b9ba85d3939 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Wed, 22 Mar 2023 16:06:18 +0000 Subject: New shared function, getenv_bool() This provides a standard way to get a boolean from an environment variable. It treats the variable as true iff its value begins with 'y' or 'Y', like most of the current implementations. The function takes a default value which it returns if the environment variable is undefined. This replaces the various ad-hoc tests of environment variable scattered around and mostly doesn't change their behaviour. The exceptions are TOWERS_2D in Towers and DEBUG_PUZZLES in the Windows front end. Both of those were treated as true if they were defined at all, but now follow the same rules as other boolean environment variables. --- misc.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'misc.c') diff --git a/misc.c b/misc.c index c4c4b69..f18f17e 100644 --- a/misc.c +++ b/misc.c @@ -198,6 +198,14 @@ char *fgetline(FILE *fp) return ret; } +bool getenv_bool(const char *name, bool dflt) +{ + char *env = getenv(name); + if (env == NULL) return dflt; + if (env[0] == 'y' || env[0] == 'Y') return true; + return false; +} + /* Utility functions for colour manipulation. */ static float colour_distance(const float a[3], const float b[3]) -- cgit v1.1