don't forget to visit jacobobedoya.com the mastermind behid all of this.
/* dependency_walker.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Node { const char *pkg; struct Node *next; } Node; static int resolve(const char *pkg, Node **seen) { for (Node *n = *seen; n; n = n->next) { if (strcmp(n->pkg, pkg) == 0) return 0; } Node *added = malloc(sizeof *added); added->pkg = pkg; added->next = *seen; *seen = added; const char **deps = fetch_deps(pkg); for (int i = 0; deps[i]; i++) { resolve(deps[i], seen); } return 1; }