summaryrefslogtreecommitdiffstats
path: root/term_ascii.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-03-30 19:47:48 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-03-30 19:47:48 +0000
commitb0b643c847c8a9530fc19fc081c52b9b6f5159dd (patch)
treeee93f2fc78dc0fddd4abbfdcd79f9df0714656ed /term_ascii.c
parent1f5b9d128ee296272c97a8e1a191d09c75b10fd1 (diff)
downloadmandoc-b0b643c847c8a9530fc19fc081c52b9b6f5159dd.tar.gz
Implement the roff(7) .ll (line length) request.
Found by naddy@ in the textproc/enchant(1) port. Of course, do not use this in new manuals.
Diffstat (limited to 'term_ascii.c')
-rw-r--r--term_ascii.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/term_ascii.c b/term_ascii.c
index 3fccc675..a9242348 100644
--- a/term_ascii.c
+++ b/term_ascii.c
@@ -1,6 +1,7 @@
/* $Id$ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2014 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
@@ -57,6 +58,7 @@ static void ascii_begin(struct termp *);
static void ascii_end(struct termp *);
static void ascii_endline(struct termp *);
static void ascii_letter(struct termp *, int);
+static void ascii_setwidth(struct termp *, size_t);
#ifdef USE_WCHAR
static void locale_advance(struct termp *, size_t);
@@ -75,7 +77,7 @@ ascii_init(enum termenc enc, char *outopts)
p = mandoc_calloc(1, sizeof(struct termp));
p->tabwidth = 5;
- p->defrmargin = 78;
+ p->defrmargin = p->lastrmargin = 78;
p->begin = ascii_begin;
p->end = ascii_end;
@@ -86,6 +88,7 @@ ascii_init(enum termenc enc, char *outopts)
p->advance = ascii_advance;
p->endline = ascii_endline;
p->letter = ascii_letter;
+ p->setwidth = ascii_setwidth;
p->width = ascii_width;
#ifdef USE_WCHAR
@@ -157,6 +160,17 @@ locale_alloc(char *outopts)
return(ascii_init(TERMENC_LOCALE, outopts));
}
+static void
+ascii_setwidth(struct termp *p, size_t width)
+{
+ size_t lastwidth;
+
+ lastwidth = p->defrmargin;
+ p->rmargin = p->maxrmargin = p->defrmargin =
+ width ? width : p->lastrmargin;
+ p->lastrmargin = lastwidth;
+}
+
/* ARGSUSED */
static size_t
ascii_width(const struct termp *p, int c)