diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-06-19 08:41:52 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-06-25 12:51:25 -0400 |
commit | 53e969c137cb39bed432cd165d3d7e3825b1a2a9 (patch) | |
tree | a84c7e4a45f0bab0cdb61629539188224ac4ad76 /src | |
parent | 59317c8a238f49ad298d4f51f42a0f7b16c9cc3c (diff) | |
download | tor-53e969c137cb39bed432cd165d3d7e3825b1a2a9.tar.gz tor-53e969c137cb39bed432cd165d3d7e3825b1a2a9.zip |
Use struct_var_{copy,eq} in confparse.c.
Diffstat (limited to 'src')
-rw-r--r-- | src/app/config/confparse.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/src/app/config/confparse.c b/src/app/config/confparse.c index 752d16c844..b9b5fddb96 100644 --- a/src/app/config/confparse.c +++ b/src/app/config/confparse.c @@ -542,17 +542,15 @@ config_is_same(const config_format_t *fmt, const void *o1, const void *o2, const char *name) { - config_line_t *c1, *c2; - int r = 1; CONFIG_CHECK(fmt, o1); CONFIG_CHECK(fmt, o2); - c1 = config_get_assigned_option(fmt, o1, name, 0); - c2 = config_get_assigned_option(fmt, o2, name, 0); - r = config_lines_eq(c1, c2); - config_free_lines(c1); - config_free_lines(c2); - return r; + const config_var_t *var = config_find_option(fmt, name); + if (!var) { + return true; + } + + return struct_var_eq(o1, o2, &var->member); } /** Copy storage held by <b>old</b> into a new or_options_t and return it. */ @@ -561,7 +559,6 @@ config_dup(const config_format_t *fmt, const void *old) { void *newopts; int i; - config_line_t *line; newopts = config_new(fmt); for (i=0; fmt->vars[i].member.name; ++i) { @@ -569,19 +566,13 @@ config_dup(const config_format_t *fmt, const void *old) continue; if (fmt->vars[i].member.type == CONFIG_TYPE_OBSOLETE) continue; - line = config_get_assigned_option(fmt, old, fmt->vars[i].member.name, 0); - if (line) { - char *msg = NULL; - if (config_assign(fmt, newopts, line, 0, &msg) < 0) { - // LCOV_EXCL_START - log_err(LD_BUG, "config_get_assigned_option() generated " - "something we couldn't config_assign(): %s", msg); - tor_free(msg); - tor_assert(0); - // LCOV_EXCL_STOP - } + if (struct_var_copy(newopts, old, &fmt->vars[i].member) < 0) { + // LCOV_EXCL_START + log_err(LD_BUG, "Unable to copy value for %s.", + fmt->vars[i].member.name); + tor_assert_unreached(); + // LCOV_EXCL_STOP } - config_free_lines(line); } return newopts; } |