diff --git a/main.c b/main.c index b7ca7d5..c753a5a 100644 --- a/main.c +++ b/main.c @@ -95,7 +95,10 @@ pkg_queue_walk(pkg_queue_t *head) foreach_list_entry(head, pkgq) { - world.requires = parse_deplist(&world, pkgq->package); + pkg_dependency_t *pkgdep; + + pkgdep = parse_deplist(&world, pkgq->package); + world.requires = pkg_dependency_append(world.requires, pkgdep); } if (want_modversion) diff --git a/parse.c b/parse.c index c3dd33e..57f7605 100644 --- a/parse.c +++ b/parse.c @@ -145,6 +145,27 @@ pkg_dependency_add(pkg_dependency_t *head, const char *package, const char *vers #define MODULE_SEPARATOR(c) ((c) == ',' || isspace ((c))) #define OPERATOR_CHAR(c) ((c) == '<' || (c) == '>' || (c) == '!' || (c) == '=') +pkg_dependency_t * +pkg_dependency_append(pkg_dependency_t *head, pkg_dependency_t *tail) +{ + pkg_dependency_t *node; + + if (head == NULL) + return tail; + + /* skip to end of list */ + foreach_list_entry(head, node) + { + if (node->next == NULL) + break; + } + + node->next = tail; + tail->prev = node; + + return head; +} + pkg_dependency_t * parse_deplist(pkg_t *pkg, const char *depends) { diff --git a/pkg.h b/pkg.h index a9a7089..ed31042 100644 --- a/pkg.h +++ b/pkg.h @@ -92,5 +92,6 @@ void pkg_traverse(pkg_t *root, void (*pkg_traverse_func)(pkg_t *package, void *d pkg_t *parse_file(const char *path); char *tuple_find(pkg_tuple_t *head, const char *key); pkg_dependency_t *parse_deplist(pkg_t *pkg, const char *depends); +pkg_dependency_t *pkg_dependency_append(pkg_dependency_t *head, pkg_dependency_t *tail); #endif