blob: c3f8ee42c86ef469d22f740f51b1344d65f520e3 [file] [log] [blame]
Patrick Georgiafd4c872020-05-05 23:43:18 +02001/* Taken from depthcharge: src/base/list.c */
Patrick Georgiac959032020-05-05 22:49:26 +02002/* SPDX-License-Identifier: GPL-2.0-or-later */
Patrick Rudolph67aca3e2018-04-12 11:44:43 +02003
Patrick Rudolph666c1722018-04-03 09:57:33 +02004#include <list.h>
Patrick Rudolph67aca3e2018-04-12 11:44:43 +02005
Patrick Rudolph666c1722018-04-03 09:57:33 +02006void list_remove(struct list_node *node)
Patrick Rudolph67aca3e2018-04-12 11:44:43 +02007{
8 if (node->prev)
9 node->prev->next = node->next;
10 if (node->next)
11 node->next->prev = node->prev;
12}
13
Patrick Rudolph666c1722018-04-03 09:57:33 +020014void list_insert_after(struct list_node *node, struct list_node *after)
Patrick Rudolph67aca3e2018-04-12 11:44:43 +020015{
16 node->next = after->next;
17 node->prev = after;
18 after->next = node;
19 if (node->next)
20 node->next->prev = node;
21}
22
Patrick Rudolph666c1722018-04-03 09:57:33 +020023void list_insert_before(struct list_node *node, struct list_node *before)
Patrick Rudolph67aca3e2018-04-12 11:44:43 +020024{
25 node->prev = before->prev;
26 node->next = before;
27 before->prev = node;
28 if (node->prev)
29 node->prev->next = node;
30}
Raul E Rangel4c8c8442021-11-01 13:40:14 -060031
32void list_append(struct list_node *node, struct list_node *head)
33{
34 while (head->next)
35 head = head->next;
36
37 list_insert_after(node, head);
38}