=================================================================== RCS file: /cvs/mandoc/roff.c,v retrieving revision 1.253 retrieving revision 1.254 diff -u -p -r1.253 -r1.254 --- mandoc/roff.c 2015/01/22 22:51:43 1.253 +++ mandoc/roff.c 2015/01/23 00:42:00 1.254 @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.253 2015/01/22 22:51:43 schwarze Exp $ */ +/* $Id: roff.c,v 1.254 2015/01/23 00:42:00 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze @@ -1641,8 +1641,46 @@ roff_getnum(const char *v, int *pos, int *res) if (n) *res = -*res; - *pos = p; - return 1; + /* Each number may be followed by one optional scaling unit. */ + + switch (v[p]) { + case 'f': + *res *= 65536; + break; + case 'i': + *res *= 240; + break; + case 'c': + *res *= 240; + *res /= 2.54; + break; + case 'v': + /* FALLTROUGH */ + case 'P': + *res *= 40; + break; + case 'm': + /* FALLTROUGH */ + case 'n': + *res *= 24; + break; + case 'p': + *res *= 10; + *res /= 3; + break; + case 'u': + break; + case 'M': + *res *= 6; + *res /= 25; + break; + default: + p--; + break; + } + + *pos = p + 1; + return(1); } /*