-/* $Id: term.c,v 1.174 2010/10/02 15:15:55 schwarze Exp $ */
+/* $Id: term.c,v 1.177 2011/01/30 16:05:37 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* an indentation, but can be, for tagged lists or columns, a
* small set of values.
*/
- assert (p->rmargin > p->offset);
+ assert (p->rmargin >= p->offset);
dv = p->rmargin - p->offset;
maxvis = (int)dv > p->overstep ? dv - (size_t)p->overstep : 0;
dv = p->maxrmargin - p->offset;
}
+static void
+numbered(struct termp *p, const char *word, size_t len)
+{
+ const char *rhs;
+
+ rhs = chars_num2char(word, len);
+ if (rhs)
+ encode(p, rhs, 1);
+}
+
+
static void
spec(struct termp *p, enum roffdeco d, const char *word, size_t len)
{
word += a2roffdeco(&deco, &seq, &ssz);
switch (deco) {
+ case (DECO_NUMBERED):
+ numbered(p, seq, ssz);
+ break;
case (DECO_RESERVED):
res(p, seq, ssz);
break;
if (rhs)
for (i = 0; i < rsz; i++)
sz += (*p->width)(p, *rhs++);
+ } else if (ASCII_NBRSP == *cp) {
+ sz += (*p->width)(p, ' ');
+ cp++;
+ } else if (ASCII_HYPH == *cp) {
+ sz += (*p->width)(p, '-');
+ cp++;
} else
sz += (*p->width)(p, *cp++);