diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common.c | 9 | ||||
| -rw-r--r-- | src/zyklonb.c | 6 | 
2 files changed, 11 insertions, 4 deletions
| diff --git a/src/common.c b/src/common.c index fcb9742..8ec6646 100644 --- a/src/common.c +++ b/src/common.c @@ -1418,6 +1418,15 @@ set_boolean_if_valid (bool *out, const char *s)  }  static bool +xstrtoul (unsigned long *out, const char *s, int base) +{ +	char *end; +	errno = 0; +	*out = strtoul (s, &end, base); +	return errno == 0 && !*end && end != s; +} + +static bool  read_line (FILE *fp, struct str *s)  {  	int c; diff --git a/src/zyklonb.c b/src/zyklonb.c index a57b8c4..3d8d388 100644 --- a/src/zyklonb.c +++ b/src/zyklonb.c @@ -1418,10 +1418,8 @@ irc_try_reconnect (struct bot_context *ctx)  	const char *delay_str = str_map_find (&ctx->config, "reconnect_delay");  	hard_assert (delay_str != NULL);  // We have a default value for this -	char *end_ptr; -	errno = 0; -	long delay = strtol (delay_str, &end_ptr, 10); -	if (errno != 0 || end_ptr == delay_str || *end_ptr) +	unsigned long delay; +	if (!xstrtoul (&delay, delay_str, 10))  	{  		print_error ("invalid configuration value for `%s'",  			"reconnect_delay"); | 
