diff --git a/src/pactree.c b/src/pactree.c index 9f074fe..1775587 100644 --- a/src/pactree.c +++ b/src/pactree.c @@ -354,7 +354,7 @@ static int parse_options(int argc, char *argv[]) } } - if(!argv[optind] || argv[optind + 1]) { + if(!argv[optind]) { usage(); return 1; } @@ -430,12 +430,18 @@ static void print(const char *parentname, const char *pkgname, } } -static void print_start(const char *pkgname, const char *provname) +static void print_start(void) { if(graphviz) { printf("digraph G { START [color=red, style=filled];\n" - "node [style=filled, color=green];\n" - " \"START\" -> \"%s\";\n", pkgname); + "node [style=filled, color=green];\n"); + } +} + +static void print_target(const char *pkgname, const char *provname) +{ + if(graphviz) { + printf(" \"START\" -> \"%s\";\n", pkgname); } else { tdepth d = { NULL, @@ -526,7 +532,7 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, tdepth *depth, int r int main(int argc, char *argv[]) { - int freelist = 0, ret; + int freelist = 0, ret, target_ind; alpm_errno_t err; const char *target_name; alpm_pkg_t *pkg; @@ -560,23 +566,30 @@ int main(int argc, char *argv[]) freelist = 1; } - /* we only care about the first non option arg for walking */ - target_name = argv[optind]; - - pkg = alpm_find_dbs_satisfier(handle, dblist, target_name); - if(!pkg) { - fprintf(stderr, "error: package '%s' not found\n", target_name); - cleanup(1); - } + for(target_ind = optind; argv[target_ind]; ++target_ind) { + target_name = argv[target_ind]; + pkg = alpm_find_dbs_satisfier(handle, dblist, target_name); + if(!pkg) { + fprintf(stderr, "error: package '%s' not found\n", target_name); + cleanup(1); + } + } + print_start(); + - print_start(alpm_pkg_get_name(pkg), target_name); - - tdepth d = { - NULL, - NULL, - 1 - }; - walk_deps(dblist, pkg, &d, reverse); + for(target_ind = optind; argv[target_ind]; ++target_ind) { + target_name = argv[target_ind]; + pkg = alpm_find_dbs_satisfier(handle, dblist, target_name); + + print_target(alpm_pkg_get_name(pkg), target_name); + + tdepth d = { + NULL, + NULL, + 1 + }; + walk_deps(dblist, pkg, &d, reverse); + } print_end();