aboutsummaryrefslogtreecommitdiffstatshomepage
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
commitb1938d01834105572311aa9b06d667939309bee7 (patch)
tree9517f74166bc2092376ceb274bb4e8fdd03eb66c /term_ascii.c
parent08b72b8f1a54d84a06924f40ca973826190c215b (diff)
downloadmandoc-b1938d01834105572311aa9b06d667939309bee7.tar.gz
mandoc-b1938d01834105572311aa9b06d667939309bee7.tar.zst
mandoc-b1938d01834105572311aa9b06d667939309bee7.zip
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.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/term_ascii.c b/term_ascii.c
index d6531167..09f052c3 100644
--- a/term_ascii.c
+++ b/term_ascii.c
@@ -1,6 +1,7 @@
-/* $Id: term_ascii.c,v 1.22 2014/03/23 11:25:26 schwarze Exp $ */
+/* $Id: term_ascii.c,v 1.23 2014/03/30 19:47:48 schwarze Exp $ */
/*
* 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)