diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/container.c | 14 | ||||
-rw-r--r-- | src/common/container.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/common/container.c b/src/common/container.c index 06e810a149..94f7f84df5 100644 --- a/src/common/container.c +++ b/src/common/container.c @@ -461,6 +461,20 @@ smartlist_sort_strings(smartlist_t *sl) smartlist_sort(sl, _compare_string_ptrs); } +/** Helper: compare two DIGEST_LEN digests. */ +static int +_compare_digests(const void **_a, const void **_b) +{ + return memcmp((const char*)*_a, (const char*)*_b, DIGEST_LEN); +} + +/** Sort the list of DIGEST_LEN-byte digests into ascending order. */ +void +smartlist_sort_digests(smartlist_t *sl) +{ + smartlist_sort(sl, _compare_string_ptrs); +} + #define DEFINE_MAP_STRUCTS(maptype, keydecl, prefix) \ typedef struct prefix ## entry_t { \ HT_ENTRY(prefix ## entry_t) node; \ diff --git a/src/common/container.h b/src/common/container.h index 40cf13f4fa..1031a6ef13 100644 --- a/src/common/container.h +++ b/src/common/container.h @@ -72,6 +72,7 @@ void smartlist_insert(smartlist_t *sl, int idx, void *val); void smartlist_sort(smartlist_t *sl, int (*compare)(const void **a, const void **b)); void smartlist_sort_strings(smartlist_t *sl); +void smartlist_sort_digests(smartlist_t *sl); void *smartlist_bsearch(smartlist_t *sl, const void *key, int (*compare)(const void *key, const void **member)); |