aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/man_validate.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-07-08 09:34:06 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-07-08 09:34:06 +0000
commit30665daea80b2663affb76ab8d3025a97bf3a516 (patch)
tree7d15198dfbc0cf5ab13eb9bcfb71b90d290e91b9 /man_validate.c
parent0731e739450b07bc6fa8a6f731af719b832df6f6 (diff)
downloadmandoc-30665daea80b2663affb76ab8d3025a97bf3a516.tar.gz
mandoc-30665daea80b2663affb76ab8d3025a97bf3a516.tar.zst
mandoc-30665daea80b2663affb76ab8d3025a97bf3a516.zip
Make sure that `br' and `sp' don't emit space before the initial `SH' in
-man. This actually seems to be what groff does. Sort-of. Anyway, it's required to get perlpod pages rendered nicely, so until perlpod stops producing shit, do it. Ok schwarze@.
Diffstat (limited to 'man_validate.c')
-rw-r--r--man_validate.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/man_validate.c b/man_validate.c
index e0c882d4..63d80129 100644
--- a/man_validate.c
+++ b/man_validate.c
@@ -1,4 +1,4 @@
-/* $Id: man_validate.c,v 1.69 2011/04/13 09:57:08 kristaps Exp $ */
+/* $Id: man_validate.c,v 1.70 2011/07/08 09:34:06 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -57,27 +57,28 @@ static int check_sec(CHKARGS);
static void check_text(CHKARGS);
static int post_AT(CHKARGS);
+static int post_vs(CHKARGS);
static int post_fi(CHKARGS);
static int post_nf(CHKARGS);
static int post_TH(CHKARGS);
static int post_UC(CHKARGS);
static v_check posts_at[] = { post_AT, NULL };
+static v_check posts_br[] = { post_vs, check_eq0, NULL };
static v_check posts_eq0[] = { check_eq0, NULL };
static v_check posts_fi[] = { check_eq0, post_fi, NULL };
-static v_check posts_le1[] = { check_le1, NULL };
static v_check posts_ft[] = { check_ft, NULL };
static v_check posts_nf[] = { check_eq0, post_nf, NULL };
static v_check posts_par[] = { check_par, NULL };
static v_check posts_part[] = { check_part, NULL };
static v_check posts_sec[] = { check_sec, NULL };
+static v_check posts_sp[] = { post_vs, check_le1, NULL };
static v_check posts_th[] = { check_ge2, check_le5, post_TH, NULL };
static v_check posts_uc[] = { post_UC, NULL };
static v_check pres_bline[] = { check_bline, NULL };
-
static const struct man_valid man_valids[MAN_MAX] = {
- { NULL, posts_eq0 }, /* br */
+ { NULL, posts_br }, /* br */
{ pres_bline, posts_th }, /* TH */
{ pres_bline, posts_sec }, /* SH */
{ pres_bline, posts_sec }, /* SS */
@@ -99,7 +100,7 @@ static const struct man_valid man_valids[MAN_MAX] = {
{ NULL, NULL }, /* IR */
{ NULL, NULL }, /* RI */
{ NULL, posts_eq0 }, /* na */ /* FIXME: should warn only. */
- { NULL, posts_le1 }, /* sp */ /* FIXME: should warn only. */
+ { NULL, posts_sp }, /* sp */ /* FIXME: should warn only. */
{ pres_bline, posts_nf }, /* nf */
{ pres_bline, posts_fi }, /* fi */
{ NULL, NULL }, /* RE */
@@ -558,3 +559,17 @@ post_AT(CHKARGS)
m->meta.source = mandoc_strdup(p);
return(1);
}
+
+static int
+post_vs(CHKARGS)
+{
+
+ /*
+ * Don't warn about this because it occurs in pod2man and would
+ * cause considerable (unfixable) warnage.
+ */
+ if (NULL == n->prev && MAN_ROOT == n->parent->type)
+ man_node_delete(m, n);
+
+ return(1);
+}