diff options
Diffstat (limited to 'usr.bin/mandoc')
-rw-r--r-- | usr.bin/mandoc/mandoc.1 | 14 | ||||
-rw-r--r-- | usr.bin/mandoc/tree.c | 32 |
2 files changed, 39 insertions, 7 deletions
diff --git a/usr.bin/mandoc/mandoc.1 b/usr.bin/mandoc/mandoc.1 index 3bb5ffd178f..89e7b7f8fa2 100644 --- a/usr.bin/mandoc/mandoc.1 +++ b/usr.bin/mandoc/mandoc.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: mandoc.1,v 1.93 2017/01/10 12:54:27 schwarze Exp $ +.\" $OpenBSD: mandoc.1,v 1.94 2017/01/12 17:29:34 schwarze Exp $ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> .\" Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: January 10 2017 $ +.Dd $Mdocdate: January 12 2017 $ .Dt MANDOC 1 .Os .Sh NAME @@ -498,7 +498,15 @@ Use to show a human readable representation of the syntax tree. It is useful for debugging the source code of manual pages. The exact format is subject to change, so don't write parsers for it. -Each output line shows one syntax tree node. +.Pp +The first paragraph shows meta data found in the +.Xr mdoc 7 +prologue, on the +.Xr man 7 +.Ic \&TH +line, or the fallbacks used. +.Pp +In the tree dump, each output line shows one syntax tree node. Child nodes are indented with respect to their parent node. The columns are: .Pp diff --git a/usr.bin/mandoc/tree.c b/usr.bin/mandoc/tree.c index e32dbe075b2..c8d1b6eda55 100644 --- a/usr.bin/mandoc/tree.c +++ b/usr.bin/mandoc/tree.c @@ -1,7 +1,7 @@ -/* $OpenBSD: tree.c,v 1.38 2017/01/10 13:46:53 schwarze Exp $ */ +/* $OpenBSD: tree.c,v 1.39 2017/01/12 17:29:34 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -31,6 +31,7 @@ static void print_box(const struct eqn_box *, int); static void print_man(const struct roff_node *, int); +static void print_meta(const struct roff_meta *); static void print_mdoc(const struct roff_node *, int); static void print_span(const struct tbl_span *, int); @@ -38,18 +39,41 @@ static void print_span(const struct tbl_span *, int); void tree_mdoc(void *arg, const struct roff_man *mdoc) { - + print_meta(&mdoc->meta); + putchar('\n'); print_mdoc(mdoc->first->child, 0); } void tree_man(void *arg, const struct roff_man *man) { - + print_meta(&man->meta); + if (man->meta.hasbody == 0) + puts("body = empty"); + putchar('\n'); print_man(man->first->child, 0); } static void +print_meta(const struct roff_meta *meta) +{ + if (meta->title != NULL) + printf("title = \"%s\"\n", meta->title); + if (meta->name != NULL) + printf("name = \"%s\"\n", meta->name); + if (meta->msec != NULL) + printf("sec = \"%s\"\n", meta->msec); + if (meta->vol != NULL) + printf("vol = \"%s\"\n", meta->vol); + if (meta->arch != NULL) + printf("arch = \"%s\"\n", meta->arch); + if (meta->os != NULL) + printf("os = \"%s\"\n", meta->os); + if (meta->date != NULL) + printf("date = \"%s\"\n", meta->date); +} + +static void print_mdoc(const struct roff_node *n, int indent) { const char *p, *t; |