tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 5a2ab886baaa125fe715acca8f7daf35031855aa
parent 458da8a80d356a0c8015f025828cd1523838ecac
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu, 13 Jun 2019 15:19:26 -0400

Add a function to append an existing line to a config line list.

We had an existing function to do this, but it took a pair of
strings rather than a line.

Diffstat:
Msrc/lib/encoding/confline.c | 15++++++++++++---
Msrc/lib/encoding/confline.h | 3++-
2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/lib/encoding/confline.c b/src/lib/encoding/confline.c @@ -33,14 +33,23 @@ config_line_append(config_line_t **lst, const char *key, const char *val) { - tor_assert(lst); - config_line_t *newline; newline = tor_malloc_zero(sizeof(config_line_t)); newline->key = tor_strdup(key); newline->value = tor_strdup(val); newline->next = NULL; + + config_line_append_line(lst, newline); +} + +/** Helper: append <b>newline</b> to the end of <b>lst</b>. */ +void +config_line_append_line(config_line_t **lst, + config_line_t *newline) +{ + tor_assert(lst); + while (*lst) lst = &((*lst)->next); @@ -256,7 +265,7 @@ config_lines_dup_and_filter(const config_line_t *inp, /** Return true iff a and b contain identical keys and values in identical * order. */ int -config_lines_eq(config_line_t *a, config_line_t *b) +config_lines_eq(const config_line_t *a, const config_line_t *b) { while (a && b) { if (strcasecmp(a->key, b->key) || strcmp(a->value, b->value)) diff --git a/src/lib/encoding/confline.h b/src/lib/encoding/confline.h @@ -41,6 +41,7 @@ typedef struct config_line_t { void config_line_append(config_line_t **lst, const char *key, const char *val); +void config_line_append_line(config_line_t **lst, config_line_t *newline); void config_line_prepend(config_line_t **lst, const char *key, const char *val); config_line_t *config_lines_dup(const config_line_t *inp); @@ -50,7 +51,7 @@ const config_line_t *config_line_find(const config_line_t *lines, const char *key); const config_line_t *config_line_find_case(const config_line_t *lines, const char *key); -int config_lines_eq(config_line_t *a, config_line_t *b); +int config_lines_eq(const config_line_t *a, const config_line_t *b); int config_count_key(const config_line_t *a, const char *key); void config_free_lines_(config_line_t *front); #define config_free_lines(front) \