summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2017-01-12 17:29:35 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2017-01-12 17:29:35 +0000
commite3b8d2195bb92a1de1aafdce79b1336573d19af5 (patch)
treeec6144e5ad0583f695ed14af3613a481f9e51f29
parent1ac920a014c7b8ad7a7af841f6ade84b57af6208 (diff)
show meta data for -Ttree output
-rw-r--r--usr.bin/mandoc/mandoc.114
-rw-r--r--usr.bin/mandoc/tree.c32
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;