diff options
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 20 | 
1 files changed, 20 insertions, 0 deletions
@@ -1,10 +1,12 @@  #include <stddef.h>  #include <stdlib.h> +#include <errno.h>  #include <errors.h>  #include <pcre2.h>  #include "exitcodes.h" +#include "globals.h"  void  pcre2_bitch_and_die(int ec, const char *fmt) @@ -21,4 +23,22 @@ pcre2_bitch_and_die(int ec, const char *fmt)  		} else  			cerr(EXIT_FATAL, fmt, buf);  	} +} + +int +getenv_posnum(const char *ev, int fallback) +{ +	const char *s = getenv(ev); +	if (s != nullptr && *s != 0) { +		const char *endptr; +		errno = 0; +		long n = strtol(s, (char **)&endptr, 10); +		if (errno != 0) +			warn("strtol: %s:", s); +		else if (*endptr != 0 || n <= 0) +			warn("invalid value %s%s%s for %s", lquot, s, rquot, ev); +		else +			return (int)n; +	} +	return fallback;  }
\ No newline at end of file  |