aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-11 00:39:58 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-11 00:39:58 +0000
commit5625aa32a7011e20289ada22bc5924810dc97ce0 (patch)
treeb4ebe9ad8a6222d508f317142ec6706cc0c1f992
parent0bb92cdf676a4f8a32b2066037b9f54b3f587f9e (diff)
downloadmandoc-5625aa32a7011e20289ada22bc5924810dc97ce0.tar.gz
mandoc-5625aa32a7011e20289ada22bc5924810dc97ce0.tar.zst
mandoc-5625aa32a7011e20289ada22bc5924810dc97ce0.zip
Expanded perfect htab to use 27 * 26 * 3 space.
Added Brq, Bro and Brc macros. Added lbrace and rbrace to special characters. Fixed spacing in braces.
-rw-r--r--action.c5
-rw-r--r--argv.c5
-rw-r--r--hash.c65
-rw-r--r--macro.c13
-rw-r--r--mdoc.c5
-rw-r--r--mdoc.h7
-rw-r--r--mdocterm.18
-rw-r--r--mdocterm.c6
-rw-r--r--term.c38
-rw-r--r--term.h6
-rw-r--r--validate.c5
11 files changed, 131 insertions, 32 deletions
diff --git a/action.c b/action.c
index b776d9e1..9fc1d2d0 100644
--- a/action.c
+++ b/action.c
@@ -1,4 +1,4 @@
-/* $Id: action.c,v 1.39 2009/03/09 14:19:59 kristaps Exp $ */
+/* $Id: action.c,v 1.40 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -174,6 +174,9 @@ const struct actions mdoc_actions[MDOC_MAX] = {
{ NULL }, /* Lp */
{ NULL }, /* Lk */
{ NULL }, /* Mt */
+ { NULL }, /* Brq */
+ { NULL }, /* Bro */
+ { NULL }, /* Brc */
};
diff --git a/argv.c b/argv.c
index 8c283029..e617e143 100644
--- a/argv.c
+++ b/argv.c
@@ -1,4 +1,4 @@
-/* $Id: argv.c,v 1.47 2009/03/10 21:27:39 kristaps Exp $ */
+/* $Id: argv.c,v 1.48 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -213,6 +213,9 @@ static int mdoc_argflags[MDOC_MAX] = {
ARGS_DELIM, /* Lp */
ARGS_DELIM | ARGS_QUOTED, /* Lk */
ARGS_DELIM | ARGS_QUOTED, /* Mt */
+ ARGS_DELIM, /* Brq */
+ 0, /* Bro */
+ ARGS_DELIM, /* Brc */
};
diff --git a/hash.c b/hash.c
index 2814755b..fe6ce6c7 100644
--- a/hash.c
+++ b/hash.c
@@ -1,4 +1,4 @@
-/* $Id: hash.c,v 1.9 2009/03/10 10:20:03 kristaps Exp $ */
+/* $Id: hash.c,v 1.10 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -45,7 +45,7 @@ mdoc_tokhash_alloc(void)
int i, major, minor, ind;
const void **htab;
- htab = calloc(27 * 26, sizeof(struct mdoc_macro *));
+ htab = calloc(27 * 26 * 3, sizeof(struct mdoc_macro *));
if (NULL == htab)
err(1, "calloc");
@@ -74,9 +74,19 @@ mdoc_tokhash_alloc(void)
assert(major >= 0 && major < 27);
assert(minor >= 0 && minor < 26);
- ind = (major * 27) + minor;
+ ind = (major * 27 * 3) + (minor * 3);
- assert(NULL == htab[ind]);
+ if (NULL == htab[ind]) {
+ htab[ind] = &mdoc_macros[i];
+ continue;
+ }
+
+ if (NULL == htab[++ind]) {
+ htab[ind] = &mdoc_macros[i];
+ continue;
+ }
+
+ assert(NULL == htab[++ind]);
htab[ind] = &mdoc_macros[i];
}
@@ -118,25 +128,48 @@ mdoc_tokhash_find(const void *arg, const char *tmp)
else
minor = tmp[1] - 97;
- ind = (major * 27) + minor;
- if (ind < 0 || ind >= (27 * 26))
+ ind = (major * 27 * 3) + (minor * 3);
+ if (ind < 0 || ind >= (27 * 26 * 3))
return(MDOC_MAX);
- if (NULL == htab[ind])
- return(MDOC_MAX);
+ if (htab[ind]) {
+ slot = htab[ind] - /* LINTED */
+ (void *)mdoc_macros;
+ assert(0 == (size_t)slot % sizeof(struct mdoc_macro));
+ slot /= sizeof(struct mdoc_macro);
+ if (mdoc_macronames[slot][0] == tmp[0] &&
+ mdoc_macronames[slot][1] == tmp[1] &&
+ (0 == tmp[2] ||
+ mdoc_macronames[slot][2] == tmp[2]))
+ return(slot);
+ ind++;
+ }
+
+ if (htab[ind]) {
+ slot = htab[ind] - /* LINTED */
+ (void *)mdoc_macros;
+ assert(0 == (size_t)slot % sizeof(struct mdoc_macro));
+ slot /= sizeof(struct mdoc_macro);
+ if (mdoc_macronames[slot][0] == tmp[0] &&
+ mdoc_macronames[slot][1] == tmp[1] &&
+ (0 == tmp[2] ||
+ mdoc_macronames[slot][2] == tmp[2]))
+ return(slot);
+ ind++;
+ }
+ if (NULL == htab[ind])
+ return(MDOC_MAX);
slot = htab[ind] - /* LINTED */
(void *)mdoc_macros;
assert(0 == (size_t)slot % sizeof(struct mdoc_macro));
slot /= sizeof(struct mdoc_macro);
+ if (mdoc_macronames[slot][0] == tmp[0] &&
+ mdoc_macronames[slot][1] == tmp[1] &&
+ (0 == tmp[2] ||
+ mdoc_macronames[slot][2] == tmp[2]))
+ return(slot);
- if (mdoc_macronames[slot][0] != tmp[0])
- return(MDOC_MAX);
- if (mdoc_macronames[slot][1] != tmp[1])
- return(MDOC_MAX);
- if (tmp[2] && mdoc_macronames[slot][2] != tmp[2])
- return(MDOC_MAX);
-
- return(slot);
+ return(MDOC_MAX);
}
diff --git a/macro.c b/macro.c
index becad97b..1c3200d2 100644
--- a/macro.c
+++ b/macro.c
@@ -1,4 +1,4 @@
-/* $Id: macro.c,v 1.65 2009/03/10 15:01:54 kristaps Exp $ */
+/* $Id: macro.c,v 1.66 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -184,6 +184,9 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ macro_text, 0 }, /* Lp */
{ macro_text, MDOC_PARSED }, /* Lk */
{ macro_text, MDOC_PARSED }, /* Mt */
+ { macro_scoped_line, MDOC_CALLABLE | MDOC_PARSED }, /* Brq */
+ { macro_constant_scoped, MDOC_CALLABLE | MDOC_PARSED | MDOC_EXPLICIT }, /* Bro */
+ { macro_scoped_close, MDOC_EXPLICIT | MDOC_CALLABLE | MDOC_PARSED }, /* Brc */
};
const struct mdoc_macro * const mdoc_macros = __mdoc_macros;
@@ -326,6 +329,8 @@ rewind_alt(int tok)
return(MDOC_Ao);
case (MDOC_Bc):
return(MDOC_Bo);
+ case (MDOC_Brc):
+ return(MDOC_Bro);
case (MDOC_Dc):
return(MDOC_Do);
case (MDOC_Ec):
@@ -375,6 +380,8 @@ rewind_dohalt(int tok, enum mdoc_type type, const struct mdoc_node *p)
/* FALLTHROUGH */
case (MDOC_Bq):
/* FALLTHROUGH */
+ case (MDOC_Brq):
+ /* FALLTHROUGH */
case (MDOC_D1):
/* FALLTHROUGH */
case (MDOC_Dl):
@@ -429,6 +436,8 @@ rewind_dohalt(int tok, enum mdoc_type type, const struct mdoc_node *p)
/* FALLTHROUGH */
case (MDOC_Bo):
/* FALLTHROUGH */
+ case (MDOC_Bro):
+ /* FALLTHROUGH */
case (MDOC_Do):
/* FALLTHROUGH */
case (MDOC_Eo):
@@ -455,6 +464,8 @@ rewind_dohalt(int tok, enum mdoc_type type, const struct mdoc_node *p)
/* FALLTHROUGH */
case (MDOC_Bc):
/* FALLTHROUGH */
+ case (MDOC_Brc):
+ /* FALLTHROUGH */
case (MDOC_Dc):
/* FALLTHROUGH */
case (MDOC_Ec):
diff --git a/mdoc.c b/mdoc.c
index b45f7802..89a0f691 100644
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc.c,v 1.60 2009/03/09 14:19:59 kristaps Exp $ */
+/* $Id: mdoc.c,v 1.61 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -72,7 +72,8 @@ const char *const __mdoc_macronames[MDOC_MAX] = {
"Fo", "Fc", "Oo", "Oc",
"Bk", "Ek", "Bt", "Hf",
"Fr", "Ud", "Lb", "Ap",
- "Lp", "Lk", "Mt"
+ "Lp", "Lk", "Mt", "Brq",
+ "Bro", "Brc"
};
const char *const __mdoc_argnames[MDOC_ARG_MAX] = {
diff --git a/mdoc.h b/mdoc.h
index 069d9e3a..73d6b284 100644
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/* $Id: mdoc.h,v 1.45 2009/03/09 14:19:59 kristaps Exp $ */
+/* $Id: mdoc.h,v 1.46 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -144,7 +144,10 @@
#define MDOC_Lp 108
#define MDOC_Lk 109
#define MDOC_Mt 110
-#define MDOC_MAX 111
+#define MDOC_Brq 111
+#define MDOC_Bro 112
+#define MDOC_Brc 113
+#define MDOC_MAX 114
/* What follows is a list of ALL possible macro arguments. */
diff --git a/mdocterm.1 b/mdocterm.1
index d0c82113..131a69ac 100644
--- a/mdocterm.1
+++ b/mdocterm.1
@@ -1,4 +1,4 @@
-.\" $Id: mdocterm.1,v 1.16 2009/03/09 13:04:01 kristaps Exp $
+.\" $Id: mdocterm.1,v 1.17 2009/03/11 00:39:58 kristaps Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
.\"
@@ -16,7 +16,7 @@
.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: March 9 2009 $
+.Dd $Mdocdate: March 11 2009 $
.Dt mdocterm 1
.Os
.\" SECTION
@@ -171,6 +171,10 @@ Enclosures:
.Bl -tag -width "OutputXXXX" -offset "XXXX" -compact
.It Em Output
.Em Input (Name)
+.It \(rC
+\\(rC (right brace)
+.It \(lC
+\\(lC (left brace)
.It \(ra
\\(ra (right angle)
.It \(la
diff --git a/mdocterm.c b/mdocterm.c
index de9de30a..c54441e3 100644
--- a/mdocterm.c
+++ b/mdocterm.c
@@ -1,4 +1,4 @@
-/* $Id: mdocterm.c,v 1.38 2009/03/10 11:16:43 kristaps Exp $ */
+/* $Id: mdocterm.c,v 1.39 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -74,6 +74,8 @@ static struct termenc termenc1[] = {
};
static struct termenc termenc2[] = {
+ { "rC", TERMSYM_RBRACE },
+ { "lC", TERMSYM_LBRACE },
{ "rB", TERMSYM_RBRACK },
{ "lB", TERMSYM_LBRACK },
{ "ra", TERMSYM_RANGLE },
@@ -163,6 +165,8 @@ static struct termsym termsym_ansi[] = {
{ "", 0 }, /* TERMSYM_BREAK */
{ "<", 1 }, /* TERMSYM_LANGLE */
{ ">", 1 }, /* TERMSYM_RANGLE */
+ { "{", 1 }, /* TERMSYM_LBRACE */
+ { "}", 1 }, /* TERMSYM_RBRACE */
};
static const char ansi_clear[] = { 27, '[', '0', 'm' };
diff --git a/term.c b/term.c
index 7f506cd4..181864c4 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.52 2009/03/10 11:16:43 kristaps Exp $ */
+/* $Id: term.c,v 1.53 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -118,6 +118,7 @@ DECL_PREPOST(termp__t);
DECL_PREPOST(termp_aq);
DECL_PREPOST(termp_bd);
DECL_PREPOST(termp_bq);
+DECL_PREPOST(termp_brq);
DECL_PREPOST(termp_d1);
DECL_PREPOST(termp_dq);
DECL_PREPOST(termp_fd);
@@ -287,6 +288,9 @@ const struct termact __termacts[MDOC_MAX] = {
{ termp_pp_pre, NULL }, /* Pp */
{ termp_lk_pre, NULL }, /* Lk */
{ termp_mt_pre, NULL }, /* Mt */
+ { termp_brq_pre, termp_brq_post }, /* Brq */
+ { termp_brq_pre, termp_brq_post }, /* Bro */
+ { NULL, NULL }, /* Brc */
};
const struct termact *termacts = __termacts;
@@ -1524,12 +1528,37 @@ termp_at_pre(DECL_ARGS)
/* ARGSUSED */
static int
+termp_brq_pre(DECL_ARGS)
+{
+
+ if (MDOC_BODY != node->type)
+ return(1);
+ word(p, "\\(lC");
+ p->flags |= TERMP_NOSPACE;
+ return(1);
+}
+
+
+/* ARGSUSED */
+static void
+termp_brq_post(DECL_ARGS)
+{
+
+ if (MDOC_BODY != node->type)
+ return;
+ p->flags |= TERMP_NOSPACE;
+ word(p, "\\(rC");
+}
+
+
+/* ARGSUSED */
+static int
termp_bq_pre(DECL_ARGS)
{
if (MDOC_BODY != node->type)
return(1);
- word(p, "[");
+ word(p, "\\(lB");
p->flags |= TERMP_NOSPACE;
return(1);
}
@@ -1542,7 +1571,8 @@ termp_bq_post(DECL_ARGS)
if (MDOC_BODY != node->type)
return;
- word(p, "]");
+ p->flags |= TERMP_NOSPACE;
+ word(p, "\\(rB");
}
@@ -1604,7 +1634,9 @@ termp_fo_post(DECL_ARGS)
if (MDOC_BODY != node->type)
return;
+ p->flags |= TERMP_NOSPACE;
word(p, ")");
+ p->flags |= TERMP_NOSPACE;
word(p, ";");
newln(p);
}
diff --git a/term.h b/term.h
index 29cd9ca7..91202195 100644
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/* $Id: term.h,v 1.19 2009/03/04 14:41:40 kristaps Exp $ */
+/* $Id: term.h,v 1.20 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -64,7 +64,9 @@ enum tsym {
TERMSYM_PERIOD = 35,
TERMSYM_BREAK = 36,
TERMSYM_LANGLE = 37,
- TERMSYM_RANGLE = 38
+ TERMSYM_RANGLE = 38,
+ TERMSYM_LBRACE = 39,
+ TERMSYM_RBRACE = 40
};
diff --git a/validate.c b/validate.c
index 9e36cb0f..1eed7f29 100644
--- a/validate.c
+++ b/validate.c
@@ -1,4 +1,4 @@
-/* $Id: validate.c,v 1.78 2009/03/09 14:19:59 kristaps Exp $ */
+/* $Id: validate.c,v 1.79 2009/03/11 00:39:58 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -307,6 +307,9 @@ const struct valids mdoc_valids[MDOC_MAX] = {
{ NULL, posts_pp }, /* Pp */
{ NULL, posts_lk }, /* Lk */
{ NULL, posts_mt }, /* Mt */
+ { NULL, posts_wline }, /* Brq */
+ { NULL, NULL }, /* Bro */
+ { NULL, NULL }, /* Brc */
};