From f802f3a4decf4827ecc8bcabe269ae9f94f7f32d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 12 Nov 2020 14:33:22 +0000 Subject: [PATCH] networks: Add function to merge two lists Signed-off-by: Michael Tremer --- src/libloc.sym | 1 + src/loc/network.h | 1 + src/network.c | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/src/libloc.sym b/src/libloc.sym index f1b63a2..c0b6b1f 100644 --- a/src/libloc.sym +++ b/src/libloc.sym @@ -108,6 +108,7 @@ global: loc_network_list_dump; loc_network_list_empty; loc_network_list_get; + loc_network_list_merge; loc_network_list_new; loc_network_list_pop; loc_network_list_push; diff --git a/src/loc/network.h b/src/loc/network.h index 7804512..e30d91c 100644 --- a/src/loc/network.h +++ b/src/loc/network.h @@ -76,6 +76,7 @@ struct loc_network* loc_network_list_pop(struct loc_network_list* list); int loc_network_list_contains(struct loc_network_list* list, struct loc_network* network); void loc_network_list_sort(struct loc_network_list* list); void loc_network_list_reverse(struct loc_network_list* list); +int loc_network_list_merge(struct loc_network_list* self, struct loc_network_list* other); #ifdef LIBLOC_PRIVATE diff --git a/src/network.c b/src/network.c index fcbdc59..541286d 100644 --- a/src/network.c +++ b/src/network.c @@ -1169,3 +1169,16 @@ LOC_EXPORT void loc_network_list_sort(struct loc_network_list* list) { n--; } while (swapped); } + +LOC_EXPORT int loc_network_list_merge( + struct loc_network_list* self, struct loc_network_list* other) { + int r; + + for (unsigned int i = 0; i < other->size; i++) { + r = loc_network_list_push(self, other->list[i]); + if (r) + return r; + } + + return 0; +} -- 2.39.2