=================================================================== RCS file: /cvs/mandoc/man_macro.c,v retrieving revision 1.76 retrieving revision 1.80 diff -u -p -r1.76 -r1.80 --- mandoc/man_macro.c 2013/10/17 20:54:58 1.76 +++ mandoc/man_macro.c 2013/12/31 23:23:10 1.80 @@ -1,7 +1,8 @@ -/* $Id: man_macro.c,v 1.76 2013/10/17 20:54:58 schwarze Exp $ */ +/* $Id: man_macro.c,v 1.80 2013/12/31 23:23:10 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2012 Ingo Schwarze + * Copyright (c) 2012, 2013 Ingo Schwarze + * Copyright (c) 2013 Franco Fichtner * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -298,10 +299,12 @@ blk_close(MACRO_PROT_ARGS) if (ntok == nn->tok && MAN_BLOCK == nn->type) break; - if (NULL != nn) - man_unscope(man, nn, MANDOCERR_MAX); - else + if (NULL == nn) { man_pmsg(man, line, ppos, MANDOCERR_NOSCOPE); + if ( ! rew_scope(MAN_BLOCK, man, MAN_PP)) + return(0); + } else + man_unscope(man, nn, MANDOCERR_MAX); return(1); } @@ -428,6 +431,15 @@ in_line_eoln(MACRO_PROT_ARGS) if ( ! man_word_alloc(man, line, la, p)) return(0); } + + /* + * Append MAN_EOS in case the last snipped argument + * ends with a dot, e.g. `.IR syslog (3).' + */ + + if (n != man->last && + mandoc_eos(man->last->string, strlen(man->last->string))) + man->last->flags |= MAN_EOS; /* * If no arguments are specified and this is MAN_SCOPED (i.e.,