Line data Source code
1 : /* 2 : * Copyright 2004-2022 the Pacemaker project contributors 3 : * 4 : * The version control history for this file may have further details. 5 : * 6 : * This source code is licensed under the GNU Lesser General Public License 7 : * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. 8 : */ 9 : 10 : #include <crm_internal.h> 11 : #include <crm/common/lists_internal.h> 12 : 13 : GList* 14 5 : pcmk__subtract_lists(GList *from, const GList *items, GCompareFunc cmp) 15 : { 16 5 : GList *result = g_list_copy(from); 17 : 18 13 : for (const GList *item = items; item != NULL; item = item->next) { 19 8 : GList *match = g_list_find_custom(result, item->data, cmp); 20 : 21 8 : if (match != NULL) { 22 6 : result = g_list_remove(result, match->data); 23 : } 24 : } 25 : 26 5 : return result; 27 : }