=================================================================== RCS file: /cvs/pod2mdoc/pod2mdoc.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -p -r1.36 -r1.37 --- pod2mdoc/pod2mdoc.c 2014/10/24 00:28:34 1.36 +++ pod2mdoc/pod2mdoc.c 2015/02/13 00:44:16 1.37 @@ -1,6 +1,7 @@ -/* $Id: pod2mdoc.c,v 1.36 2014/10/24 00:28:34 schwarze Exp $ */ +/* $Id: pod2mdoc.c,v 1.37 2015/02/13 00:44:16 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons + * Copyright (c) 2014, 2015 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -26,6 +27,8 @@ #include #include +#include "dict.h" + /* * In what section can we find Perl module manuals? * Sometimes (Mac OS X) it's 3pm, sometimes (OpenBSD, etc.) 3p. @@ -1107,6 +1110,7 @@ again: putchar('\n'); buf[ifa++] = '\0'; printf(".Fo %s\n", buf + ifo); + dict_put(buf + ifo, MDOC_Fo); buf[ifc++] = '\0'; for (;;) { cp = strchr(buf + ifa, ','); @@ -1333,12 +1337,26 @@ ordinary(struct state *st, const char *buf, size_t sta */ last = buf[start++]; - if (' ' == last) { - outbuf_flush(st); - putchar(' '); - st->wantws = 1; - } else + if (' ' != last) { outbuf_addchar(st); + continue; + } + + if ( ! strcmp(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); + outbuf_flush(st); + mdoc_newln(st); + continue; + } + + outbuf_flush(st); + putchar(' '); + st->wantws = 1; } if (start < end - 1 && '<' == buf[start + 1] && @@ -1504,6 +1522,7 @@ dofile(const struct args *args, const char *fname, free(title); + dict_init(); memset(&st, 0, sizeof(struct state)); st.oust = OUST_NL; st.wantws = 1; @@ -1531,6 +1550,7 @@ dofile(const struct args *args, const char *fname, dopar(&st, buf, cur, end); cur = sup; } + dict_destroy(); } /*