/ src / commonlib / list.c
list.c
 1  /* Taken from depthcharge: src/base/list.c */
 2  /* SPDX-License-Identifier: GPL-2.0-or-later */
 3  
 4  #include <commonlib/list.h>
 5  
 6  void list_remove(struct list_node *node)
 7  {
 8  	if (node->prev)
 9  		node->prev->next = node->next;
10  	if (node->next)
11  		node->next->prev = node->prev;
12  }
13  
14  void list_insert_after(struct list_node *node, struct list_node *after)
15  {
16  	node->next = after->next;
17  	node->prev = after;
18  	after->next = node;
19  	if (node->next)
20  		node->next->prev = node;
21  }
22  
23  void list_insert_before(struct list_node *node, struct list_node *before)
24  {
25  	node->prev = before->prev;
26  	node->next = before;
27  	before->prev = node;
28  	if (node->prev)
29  		node->prev->next = node;
30  }
31  
32  void 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  }