- if (nn->next) {
- if (MAN_TEXT != nn->next->type)
- errx(1, "expected text line argument");
- offs = (size_t)atoi(nn->next->string);
- } else
- offs = strlen(nn->string);
+ p->flags |= TERMP_NOBREAK;
+
+ offs = sv;
+
+ /*
+ * If the last token is number-looking (3m, 3n, 3) then
+ * interpret it as the width specifier, else we stick with the
+ * prior saved offset. XXX - obviously not documented.
+ */
+ for (nn = n->child; nn; nn = nn->next) {
+ if (NULL == nn->next) {
+ ival = arg_width(nn);
+ if (ival >= 0) {
+ offs = (size_t)ival;
+ break;
+ }
+ }
+ print_node(p, fl, nn, m);
+ }
+
+ p->rmargin = p->offset + offs;
+
+ term_flushln(p);
+
+ p->offset = offs;
+ p->rmargin = p->maxrmargin;
+
+ p->flags |= TERMP_NOLPAD | TERMP_NOSPACE;