=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_macro.c,v retrieving revision 1.146 retrieving revision 1.147 diff -c -r1.146 -r1.147 *** src/usr.bin/mandoc/mdoc_macro.c 2015/04/19 13:50:10 1.146 --- src/usr.bin/mandoc/mdoc_macro.c 2015/04/19 13:59:37 1.147 *************** *** 1,4 **** ! /* $OpenBSD: mdoc_macro.c,v 1.146 2015/04/19 13:50:10 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010, 2012-2015 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: mdoc_macro.c,v 1.147 2015/04/19 13:59:37 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010, 2012-2015 Ingo Schwarze *************** *** 230,245 **** /* * Look up the macro at *p called by "from", ! * or as a line macro if from == MDOC_MAX. */ static int lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) { int res; ! if (from == MDOC_MAX || mdoc_macros[from].flags & MDOC_PARSED) { res = mdoc_hash_find(p); ! if (res != MDOC_MAX) { if (mdoc_macros[res].flags & MDOC_CALLABLE) return(res); if (res != MDOC_br && res != MDOC_sp && res != MDOC_ll) --- 230,245 ---- /* * Look up the macro at *p called by "from", ! * or as a line macro if from == TOKEN_NONE. */ static int lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) { int res; ! if (from == TOKEN_NONE || mdoc_macros[from].flags & MDOC_PARSED) { res = mdoc_hash_find(p); ! if (res != TOKEN_NONE) { if (mdoc_macros[res].flags & MDOC_CALLABLE) return(res); if (res != MDOC_br && res != MDOC_sp && res != MDOC_ll) *************** *** 247,253 **** mdoc->parse, line, ppos, p); } } ! return(MDOC_MAX); } /* --- 247,253 ---- mdoc->parse, line, ppos, p); } } ! return(TOKEN_NONE); } /* *************** *** 463,469 **** for (;;) { la = *pos; ! if (mdoc_args(mdoc, line, pos, buf, MDOC_MAX, &p) == ARGS_EOLN) break; dword(mdoc, line, la, p, DELIM_MAX, 1); --- 463,470 ---- for (;;) { la = *pos; ! if (mdoc_args(mdoc, line, pos, buf, TOKEN_NONE, &p) == ! ARGS_EOLN) break; dword(mdoc, line, la, p, DELIM_MAX, 1); *************** *** 496,516 **** int ntok; p = buf + ppos; ! ntok = MDOC_MAX; if (*p == '"') p++; else if (parsed && ! (mdoc->flags & MDOC_PHRASELIT)) ntok = lookup(mdoc, tok, line, ppos, p); ! if (ntok == MDOC_MAX) { ! dword(mdoc, line, ppos, p, DELIM_MAX, tok == MDOC_MAX || mdoc_macros[tok].flags & MDOC_JOIN); return(0); } else { if (mdoc_macros[tok].fp == in_line_eoln) rew_elem(mdoc, tok); mdoc_macro(mdoc, ntok, line, ppos, pos, buf); ! if (tok == MDOC_MAX) append_delims(mdoc, line, pos, buf); return(1); } --- 497,517 ---- int ntok; p = buf + ppos; ! ntok = TOKEN_NONE; if (*p == '"') p++; else if (parsed && ! (mdoc->flags & MDOC_PHRASELIT)) ntok = lookup(mdoc, tok, line, ppos, p); ! if (ntok == TOKEN_NONE) { ! dword(mdoc, line, ppos, p, DELIM_MAX, tok == TOKEN_NONE || mdoc_macros[tok].flags & MDOC_JOIN); return(0); } else { if (mdoc_macros[tok].fp == in_line_eoln) rew_elem(mdoc, tok); mdoc_macro(mdoc, ntok, line, ppos, pos, buf); ! if (tok == TOKEN_NONE) append_delims(mdoc, line, pos, buf); return(1); } *************** *** 675,684 **** if (ac == ARGS_PUNCT || ac == ARGS_EOLN) break; ! ntok = ac == ARGS_QWORD ? MDOC_MAX : lookup(mdoc, tok, line, lastarg, p); ! if (ntok == MDOC_MAX) { dword(mdoc, line, lastarg, p, DELIM_MAX, MDOC_JOIN & mdoc_macros[tok].flags); continue; --- 676,685 ---- if (ac == ARGS_PUNCT || ac == ARGS_EOLN) break; ! ntok = ac == ARGS_QWORD ? TOKEN_NONE : lookup(mdoc, tok, line, lastarg, p); ! if (ntok == TOKEN_NONE) { dword(mdoc, line, lastarg, p, DELIM_MAX, MDOC_JOIN & mdoc_macros[tok].flags); continue; *************** *** 779,785 **** } ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? ! MDOC_MAX : lookup(mdoc, tok, line, la, p); /* * In this case, we've located a submacro and must --- 780,786 ---- } ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? ! TOKEN_NONE : lookup(mdoc, tok, line, la, p); /* * In this case, we've located a submacro and must *************** *** 788,794 **** * or raise a warning. */ ! if (ntok != MDOC_MAX) { if (scope) rew_elem(mdoc, tok); if (nc && ! cnt) { --- 789,795 ---- * or raise a warning. */ ! if (ntok != TOKEN_NONE) { if (scope) rew_elem(mdoc, tok); if (nc && ! cnt) { *************** *** 1105,1111 **** mdoc->flags |= MDOC_PPHRASE; if (ac == ARGS_PEND && lac == ARGS_PPHRASE) mdoc->flags |= MDOC_PPHRASE; ! parse_rest(mdoc, MDOC_MAX, line, &la, buf); mdoc->flags &= ~MDOC_PPHRASE; continue; } --- 1106,1112 ---- mdoc->flags |= MDOC_PPHRASE; if (ac == ARGS_PEND && lac == ARGS_PPHRASE) mdoc->flags |= MDOC_PPHRASE; ! parse_rest(mdoc, TOKEN_NONE, line, &la, buf); mdoc->flags &= ~MDOC_PPHRASE; continue; } *************** *** 1335,1343 **** } ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? ! MDOC_MAX : lookup(mdoc, tok, line, la, p); ! if (ntok != MDOC_MAX) { if (state >= 0) { rew_elem(mdoc, tok); state = -2; --- 1336,1344 ---- } ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? ! TOKEN_NONE : lookup(mdoc, tok, line, la, p); ! if (ntok != TOKEN_NONE) { if (state >= 0) { rew_elem(mdoc, tok); state = -2; *************** *** 1471,1475 **** rew_last(mdoc, body); roff_body_alloc(mdoc, line, ppos, MDOC_It); ! parse_rest(mdoc, MDOC_MAX, line, pos, buf); } --- 1472,1476 ---- rew_last(mdoc, body); roff_body_alloc(mdoc, line, ppos, MDOC_It); ! parse_rest(mdoc, TOKEN_NONE, line, pos, buf); }