pactree: style last branch node differently
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 <andrew.gregory.8@gmail.com> > --- 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 ", style->tip1, color->leaf1, > + printf("%s%s%s%s [unresolvable]%s ", tip, color->leaf1, > provision, color->branch1, color->off); > } else if(provision && strcmp(pkg, provision) != 0) { > - printf("%s%s%s%s%s %s%s%s ", style->tip2, color->leaf1, pkg, > + printf("%s%s%s%s%s %s%s%s ", tip, color->leaf1, pkg, > color->leaf2, style->provides, color->leaf1, provision, > color->off); > } else { > - printf("%s%s%s%s ", style->tip1, color->leaf1, pkg, color->off); > + printf("%s%s%s%s ", 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 > > |
| All times are GMT. The time now is 09:14 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.