aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_validate.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-10-05 22:08:12 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-10-05 22:08:12 +0000
commita572afd89f35bf2a05cba26f422436714a0de4de (patch)
treed357d349c277f8b918065cab513078e2e229d0a6 /mdoc_validate.c
parenta8f58a55c9e1fd8a3804c52ca3873c8291135319 (diff)
downloadmandoc-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.c13
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. */