aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--eqn.c19
-rw-r--r--libroff.h4
-rw-r--r--mandoc.14
-rw-r--r--roff.c31
4 files changed, 17 insertions, 41 deletions
diff --git a/eqn.c b/eqn.c
index e36df60a..31e674d0 100644
--- a/eqn.c
+++ b/eqn.c
@@ -1,4 +1,4 @@
-/* $Id: eqn.c,v 1.54 2014/10/16 01:11:20 schwarze Exp $ */
+/* $Id: eqn.c,v 1.55 2014/10/25 14:35:37 schwarze Exp $ */
/*
* Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -36,8 +36,6 @@
#define EQN_NEST_MAX 128 /* maximum nesting of defines */
#define STRNEQ(p1, sz1, p2, sz2) \
((sz1) == (sz2) && 0 == strncmp((p1), (p2), (sz1)))
-#define EQNSTREQ(x, p, sz) \
- STRNEQ((x)->name, (x)->sz, (p), (sz))
enum eqn_tok {
EQN_TOK_DYAD = 0,
@@ -315,24 +313,12 @@ eqn_read(struct eqn_node **epp, int ln,
}
struct eqn_node *
-eqn_alloc(const char *name, int pos, int line, struct mparse *parse)
+eqn_alloc(int pos, int line, struct mparse *parse)
{
struct eqn_node *p;
- size_t sz;
- const char *end;
p = mandoc_calloc(1, sizeof(struct eqn_node));
- if (name && '\0' != *name) {
- sz = strlen(name);
- assert(sz);
- do {
- sz--;
- end = name + (int)sz;
- } while (' ' == *end || '\t' == *end);
- p->eqn.name = mandoc_strndup(name, sz + 1);
- }
-
p->parse = parse;
p->eqn.ln = line;
p->eqn.pos = pos;
@@ -1108,7 +1094,6 @@ eqn_free(struct eqn_node *p)
free(p->defs[i].val);
}
- free(p->eqn.name);
free(p->data);
free(p->defs);
free(p);
diff --git a/libroff.h b/libroff.h
index e6d3edb7..bd9bcd22 100644
--- a/libroff.h
+++ b/libroff.h
@@ -1,4 +1,4 @@
-/* $Id: libroff.h,v 1.30 2014/10/16 01:11:20 schwarze Exp $ */
+/* $Id: libroff.h,v 1.31 2014/10/25 14:35:37 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -77,7 +77,7 @@ int tbl_data(struct tbl_node *, int, const char *);
int tbl_cdata(struct tbl_node *, int, const char *);
const struct tbl_span *tbl_span(struct tbl_node *);
void tbl_end(struct tbl_node **);
-struct eqn_node *eqn_alloc(const char *, int, int, struct mparse *);
+struct eqn_node *eqn_alloc(int, int, struct mparse *);
enum rofferr eqn_end(struct eqn_node **);
void eqn_free(struct eqn_node *);
enum rofferr eqn_read(struct eqn_node **, int,
diff --git a/mandoc.1 b/mandoc.1
index f110f627..ba935671 100644
--- a/mandoc.1
+++ b/mandoc.1
@@ -1,4 +1,4 @@
-.\" $Id: mandoc.1,v 1.119 2014/10/25 01:03:52 schwarze Exp $
+.\" $Id: mandoc.1,v 1.120 2014/10/25 14:35:37 schwarze Exp $
.\"
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
.\" Copyright (c) 2012, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -1465,6 +1465,8 @@ or
.Ic \&PP
macro, an
.Xr eqn 7
+.Ic \&EQ
+or
.Ic \&EN
macro, or a
.Xr roff 7
diff --git a/roff.c b/roff.c
index 7bd7b484..86dc402a 100644
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.234 2014/10/20 19:04:45 kristaps Exp $ */
+/* $Id: roff.c,v 1.235 2014/10/25 14:35:37 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -207,8 +207,6 @@ static const char *roff_getstrn(const struct roff *,
static enum rofferr roff_it(ROFF_ARGS);
static enum rofferr roff_line_ignore(ROFF_ARGS);
static enum rofferr roff_nr(ROFF_ARGS);
-static void roff_openeqn(struct roff *, const char *,
- int, int, const char *);
static enum rofft roff_parse(struct roff *, char *, int *,
int, int);
static enum rofferr roff_parsetext(char **, size_t *, int, int *);
@@ -1469,7 +1467,7 @@ roff_getop(const char *v, int *pos, char *res)
* or a single signed integer number.
*/
static int
-roff_evalpar(struct roff *r, int ln,
+roff_evalpar(struct roff *r, int ln,
const char *v, int *pos, int *res)
{
@@ -1499,7 +1497,7 @@ roff_evalpar(struct roff *r, int ln,
* Proceed left to right, there is no concept of precedence.
*/
static int
-roff_evalnum(struct roff *r, int ln, const char *v,
+roff_evalnum(struct roff *r, int ln, const char *v,
int *pos, int *res, int skipwhite)
{
int mypos, operand2;
@@ -1551,7 +1549,7 @@ roff_evalnum(struct roff *r, int ln, const char *v,
break;
case '/':
if (0 == operand2) {
- mandoc_msg(MANDOCERR_DIVZERO,
+ mandoc_msg(MANDOCERR_DIVZERO,
r->parse, ln, *pos, v);
*res = 0;
break;
@@ -1928,15 +1926,13 @@ roff_eqndelim(struct roff *r, char **bufp, size_t *szp, int pos)
return(ROFF_REPARSE);
}
-static void
-roff_openeqn(struct roff *r, const char *name, int line,
- int offs, const char *buf)
+static enum rofferr
+roff_EQ(ROFF_ARGS)
{
struct eqn_node *e;
- int poff;
assert(NULL == r->eqn);
- e = eqn_alloc(name, offs, line, r->parse);
+ e = eqn_alloc(ppos, ln, r->parse);
if (r->last_eqn) {
r->last_eqn->next = e;
@@ -1948,17 +1944,10 @@ roff_openeqn(struct roff *r, const char *name, int line,
r->eqn = r->last_eqn = e;
- if (buf) {
- poff = 0;
- eqn_read(&r->eqn, line, buf, offs, &poff);
- }
-}
-
-static enum rofferr
-roff_EQ(ROFF_ARGS)
-{
+ if ((*bufp)[pos])
+ mandoc_vmsg(MANDOCERR_ARG_SKIP, r->parse, ln, pos,
+ ".EQ %s", *bufp + pos);
- roff_openeqn(r, *bufp + pos, ln, ppos, NULL);
return(ROFF_IGN);
}