diff options
Diffstat (limited to 'lib/common/lists.c')
-rw-r--r-- | lib/common/lists.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/common/lists.c b/lib/common/lists.c new file mode 100644 index 0000000..9cd88d7 --- /dev/null +++ b/lib/common/lists.c @@ -0,0 +1,27 @@ +/* + * Copyright 2004-2022 the Pacemaker project contributors + * + * The version control history for this file may have further details. + * + * This source code is licensed under the GNU Lesser General Public License + * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. + */ + +#include <crm_internal.h> +#include <crm/common/lists_internal.h> + +GList* +pcmk__subtract_lists(GList *from, const GList *items, GCompareFunc cmp) +{ + GList *result = g_list_copy(from); + + for (const GList *item = items; item != NULL; item = item->next) { + GList *match = g_list_find_custom(result, item->data, cmp); + + if (match != NULL) { + result = g_list_remove(result, match->data); + } + } + + return result; +} |