On Wed Sep 2, 2020 at 1:41 PM EDT, Sebastian Jakubiak wrote:
Pactree takes care not to print both a dependency and the package to which it resolves if they are equal. Extend (fix?) this to cover versioned dependencies and optional dependencies containing descriptions, so that e.g. `gnupg provides gnupg>=2` and `clang provides clang: for qdoc` will be made more compact.
Implementation suggested by Eli Schwartz.
Signed-off-by: Sebastian Jakubiak <jakseb.dev@gmail.com> ---
Note that, in addition to the completely changed commit message and implementation, this version produces compact output for more cases than v1. To get v1's behavior, the condition should be changed to:
result = dep->mod != ALPM_DEP_MOD_ANY || strcmp...
src/pactree.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/pactree.c b/src/pactree.c index e34ecc84..ad3dd737 100644 --- a/src/pactree.c +++ b/src/pactree.c @@ -383,6 +383,16 @@ static int parse_options(int argc, char *argv[]) return 0; }
+static int should_show_satisfier(const char *pkg, const char *depstring) +{ + int result; + alpm_depend_t *dep = alpm_dep_from_string(depstring); + if(!dep) return 1; + result = strcmp(pkg, dep->name) != 0; + free(dep); + return result; +} + /* pkg provides provision */ static void print_text(const char *pkg, const char *provision, tdepth *depth, int last, int opt_dep) @@ -419,12 +429,12 @@ static void print_text(const char *pkg, const char *provision, if(!pkg && provision) { printf("%s%s%s%s [unresolvable]%s%s\n", tip, color->leaf1, provision, color->branch1, opt_str, color->off); - } else if(provision && strcmp(pkg, provision) != 0 && *(style->provides) != '\0') { + } else if(provision && *(style->provides) != '\0' && should_show_satisfier(pkg, provision)) { printf("%s%s%s%s%s %s%s%s%s\n", tip, color->leaf1, pkg, color->leaf2, style->provides, color->leaf1, provision, opt_str, color->off); } else { - printf("%s%s%s%s%s\n", tip, color->leaf1, pkg, opt_str, color->off); + printf("%s%s%s%s%s\n", tip, color->leaf1, provision ? provision : pkg, opt_str, color->off); } }
-- 2.28.0
Merged, thanks! -- Best, Daniel <https://danielcapella.com>