=================================================================== RCS file: /cvs/pod2mdoc/pod2mdoc.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -p -r1.42 -r1.43 --- pod2mdoc/pod2mdoc.c 2015/02/14 10:35:02 1.42 +++ pod2mdoc/pod2mdoc.c 2015/02/14 11:12:48 1.43 @@ -1,4 +1,4 @@ -/* $Id: pod2mdoc.c,v 1.42 2015/02/14 10:35:02 schwarze Exp $ */ +/* $Id: pod2mdoc.c,v 1.43 2015/02/14 11:12:48 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2014, 2015 Ingo Schwarze @@ -1329,6 +1329,7 @@ static void ordinary(struct state *st, const char *buf, size_t start, size_t end) { size_t i, j, opstack; + enum mdoc_type mtype; int seq; if ( ! st->parsing || st->paused) @@ -1405,16 +1406,22 @@ ordinary(struct state *st, const char *buf, size_t sta /* Detect function names. */ + mtype = MDOC_Fa; if (st->outbuflen > 2 && ')' == st->outbuf[st->outbuflen - 1] && - '(' == st->outbuf[st->outbuflen - 2] && - dict_get(st->outbuf, st->outbuflen - 2) == - MDOC_Fo) { - st->outbuflen -= 2; - st->outbuf[st->outbuflen] = '\0'; - mdoc_newln(st); - fputs(".Fn ", stdout); - st->oust = OUST_MAC; + '(' == st->outbuf[st->outbuflen - 2]) { + mtype = dict_get(st->outbuf, + st->outbuflen - 2); + if (MDOC_Fo == mtype || MDOC_MAX == mtype) { + st->outbuflen -= 2; + st->outbuf[st->outbuflen] = '\0'; + mdoc_newln(st); + if (MDOC_Fo == mtype) + fputs(".Fn ", stdout); + else + fputs(".Xr ", stdout); + st->oust = OUST_MAC; + } } /* @@ -1434,8 +1441,11 @@ ordinary(struct state *st, const char *buf, size_t sta '!' == buf[start - 2] || '?' == buf[start - 2]) && islower((unsigned char)buf[start - 3]) && - islower((unsigned char)buf[start - 4]))) + islower((unsigned char)buf[start - 4]))) { + if (MDOC_MAX == mtype) + fputs(" 3", stdout); mdoc_newln(st); + } /* Advance to the next word. */