=================================================================== RCS file: /cvs/mandoc/mdoc_macro.c,v retrieving revision 1.28 retrieving revision 1.31 diff -u -p -r1.28 -r1.31 --- mandoc/mdoc_macro.c 2009/07/29 08:46:06 1.28 +++ mandoc/mdoc_macro.c 2009/08/19 11:58:32 1.31 @@ -1,4 +1,4 @@ -/* $Id: mdoc_macro.c,v 1.28 2009/07/29 08:46:06 kristaps Exp $ */ +/* $Id: mdoc_macro.c,v 1.31 2009/08/19 11:58:32 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -45,7 +45,7 @@ static int rew_impblock(struct mdoc *, int, int, int static int rew_expblock(struct mdoc *, int, int, int); static int rew_subblock(enum mdoc_type, struct mdoc *, int, int, int); -static int rew_last(struct mdoc *, struct mdoc_node *); +static int rew_last(struct mdoc *, struct mdoc_node *); /* FIXME: make const */ static int append_delims(struct mdoc *, int, int *, char *); static int lookup(struct mdoc *, int, const char *); static int lookup_raw(struct mdoc *, const char *); @@ -599,6 +599,7 @@ rew_expblock(struct mdoc *mdoc, int tok, int line, int } +/* FIXME: can this be merged with subblock? */ static int rew_impblock(struct mdoc *mdoc, int tok, int line, int ppos) { @@ -644,7 +645,6 @@ append_delims(struct mdoc *mdoc, int line, int *pos, c assert(mdoc_isdelim(p)); if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } return(1); @@ -707,9 +707,7 @@ blk_exp_close(MACRO_PROT_ARGS) if (ARGS_EOLN == c) break; - if (-1 == (c = lookup(mdoc, tok, p))) - return(0); - else if (MDOC_MAX != c) { + if (MDOC_MAX != (c = lookup(mdoc, tok, p))) { if ( ! flushed) { if ( ! rew_expblock(mdoc, tok, line, ppos)) @@ -723,7 +721,6 @@ blk_exp_close(MACRO_PROT_ARGS) if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } if ( ! flushed && ! rew_expblock(mdoc, tok, line, ppos)) @@ -807,7 +804,7 @@ in_line(MACRO_PROT_ARGS) * or raise a warning. */ - if (MDOC_MAX != c && -1 != c) { + if (MDOC_MAX != c) { if (0 == lastpunct && ! rew_elem(mdoc, tok)) return(0); if (nc && 0 == cnt) { @@ -827,8 +824,7 @@ in_line(MACRO_PROT_ARGS) if (ppos > 1) return(1); return(append_delims(mdoc, line, pos, buf)); - } else if (-1 == c) - return(0); + } /* * Non-quote-enclosed punctuation. Set up our scope, if @@ -854,7 +850,6 @@ in_line(MACRO_PROT_ARGS) cnt++; if ( ! mdoc_word_alloc(mdoc, line, la, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } if (0 == lastpunct && ! rew_elem(mdoc, tok)) @@ -995,13 +990,9 @@ blk_full(MACRO_PROT_ARGS) continue; } - if (-1 == (c = lookup(mdoc, tok, p))) - return(0); - - if (MDOC_MAX == c) { + if (MDOC_MAX == (c = lookup(mdoc, tok, p))) { if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; continue; } @@ -1065,12 +1056,9 @@ blk_part_imp(MACRO_PROT_ARGS) if (ARGS_EOLN == c) break; - if (-1 == (c = lookup(mdoc, tok, p))) - return(0); - else if (MDOC_MAX == c) { + if (MDOC_MAX == (c = lookup(mdoc, tok, p))) { if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; continue; } @@ -1169,9 +1157,7 @@ blk_part_exp(MACRO_PROT_ARGS) if (ARGS_EOLN == c) break; - if (-1 == (c = lookup(mdoc, tok, p))) - return(0); - else if (MDOC_MAX != c) { + if (MDOC_MAX != (c = lookup(mdoc, tok, p))) { if ( ! flushed) { if ( ! rew_subblock(MDOC_HEAD, mdoc, tok, line, ppos)) @@ -1200,7 +1186,6 @@ blk_part_exp(MACRO_PROT_ARGS) if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } if ( ! flushed) { @@ -1289,9 +1274,7 @@ in_line_argn(MACRO_PROT_ARGS) if (ARGS_EOLN == c) break; - if (-1 == (c = lookup(mdoc, tok, p))) - return(0); - else if (MDOC_MAX != c) { + if (MDOC_MAX != (c = lookup(mdoc, tok, p))) { if ( ! flushed && ! rew_elem(mdoc, tok)) return(0); flushed = 1; @@ -1309,7 +1292,6 @@ in_line_argn(MACRO_PROT_ARGS) if ( ! mdoc_word_alloc(mdoc, line, lastarg, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } if ( ! flushed && ! rew_elem(mdoc, tok)) @@ -1369,16 +1351,14 @@ in_line_eoln(MACRO_PROT_ARGS) c = ARGS_QWORD == w ? MDOC_MAX : lookup(mdoc, tok, p); - if (MDOC_MAX != c && -1 != c) { + if (MDOC_MAX != c) { if ( ! rew_elem(mdoc, tok)) return(0); return(mdoc_macro(mdoc, c, line, la, pos, buf)); - } else if (-1 == c) - return(0); + } if ( ! mdoc_word_alloc(mdoc, line, la, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } return(rew_elem(mdoc, tok)); @@ -1416,19 +1396,16 @@ phrase(struct mdoc *mdoc, int line, int ppos, char *bu if (ARGS_EOLN == w) break; - c = ARGS_QWORD == w ? MDOC_MAX : - mdoc_hash_find(mdoc->htab, p); + c = ARGS_QWORD == w ? MDOC_MAX : lookup_raw(mdoc, p); - if (MDOC_MAX != c && -1 != c) { + if (MDOC_MAX != c) { if ( ! mdoc_macro(mdoc, c, line, la, &pos, buf)) return(0); return(append_delims(mdoc, line, &pos, buf)); - } else if (-1 == c) - return(0); + } if ( ! mdoc_word_alloc(mdoc, line, la, p)) return(0); - mdoc->next = MDOC_NEXT_SIBLING; } return(1);