aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/out.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-10-18 19:02:10 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-10-18 19:02:10 +0000
commit8b811fac9808f46457e2e037bbd37d0e07ea798d (patch)
tree210486faa2258f9d2156f3eedb9b27834e695057 /out.c
parent168652c764da953d39f7a071f7840a5732020780 (diff)
downloadmandoc-8b811fac9808f46457e2e037bbd37d0e07ea798d.tar.gz
mandoc-8b811fac9808f46457e2e037bbd37d0e07ea798d.tar.zst
mandoc-8b811fac9808f46457e2e037bbd37d0e07ea798d.zip
Had out.h roff-scale converters accept default unit scale (because -mdoc and -man differ).
Diffstat (limited to 'out.c')
-rw-r--r--out.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/out.c b/out.c
index 41467209..73689b39 100644
--- a/out.c
+++ b/out.c
@@ -1,4 +1,4 @@
-/* $Id: out.c,v 1.4 2009/10/09 06:54:11 kristaps Exp $ */
+/* $Id: out.c,v 1.5 2009/10/18 19:02:10 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -25,31 +25,18 @@
/*
* Convert a `scaling unit' to a consistent form, or fail. Scaling
- * units are documented in groff.7, which stipulates the following:
- *
- * (1) A scaling unit is a signed/unsigned integer/float with or
- * without a unit.
- *
- * (2) The following units exist:
- * c Centimeter
- * i Inch
- * P Pica = 1/6 inch
- * p Point = 1/72 inch
- * m Em = the font size in points (width of letter m)
- * M 100th of an Em
- * n En = Em/2
- * u Basic unit for actual output device
- * v Vertical line space in basic units scaled point =
- * 1/sizescale of a point (defined in font DESC file)
- * f Scale by 65536.
+ * units are documented in groff.7, mdoc.7, man.7.
*/
int
-a2roffsu(const char *src, struct roffsu *dst)
+a2roffsu(const char *src, struct roffsu *dst, enum roffscale def)
{
char buf[BUFSIZ], hasd;
int i;
enum roffscale unit;
+ if ('\0' == *src)
+ return(0);
+
i = hasd = 0;
switch (*src) {
@@ -63,6 +50,9 @@ a2roffsu(const char *src, struct roffsu *dst)
break;
}
+ if ('\0' == *src)
+ return(0);
+
while (i < BUFSIZ) {
if ( ! isdigit((u_char)*src)) {
if ('.' != *src)
@@ -103,7 +93,10 @@ a2roffsu(const char *src, struct roffsu *dst)
unit = SCALE_EM;
break;
case ('\0'):
- /* FALLTHROUGH */
+ if (SCALE_MAX == def)
+ return(0);
+ unit = SCALE_BU;
+ break;
case ('u'):
unit = SCALE_BU;
break;