2019-03-08 18:18:31 +01:00
|
|
|
/* SPDX-License-Identifier: ISC */
|
2019-03-09 00:23:06 +01:00
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
|
2019-07-17 12:45:23 +02:00
|
|
|
#include "pkg/pkglist.h"
|
2019-02-03 11:43:15 +01:00
|
|
|
|
|
|
|
struct pkg_dep_node *append_pkg(struct pkg_dep_list *list, const char *name)
|
|
|
|
{
|
|
|
|
struct pkg_dep_node *new = calloc(1, sizeof(*new));
|
|
|
|
|
|
|
|
if (new == NULL)
|
|
|
|
goto fail_oom;
|
|
|
|
|
|
|
|
new->name = strdup(name);
|
|
|
|
if (new->name == NULL)
|
|
|
|
goto fail_oom;
|
|
|
|
|
|
|
|
if (list->tail == NULL) {
|
|
|
|
list->head = list->tail = new;
|
|
|
|
} else {
|
|
|
|
list->tail->next = new;
|
|
|
|
list->tail = new;
|
|
|
|
}
|
|
|
|
return new;
|
|
|
|
fail_oom:
|
|
|
|
fputs("out of memory\n", stderr);
|
|
|
|
free(new);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
struct pkg_dep_node *find_pkg(struct pkg_dep_list *list, const char *name)
|
|
|
|
{
|
|
|
|
struct pkg_dep_node *it = list->head;
|
|
|
|
|
|
|
|
while (it != NULL && strcmp(it->name, name) != 0)
|
|
|
|
it = it->next;
|
|
|
|
|
|
|
|
return it;
|
|
|
|
}
|
|
|
|
|
|
|
|
void pkg_list_cleanup(struct pkg_dep_list *list)
|
|
|
|
{
|
|
|
|
struct pkg_dep_node *node;
|
|
|
|
|
|
|
|
while (list->head != NULL) {
|
|
|
|
node = list->head;
|
|
|
|
list->head = node->next;
|
|
|
|
|
|
|
|
free(node->deps);
|
|
|
|
free(node->name);
|
|
|
|
free(node);
|
|
|
|
}
|
|
|
|
|
|
|
|
list->tail = NULL;
|
|
|
|
}
|