Add a function to make sure all values in a config object are ok

This commit is contained in:
Nick Mathewson 2019-06-19 16:06:15 -04:00
parent a91ed23403
commit a114df9a04
2 changed files with 20 additions and 0 deletions

View File

@ -673,3 +673,21 @@ config_dump(const config_format_t *fmt, const void *default_options,
}
return result;
}
/**
* Return true if every member of <b>options</b> is in-range and well-formed.
* Return false otherwise. Log errors at level <b>severity</b>.
*/
bool
config_check_ok(const config_format_t *fmt, const void *options, int severity)
{
bool all_ok = true;
for (int i=0; fmt->vars[i].member.name; ++i) {
if (!struct_var_ok(options, &fmt->vars[i].member)) {
log_fn(severity, LD_BUG, "Invalid value for %s",
fmt->vars[i].member.name);
all_ok = false;
}
}
return all_ok;
}

View File

@ -138,6 +138,8 @@ void *config_dup(const config_format_t *fmt, const void *old);
char *config_dump(const config_format_t *fmt, const void *default_options,
const void *options, int minimal,
int comment_defaults);
bool config_check_ok(const config_format_t *fmt, const void *options,
int severity);
int config_assign(const config_format_t *fmt, void *options,
struct config_line_t *list,
unsigned flags, char **msg);