From 8b811fac9808f46457e2e037bbd37d0e07ea798d Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sun, 18 Oct 2009 19:02:10 +0000 Subject: Had out.h roff-scale converters accept default unit scale (because -mdoc and -man differ). --- out.c | 33 +++++++++++++-------------------- out.h | 5 +++-- 2 files changed, 16 insertions(+), 22 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 * @@ -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; diff --git a/out.h b/out.h index 6737d70e..5f47fb7b 100644 --- a/out.h +++ b/out.h @@ -1,4 +1,4 @@ -/* $Id: out.h,v 1.4 2009/10/09 06:54:11 kristaps Exp $ */ +/* $Id: out.h,v 1.5 2009/10/18 19:02:11 kristaps Exp $ */ /* * Copyright (c) 2009 Kristaps Dzonsons * @@ -50,7 +50,8 @@ struct roffsu { (p)->scale = (v); \ (p)->pt = 0; } while (/*CONSTCOND*/0) -int a2roffsu(const char *, struct roffsu *); +int a2roffsu(const char *, + struct roffsu *, enum roffscale); __END_DECLS -- cgit v1.2.3