aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/eqn.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-07-22 10:22:47 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-07-22 10:22:47 +0000
commitbc0549fb5a7ec81cbb7d70c7a4d51ab132b4455d (patch)
treee4af22e5a4def26999907fd24d27e92d1881b202 /eqn.c
parent032f8fa36a4d7f9a34158f5e3eea9011d82b4d34 (diff)
downloadmandoc-bc0549fb5a7ec81cbb7d70c7a4d51ab132b4455d.tar.gz
mandoc-bc0549fb5a7ec81cbb7d70c7a4d51ab132b4455d.tar.zst
mandoc-bc0549fb5a7ec81cbb7d70c7a4d51ab132b4455d.zip
Use a macro instead of doing a string-fragment compare. I just get
worried that I'm going to write the wrong size on both sides of the equality (I've already done it a few times). This cleans up the code readability a bit.
Diffstat (limited to 'eqn.c')
-rw-r--r--eqn.c53
1 files changed, 24 insertions, 29 deletions
diff --git a/eqn.c b/eqn.c
index 1d405396..013269b0 100644
--- a/eqn.c
+++ b/eqn.c
@@ -1,4 +1,4 @@
-/* $Id: eqn.c,v 1.23 2011/07/22 09:57:04 kristaps Exp $ */
+/* $Id: eqn.c,v 1.24 2011/07/22 10:22:47 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -44,6 +44,11 @@ struct eqnstr {
size_t sz;
};
+#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))
+
struct eqnpart {
struct eqnstr str;
int (*fp)(struct eqn_node *);
@@ -219,7 +224,7 @@ eqn_list(struct eqn_node *ep, struct eqn_box *last)
EQN_MSG(MANDOCERR_EQNEOF, ep);
return(EQN_ERR);
}
- if (1 != sz || strncmp("{", start, 1)) {
+ if ( ! STRNEQ(start, sz, "{", 1)) {
EQN_MSG(MANDOCERR_EQNSYNT, ep);
return(EQN_ERR);
}
@@ -228,7 +233,7 @@ eqn_list(struct eqn_node *ep, struct eqn_box *last)
eqn_rewind(ep);
start = eqn_nexttok(ep, &sz);
assert(start);
- if (5 != sz || strncmp("above", start, 5))
+ if ( ! STRNEQ(start, sz, "above", 5))
break;
bp->last->above = 1;
}
@@ -242,7 +247,7 @@ eqn_list(struct eqn_node *ep, struct eqn_box *last)
eqn_rewind(ep);
start = eqn_nexttok(ep, &sz);
assert(start);
- if (1 == sz && 0 == strncmp("}", start, 1))
+ if (STRNEQ(start, sz, "}", 1))
return(EQN_OK);
EQN_MSG(MANDOCERR_EQNBADSCOPE, ep);
@@ -262,22 +267,20 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
if (NULL == (start = eqn_nexttok(ep, &sz)))
return(EQN_EOF);
- if (1 == sz && 0 == strncmp("}", start, 1))
+ if (STRNEQ(start, sz, "}", 1))
return(EQN_DESCOPE);
- else if (5 == sz && 0 == strncmp("right", start, 5))
+ else if (STRNEQ(start, sz, "right", 5))
return(EQN_DESCOPE);
- else if (5 == sz && 0 == strncmp("above", start, 5))
+ else if (STRNEQ(start, sz, "above", 5))
return(EQN_DESCOPE);
for (i = 0; i < (int)EQN__MAX; i++) {
- if (eqnparts[i].str.sz != sz)
- continue;
- if (strncmp(eqnparts[i].str.name, start, sz))
+ if ( ! EQNSTREQ(&eqnparts[i].str, start, sz))
continue;
return((*eqnparts[i].fp)(ep) ? EQN_OK : EQN_ERR);
}
- if (1 == sz && 0 == strncmp("{", start, 1)) {
+ if (STRNEQ(start, sz, "{", 1)) {
if (EQN_DESCOPE != (c = eqn_eqn(ep, last))) {
if (EQN_ERR != c)
EQN_MSG(MANDOCERR_EQNSCOPE, ep);
@@ -286,23 +289,21 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
eqn_rewind(ep);
start = eqn_nexttok(ep, &sz);
assert(start);
- if (1 == sz && 0 == strncmp("}", start, 1))
+ if (STRNEQ(start, sz, "}", 1))
return(EQN_OK);
EQN_MSG(MANDOCERR_EQNBADSCOPE, ep);
return(EQN_ERR);
}
for (i = 0; i < (int)EQNPILE__MAX; i++) {
- if (eqnpiles[i].sz != sz)
- continue;
- if (strncmp(eqnpiles[i].name, start, sz))
+ if ( ! EQNSTREQ(&eqnpiles[i], start, sz))
continue;
if (EQN_OK == (c = eqn_list(ep, last)))
last->last->pile = (enum eqn_pilet)i;
return(c);
}
- if (4 == sz && 0 == strncmp("left", start, 4)) {
+ if (STRNEQ(start, sz, "left", 4)) {
if (NULL == (start = eqn_nexttok(ep, &sz))) {
EQN_MSG(MANDOCERR_EQNEOF, ep);
return(EQN_ERR);
@@ -315,7 +316,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
eqn_rewind(ep);
start = eqn_nexttok(ep, &sz);
assert(start);
- if (5 != sz || strncmp("right", start, 5))
+ if (STRNEQ(start, sz, "right", 5))
return(EQN_DESCOPE);
if (NULL == (start = eqn_nexttok(ep, &sz))) {
EQN_MSG(MANDOCERR_EQNEOF, ep);
@@ -326,9 +327,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
}
for (i = 0; i < (int)EQNPOS__MAX; i++) {
- if (eqnposs[i].sz != sz)
- continue;
- if (strncmp(eqnposs[i].name, start, sz))
+ if ( ! EQNSTREQ(&eqnposs[i], start, sz))
continue;
if (NULL == last->last) {
EQN_MSG(MANDOCERR_EQNSYNT, ep);
@@ -343,9 +342,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
}
for (i = 0; i < (int)EQNMARK__MAX; i++) {
- if (eqnmarks[i].sz != sz)
- continue;
- if (strncmp(eqnmarks[i].name, start, sz))
+ if ( ! EQNSTREQ(&eqnmarks[i], start, sz))
continue;
if (NULL == last->last) {
EQN_MSG(MANDOCERR_EQNSYNT, ep);
@@ -360,9 +357,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
}
for (i = 0; i < (int)EQNFONT__MAX; i++) {
- if (eqnfonts[i].sz != sz)
- continue;
- if (strncmp(eqnfonts[i].name, start, sz))
+ if ( ! EQNSTREQ(&eqnfonts[i], start, sz))
continue;
if (EQN_EOF == (c = eqn_box(ep, last))) {
EQN_MSG(MANDOCERR_EQNEOF, ep);
@@ -372,7 +367,7 @@ eqn_box(struct eqn_node *ep, struct eqn_box *last)
return(c);
}
- if (4 == sz && 0 == strncmp("size", start, 4)) {
+ if (STRNEQ(start, sz, "size", 4)) {
if (NULL == (start = eqn_nexttok(ep, &sz))) {
EQN_MSG(MANDOCERR_EQNEOF, ep);
return(EQN_ERR);
@@ -643,8 +638,8 @@ eqn_def_find(struct eqn_node *ep, const char *key, size_t sz)
int i;
for (i = 0; i < (int)ep->defsz; i++)
- if (ep->defs[i].keysz && ep->defs[i].keysz == sz &&
- 0 == strncmp(ep->defs[i].key, key, sz))
+ if (ep->defs[i].keysz && STRNEQ(ep->defs[i].key,
+ ep->defs[i].keysz, key, sz))
return(&ep->defs[i]);
return(NULL);