diff options
author | 2013-10-05 22:08:12 +0000 | |
---|---|---|
committer | 2013-10-05 22:08:12 +0000 | |
commit | a572afd89f35bf2a05cba26f422436714a0de4de (patch) | |
tree | d357d349c277f8b918065cab513078e2e229d0a6 /mdoc_validate.c | |
parent | a8f58a55c9e1fd8a3804c52ca3873c8291135319 (diff) | |
download | mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.tar.gz mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.tar.zst mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.zip |
Support setting arbitrary roff(7) number registers,
preserving read support for the ".nr nS" SYNOPSIS state register.
Inspired by NetBSD roff.c rev. 1.18 (Christos Zoulas, March 21, 2013),
but implemented differently. I don't want to have yet another different
implementation of a hash table in mandoc - it would be the second one
in roff.c alone and the fifth one in mandoc grand total.
Instead, i designed and implemented roff_setreg() and roff_getreg()
to be similar to roff_setstrn() and roff_getstrn().
Once we feel the need to optimize, we can introduce one common
hash table implementation for everything in mandoc.
Diffstat (limited to 'mdoc_validate.c')
-rw-r--r-- | mdoc_validate.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c index 8ffc3937..b4d60315 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1,7 +1,7 @@ -/* $Id: mdoc_validate.c,v 1.193 2013/09/16 00:25:07 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.194 2013/10/05 22:08:12 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2010, 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010, 2011, 2012, 2013 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 @@ -888,8 +888,6 @@ pre_sh(PRE_ARGS) if (MDOC_BLOCK != n->type) return(1); - - roff_regunset(mdoc->roff, REG_nS); return(check_parent(mdoc, n, MDOC_MAX, MDOC_ROOT)); } @@ -1905,10 +1903,13 @@ post_sh_head(POST_ARGS) /* The SYNOPSIS gets special attention in other areas. */ - if (SEC_SYNOPSIS == sec) + if (SEC_SYNOPSIS == sec) { + roff_setreg(mdoc->roff, "nS", 1); mdoc->flags |= MDOC_SYNOPSIS; - else + } else { + roff_setreg(mdoc->roff, "nS", 0); mdoc->flags &= ~MDOC_SYNOPSIS; + } /* Mark our last section. */ |