[pacman-dev] [PATCH 1/2] pactree: fix --sync getopt value
The long --sync options has apparently never worked.
Signed-off-by: Andrew Gregory
Also removes the less helpful provides-specific branch tip.
Old: New:
|--pkg |--pkg
+--dep1 provides dep5 |--dep1 provides dep5
| |--dep2 | \--dep2
|--dep3 \--dep3
|--dep4 \--dep4
Signed-off-by: Andrew Gregory
On Mon, Oct 15, 2012 at 02:29:08PM -0400, Andrew Gregory wrote:
Also removes the less helpful provides-specific branch tip.
Old: New: |--pkg |--pkg +--dep1 provides dep5 |--dep1 provides dep5 | |--dep2 | \--dep2 |--dep3 \--dep3 |--dep4 \--dep4
Signed-off-by: Andrew Gregory
---
Hrmmm, I like this -- it's very similar to what util-linux does, with the exception that they use a backquote instead a backslash on the tail, e.g. New: |--pkg |--dep1 provides dep5 | `--dep2 `--dep3 `--dep4 And I think this looks a bit cleaner. I'd like to introduce the option of utf8 line drawing characters along with this -- I can pull this patch (and the previous) if you're cool with this change.
src/util/pactree.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/src/util/pactree.c b/src/util/pactree.c index ab5d90a..77be629 100644 --- a/src/util/pactree.c +++ b/src/util/pactree.c @@ -36,8 +36,8 @@ typedef struct tdepth { /* output */ struct graph_style { const char *provides; - const char *tip1; - const char *tip2; + const char *tip; + const char *last; const char *limb; int indent; }; @@ -45,7 +45,7 @@ struct graph_style { static struct graph_style graph_default = { " provides", "|--", - "+--", + "\\--", "|", 3 }; @@ -301,8 +301,10 @@ static void cleanup(void) }
/* pkg provides provision */ -static void print_text(const char *pkg, const char *provision, tdepth *depth) +static void print_text(const char *pkg, const char *provision, + tdepth *depth, int last) { + const char* tip = last ? style->last : style->tip; if(!pkg && !provision) { /* not much we can do */ return; @@ -323,14 +325,14 @@ static void print_text(const char *pkg, const char *provision, tdepth *depth)
/* print tip */ if(!pkg && provision) { - printf("%s%s%s%s [unresolvable]%s\n", style->tip1, color->leaf1, + printf("%s%s%s%s [unresolvable]%s\n", tip, color->leaf1, provision, color->branch1, color->off); } else if(provision && strcmp(pkg, provision) != 0) { - printf("%s%s%s%s%s %s%s%s\n", style->tip2, color->leaf1, pkg, + printf("%s%s%s%s%s %s%s%s\n", tip, color->leaf1, pkg, color->leaf2, style->provides, color->leaf1, provision, color->off); } else { - printf("%s%s%s%s\n", style->tip1, color->leaf1, pkg, color->off); + printf("%s%s%s%s\n", tip, color->leaf1, pkg, color->off); } }
@@ -348,12 +350,13 @@ static void print_graph(const char *parentname, const char *pkgname, const char }
/* parent depends on dep which is satisfied by pkg */ -static void print(const char *parentname, const char *pkgname, const char *depname, tdepth *depth) +static void print(const char *parentname, const char *pkgname, + const char *depname, tdepth *depth, int last) { if(graphviz) { print_graph(parentname, pkgname, depname); } else { - print_text(pkgname, depname, depth); + print_text(pkgname, depname, depth, last); } }
@@ -369,7 +372,7 @@ static void print_start(const char *pkgname, const char *provname) NULL, 0 }; - print_text(pkgname, provname, &d); + print_text(pkgname, provname, &d, 0); } }
@@ -412,6 +415,7 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, tdepth *depth, int r
for(i = deps; i; i = alpm_list_next(i)) { const char *pkgname = i->data; + int last = alpm_list_next(i) ? 0 : 1;
alpm_pkg_t *dep_pkg = alpm_find_dbs_satisfier(handle, dblist, pkgname);
@@ -419,10 +423,10 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, tdepth *depth, int r /* if we've already seen this package, don't print in "unique" output * and don't recurse */ if(!unique) { - print(alpm_pkg_get_name(pkg), alpm_pkg_get_name(dep_pkg), pkgname, depth); + print(alpm_pkg_get_name(pkg), alpm_pkg_get_name(dep_pkg), pkgname, depth, last); } } else { - print(alpm_pkg_get_name(pkg), alpm_pkg_get_name(dep_pkg), pkgname, depth); + print(alpm_pkg_get_name(pkg), alpm_pkg_get_name(dep_pkg), pkgname, depth, last); if(dep_pkg) { tdepth d = { depth, @@ -431,7 +435,7 @@ static void walk_deps(alpm_list_t *dblist, alpm_pkg_t *pkg, tdepth *depth, int r }; depth->next = &d; /* last dep, cut off the limb here */ - if(!alpm_list_next(i)){ + if(last){ if(depth->prev){ depth->prev->next = &d; d.prev = depth->prev; -- 1.7.12.2
Add a compile time check for langinfo.h so that we can possibly use
unicode line drawing characters if the current locale is supportive of
them. This can be explicitly disabled at runtime with the use of a new
switch: -a, --ascii.
Signed-off-by: Dave Reisner
On Mon, Oct 15, 2012 at 02:29:07PM -0400, Andrew Gregory wrote:
The long --sync options has apparently never worked.
Signed-off-by: Andrew Gregory
--- src/util/pactree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/pactree.c b/src/util/pactree.c index 4488645..ab5d90a 100644 --- a/src/util/pactree.c +++ b/src/util/pactree.c @@ -217,7 +217,7 @@ static int parse_options(int argc, char *argv[]) {"help", no_argument, 0, 'h'}, {"linear", no_argument, 0, 'l'}, {"reverse", no_argument, 0, 'r'}, - {"sync", no_argument, 0, 'S'}, + {"sync", no_argument, 0, 's'},
wat. Could you give an example of this breaking? Even if it is, I can't possibly understand how this is the correct fix. -s is strictly --search whereas --sync is a toplevel action and must therefore by capitalized. # pacman --sync -yy :: Synchronizing package databases... staging 40.9 KiB 444K/s 00:00 [---------------------] 100% allanbrokeit 876.0 B 0.00B/s 00:00 [---------------------] 100% allanbrokeit.sig 287.0 B 0.00B/s 00:00 [---------------------] 100% etc etc...
{"unique", no_argument, 0, 'u'},
{"config", required_argument, 0, OP_CONFIG}, -- 1.7.12.2
On Mon, Oct 15, 2012 at 02:40:18PM -0400, Dave Reisner wrote:
On Mon, Oct 15, 2012 at 02:29:07PM -0400, Andrew Gregory wrote:
The long --sync options has apparently never worked.
Signed-off-by: Andrew Gregory
--- src/util/pactree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/pactree.c b/src/util/pactree.c index 4488645..ab5d90a 100644 --- a/src/util/pactree.c +++ b/src/util/pactree.c @@ -217,7 +217,7 @@ static int parse_options(int argc, char *argv[]) {"help", no_argument, 0, 'h'}, {"linear", no_argument, 0, 'l'}, {"reverse", no_argument, 0, 'r'}, - {"sync", no_argument, 0, 'S'}, + {"sync", no_argument, 0, 's'},
wat. Could you give an example of this breaking? Even if it is, I can't possibly understand how this is the correct fix. -s is strictly --search whereas --sync is a toplevel action and must therefore by capitalized.
# pacman --sync -yy :: Synchronizing package databases... staging 40.9 KiB 444K/s 00:00 [---------------------] 100% allanbrokeit 876.0 B 0.00B/s 00:00 [---------------------] 100% allanbrokeit.sig 287.0 B 0.00B/s 00:00 [---------------------] 100% etc etc...
Yay ignore this, I can't read. Your patch is fine.
{"unique", no_argument, 0, 'u'},
{"config", required_argument, 0, OP_CONFIG}, -- 1.7.12.2
participants (3)
-
Andrew Gregory
-
Dave Reisner
-
Dave Reisner