diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-05-13 16:18:53 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-05-13 16:18:53 -0400 |
commit | 2253697a04c926edb1a5f18727a6cd24528730b1 (patch) | |
tree | 198f895422b3e2b68524311a7b2fd8fa8492e989 /src/common | |
parent | 5f2a1a7b4f20be121cd30def95cf7789924ca70a (diff) | |
download | tor-2253697a04c926edb1a5f18727a6cd24528730b1.tar.gz tor-2253697a04c926edb1a5f18727a6cd24528730b1.zip |
New smartlist function to see if two lists of strings are equal.
We'll use this to detect changes in CSV options.
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/container.c | 19 | ||||
-rw-r--r-- | src/common/container.h | 2 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/common/container.c b/src/common/container.c index 09d4bb131f..ca49cbb170 100644 --- a/src/common/container.c +++ b/src/common/container.c @@ -215,6 +215,25 @@ smartlist_string_num_isin(const smartlist_t *sl, int num) return smartlist_string_isin(sl, buf); } +/** Return true iff the two lists contain the same strings in the same + * order, or if they are both NULL. */ +int +smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2) +{ + if (sl1 == NULL) + return sl2 == NULL; + if (sl2 == NULL) + return 0; + if (smartlist_len(sl1) != smartlist_len(sl2)) + return 0; + SMARTLIST_FOREACH(sl1, const char *, cp1, { + const char *cp2 = smartlist_get(sl2, cp1_sl_idx); + if (strcmp(cp1, cp2)) + return 0; + }); + return 1; +} + /** Return true iff <b>sl</b> has some element E such that * tor_memeq(E,<b>element</b>,DIGEST_LEN) */ diff --git a/src/common/container.h b/src/common/container.h index b39d4ca07e..f5e42de764 100644 --- a/src/common/container.h +++ b/src/common/container.h @@ -42,6 +42,8 @@ int smartlist_string_pos(const smartlist_t *, const char *elt) ATTR_PURE; int smartlist_string_isin_case(const smartlist_t *sl, const char *element) ATTR_PURE; int smartlist_string_num_isin(const smartlist_t *sl, int num) ATTR_PURE; +int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2) + ATTR_PURE; int smartlist_digest_isin(const smartlist_t *sl, const char *element) ATTR_PURE; int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2) |