=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_macro.c,v retrieving revision 1.23 retrieving revision 1.24 diff -c -r1.23 -r1.24 *** src/usr.bin/mandoc/mdoc_macro.c 2009/08/22 22:39:55 1.23 --- src/usr.bin/mandoc/mdoc_macro.c 2009/09/21 21:11:37 1.24 *************** *** 1,4 **** ! /* $Id: mdoc_macro.c,v 1.23 2009/08/22 22:39:55 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: mdoc_macro.c,v 1.24 2009/09/21 21:11:37 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * *************** *** 46,53 **** static int rew_last(struct mdoc *, const struct mdoc_node *); 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 *); static int swarn(struct mdoc *, enum mdoc_type, int, int, const struct mdoc_node *); --- 46,53 ---- static int rew_last(struct mdoc *, const struct mdoc_node *); static int append_delims(struct mdoc *, int, int *, char *); ! static int lookup(int, const char *); ! static int lookup_raw(const char *); static int swarn(struct mdoc *, enum mdoc_type, int, int, const struct mdoc_node *); *************** *** 258,269 **** * Look up a macro from within a subsequent context. */ static int ! lookup(struct mdoc *mdoc, int from, const char *p) { if ( ! (MDOC_PARSED & mdoc_macros[from].flags)) return(MDOC_MAX); ! return(lookup_raw(mdoc, p)); } --- 258,270 ---- * Look up a macro from within a subsequent context. */ static int ! lookup(int from, const char *p) { + /* FIXME: make -diag lists be un-PARSED. */ if ( ! (MDOC_PARSED & mdoc_macros[from].flags)) return(MDOC_MAX); ! return(lookup_raw(p)); } *************** *** 271,281 **** * Lookup a macro following the initial line macro. */ static int ! lookup_raw(struct mdoc *mdoc, const char *p) { int res; ! if (MDOC_MAX == (res = mdoc_hash_find(mdoc->htab, p))) return(MDOC_MAX); if (MDOC_CALLABLE & mdoc_macros[res].flags) return(res); --- 272,282 ---- * Lookup a macro following the initial line macro. */ static int ! lookup_raw(const char *p) { int res; ! if (MDOC_MAX == (res = mdoc_hash_find(p))) return(MDOC_MAX); if (MDOC_CALLABLE & mdoc_macros[res].flags) return(res); *************** *** 669,675 **** if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(m, tok, p))) { if ( ! flushed) { if ( ! rew_sub(MDOC_BLOCK, m, tok, line, ppos)) return(0); --- 670,676 ---- if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(tok, p))) { if ( ! flushed) { if ( ! rew_sub(MDOC_BLOCK, m, tok, line, ppos)) return(0); *************** *** 753,759 **** /* Quoted words shouldn't be looked-up. */ ! c = ARGS_QWORD == w ? MDOC_MAX : lookup(m, tok, p); /* * In this case, we've located a submacro and must --- 754,760 ---- /* Quoted words shouldn't be looked-up. */ ! c = ARGS_QWORD == w ? MDOC_MAX : lookup(tok, p); /* * In this case, we've located a submacro and must *************** *** 932,938 **** continue; } ! if (MDOC_MAX == (c = lookup(m, tok, p))) { if ( ! mdoc_word_alloc(m, line, lastarg, p)) return(0); continue; --- 933,939 ---- continue; } ! if (MDOC_MAX == (c = lookup(tok, p))) { if ( ! mdoc_word_alloc(m, line, lastarg, p)) return(0); continue; *************** *** 995,1001 **** if (ARGS_EOLN == c) break; ! if (MDOC_MAX == (c = lookup(m, tok, p))) { if ( ! mdoc_word_alloc(m, line, la, p)) return(0); continue; --- 996,1002 ---- if (ARGS_EOLN == c) break; ! if (MDOC_MAX == (c = lookup(tok, p))) { if ( ! mdoc_word_alloc(m, line, la, p)) return(0); continue; *************** *** 1098,1104 **** if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(m, tok, p))) { if ( ! flushed) { if ( ! rew_sub(MDOC_HEAD, m, tok, line, ppos)) return(0); --- 1099,1105 ---- if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(tok, p))) { if ( ! flushed) { if ( ! rew_sub(MDOC_HEAD, m, tok, line, ppos)) return(0); *************** *** 1209,1215 **** if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(m, tok, p))) { if ( ! flushed && ! rew_elem(m, tok)) return(0); flushed = 1; --- 1210,1216 ---- if (ARGS_EOLN == c) break; ! if (MDOC_MAX != (c = lookup(tok, p))) { if ( ! flushed && ! rew_elem(m, tok)) return(0); flushed = 1; *************** *** 1284,1290 **** if (ARGS_EOLN == w) break; ! c = ARGS_QWORD == w ? MDOC_MAX : lookup(m, tok, p); if (MDOC_MAX != c) { if ( ! rew_elem(m, tok)) --- 1285,1291 ---- if (ARGS_EOLN == w) break; ! c = ARGS_QWORD == w ? MDOC_MAX : lookup(tok, p); if (MDOC_MAX != c) { if ( ! rew_elem(m, tok)) *************** *** 1333,1339 **** if (ARGS_EOLN == w) break; ! c = ARGS_QWORD == w ? MDOC_MAX : lookup_raw(m, p); if (MDOC_MAX != c) { if ( ! mdoc_macro(m, c, line, la, &pos, buf)) --- 1334,1340 ---- if (ARGS_EOLN == w) break; ! c = ARGS_QWORD == w ? MDOC_MAX : lookup_raw(p); if (MDOC_MAX != c) { if ( ! mdoc_macro(m, c, line, la, &pos, buf))