-/* $Id: mdoc_macro.c,v 1.70 2010/05/29 18:47:54 kristaps Exp $ */
+/* $Id: mdoc_macro.c,v 1.71 2010/05/30 21:28:30 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
}
ac = ARGS_ERROR;
+ lac = ARGS_PHRASE;
for ( ; ; ) {
la = *pos;
if (ARGS_EOLN == ac)
break;
- if (ARGS_PEND == ac) {
- if (ARGS_PPHRASE == lac)
- ac = ARGS_PPHRASE;
- else
- ac = ARGS_PHRASE;
- }
-
/* Don't emit leading punct. for phrases. */
if (NULL == head &&
+ ARGS_PEND != ac &&
ARGS_PHRASE != ac &&
ARGS_PPHRASE != ac &&
ARGS_QWORD != ac &&
/* Always re-open head for phrases. */
if (NULL == head ||
+ ARGS_PEND == ac ||
ARGS_PHRASE == ac ||
ARGS_PPHRASE == ac) {
if ( ! mdoc_head_alloc(m, line, ppos, tok))
if (ARGS_PHRASE == ac || ARGS_PPHRASE == ac) {
if (ARGS_PPHRASE == ac)
m->flags |= MDOC_PPHRASE;
- if ( ! phrase(m, line, la, buf, ac))
+ if (ARGS_PEND == ac && ARGS_PPHRASE == lac)
+ m->flags |= MDOC_PPHRASE;
+
+ if (ARGS_PEND == ac) {
+ if ( ! phrase(m, line, la, buf, lac))
+ return(0);
+ } else if ( ! phrase(m, line, la, buf, ac))
return(0);
+
m->flags &= ~MDOC_PPHRASE;
+
if ( ! rew_sub(MDOC_HEAD, m, tok, line, ppos))
return(0);
continue;