Branch data Line data Source code
1 : : /*
2 : : * libdpkg - Debian packaging suite library routines
3 : : * pkg-list.c - primitives for pkg linked list handling
4 : : *
5 : : * Copyright © 2009 Guillem Jover <guillem@debian.org>
6 : : *
7 : : * This is free software; you can redistribute it and/or modify
8 : : * it under the terms of the GNU General Public License as published by
9 : : * the Free Software Foundation; either version 2 of the License, or
10 : : * (at your option) any later version.
11 : : *
12 : : * This is distributed in the hope that it will be useful,
13 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : : * GNU General Public License for more details.
16 : : *
17 : : * You should have received a copy of the GNU General Public License
18 : : * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 : : */
20 : :
21 : : #include <config.h>
22 : : #include <compat.h>
23 : :
24 : : #include <stdlib.h>
25 : :
26 : : #include <dpkg/dpkg.h>
27 : : #include <dpkg/dpkg-db.h>
28 : : #include <dpkg/pkg-list.h>
29 : :
30 : : /**
31 : : * Create a new package list node.
32 : : *
33 : : * @param pkg The pkginfo to assign to the node.
34 : : * @param next The next package list node.
35 : : *
36 : : * @return The new package list node.
37 : : */
38 : : struct pkg_list *
39 : 10 : pkg_list_new(struct pkginfo *pkg, struct pkg_list *next)
40 : : {
41 : : struct pkg_list *node;
42 : :
43 : 10 : node = m_malloc(sizeof(*node));
44 : 10 : node->pkg = pkg;
45 : 10 : node->next = next;
46 : :
47 : 10 : return node;
48 : : }
49 : :
50 : : /**
51 : : * Free all nodes of a package list.
52 : : *
53 : : * @param head The head of the list to free.
54 : : */
55 : : void
56 : 3 : pkg_list_free(struct pkg_list *head)
57 : : {
58 [ + + ]: 10 : while (head) {
59 : : struct pkg_list *node;
60 : :
61 : 7 : node = head;
62 : 7 : head = head->next;
63 : :
64 : 7 : free(node);
65 : : }
66 : 3 : }
67 : :
68 : : /**
69 : : * Prepend a package list node to a package list.
70 : : *
71 : : * @param head The head of the list to prepend to.
72 : : * @param pkg The pkginfo to prepend to the list.
73 : : */
74 : : void
75 : 4 : pkg_list_prepend(struct pkg_list **head, struct pkginfo *pkg)
76 : : {
77 : 4 : *head = pkg_list_new(pkg, *head);
78 : 4 : }
|