[PATCH] pactree: Compress self-provided optional dependencies
Sebastian Jakubiak
jakseb.dev at gmail.com
Fri Jul 31 16:00:29 UTC 2020
Remove `provides X` from `X provides X: ...` lines describing optional
dependencies to make the output more compact.
Signed-off-by: Sebastian Jakubiak <jakseb.dev at gmail.com>
---
I noticed that most optional dependencies in the output of `pactree
--optional` have this unneeded repetition. With this patch the
following:
vim-runtime
├─bash provides sh: support for some tools and macros (optional)
├─python provides python: demoserver example tool (optional)
└─gawk provides gawk: mve tools upport (optional)
will change to:
vim-runtime
├─bash provides sh: support for some tools and macros (optional)
├─python: demoserver example tool (optional)
└─gawk: mve tools upport (optional)
src/pactree.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/pactree.c b/src/pactree.c
index e34ecc8..4bd4601 100644
--- a/src/pactree.c
+++ b/src/pactree.c
@@ -383,6 +383,14 @@ static int parse_options(int argc, char *argv[])
return 0;
}
+int pkg_provides_itself(const char *pkg, const char *depstring)
+{
+ size_t pkglen = strlen(pkg);
+ return (strncmp(pkg, depstring, pkglen) == 0 &&
+ (depstring[pkglen] == '\0' ||
+ strncmp(": ", depstring + pkglen, 2) == 0));
+}
+
/* pkg provides provision */
static void print_text(const char *pkg, const char *provision,
tdepth *depth, int last, int opt_dep)
@@ -419,12 +427,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' && !pkg_provides_itself(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.27.0
More information about the pacman-contrib
mailing list