summaryrefslogtreecommitdiffstatshomepage
path: root/term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-02-26 16:08:11 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-02-26 16:08:11 +0000
commit20e876dc7ef79ecbcf34414dbc1356004ada7c35 (patch)
tree63b03cc2db44baac66ce52e528cdf1457085ef9d /term.c
parent6bdbfd3d4d8125256b009166659cdbfa09434ada (diff)
downloadmandoc-20e876dc7ef79ecbcf34414dbc1356004ada7c35.tar.gz
mandoc-20e876dc7ef79ecbcf34414dbc1356004ada7c35.tar.zst
mandoc-20e876dc7ef79ecbcf34414dbc1356004ada7c35.zip
Support for macro widths (/usr/share/tmac/mdoc/doc-common).
Diffstat (limited to 'term.c')
-rw-r--r--term.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/term.c b/term.c
index 18951322..d3b7d07a 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.24 2009/02/26 14:56:27 kristaps Exp $ */
+/* $Id: term.c,v 1.25 2009/02/26 16:08:11 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -17,6 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
#include <assert.h>
+#include <ctype.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
@@ -276,9 +277,29 @@ const struct termact *termacts = __termacts;
static size_t
arg_width(const struct mdoc_arg *arg)
{
+ size_t len, i, v;
/* TODO */
assert(*arg->value);
+ if (0 == strcmp(*arg->value, "indent"))
+ return(INDENT);
+ if (0 == strcmp(*arg->value, "indent-two"))
+ return(INDENT * 2);
+
+ len = strlen(*arg->value);
+ assert(len > 0);
+
+ for (i = 0; i < len - 1; i++)
+ if ( ! isdigit((int)(*arg->value)[i]))
+ break;
+
+ if (i == len - 1) {
+ if ('n' == (*arg->value)[len - 1]) {
+ v = (size_t)atoi(*arg->value);
+ return(v);
+ }
+
+ }
return(strlen(*arg->value));
}
@@ -293,7 +314,6 @@ arg_offset(const struct mdoc_arg *arg)
return(INDENT);
if (0 == strcmp(*arg->value, "indent-two"))
return(INDENT * 2);
-
return(strlen(*arg->value));
}