]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
networks: Add function to merge two lists
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 12 Nov 2020 14:33:22 +0000 (14:33 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 12 Nov 2020 14:33:22 +0000 (14:33 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libloc.sym
src/loc/network.h
src/network.c

index f1b63a25a3f79192671f3fe3213665503d4d063d..c0b6b1f1bcc4a79ba80912903fa89b7ae4364806 100644 (file)
@@ -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;
index 78045124467164f2a75017135cd7103e24b09c99..e30d91c9cc4a171edf38dc0dae1a6b705cdbff63 100644 (file)
@@ -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
 
index fcbdc5931b6fe2c23814e495e93e1405fb313716..541286db81a98b50975011cda245209bb34b20e5 100644 (file)
@@ -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;
+}