correctly handle scaling units after .PD
authorschwarze <schwarze@openbsd.org>
Tue, 23 Dec 2014 01:57:11 +0000 (01:57 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 23 Dec 2014 01:57:11 +0000 (01:57 +0000)
regress/usr.bin/mandoc/man/PD/args.in
regress/usr.bin/mandoc/man/PD/args.out_ascii
usr.bin/mandoc/man_term.c

index 9fb166c..df344a1 100644 (file)
@@ -14,10 +14,15 @@ no argument at all
 .PD 2v
 .PP
 argument(2v)
-.\" also test (2cm)
-.\" .PD xxx
-.\" .PP
-.\" argument(xxx)
+.PD 2p
+.PP
+argument(2p)
+.PD 1c
+.PP
+argument(1c)
+.PD xxx
+.PP
+argument(xxx)
 .PD 0 zzz
 .PP
 excessive argument
index 802c6cb..e0bb2f1 100644 (file)
@@ -17,6 +17,13 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
 
        argument(2v)
+       argument(2p)
+
+
+       argument(1c)
+
+
+       argument(xxx)
        excessive argument
 
 
index b7ead70..a27a287 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: man_term.c,v 1.112 2014/12/04 02:05:16 schwarze Exp $ */
+/*     $OpenBSD: man_term.c,v 1.113 2014/12/23 01:57:11 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -286,14 +286,16 @@ pre_literal(DECL_ARGS)
 static int
 pre_PD(DECL_ARGS)
 {
+       struct roffsu    su;
 
        n = n->child;
-       if (0 == n) {
+       if (n == NULL) {
                mt->pardist = 1;
                return(0);
        }
        assert(MAN_TEXT == n->type);
-       mt->pardist = atoi(n->string);
+       if (a2roffsu(n->string, &su, SCALE_VS))
+               mt->pardist = term_vspan(p, &su);
        return(0);
 }