=================================================================== RCS file: /cvs/pod2mdoc/pod2mdoc.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -p -r1.13 -r1.14 --- pod2mdoc/pod2mdoc.c 2014/04/01 13:05:50 1.13 +++ pod2mdoc/pod2mdoc.c 2014/04/01 19:50:34 1.14 @@ -1,4 +1,4 @@ -/* $Id: pod2mdoc.c,v 1.13 2014/04/01 13:05:50 kristaps Exp $ */ +/* $Id: pod2mdoc.c,v 1.14 2014/04/01 19:50:34 kristaps Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * @@ -252,10 +252,23 @@ dosynopsisfl(const char *buf, size_t *start, size_t en { size_t i; again: + assert(*start + 1 < end); + assert('-' == buf[*start]); + + if ( ! isalnum((int)buf[*start + 1]) && + '?' != buf[*start + 1] && + '-' != buf[*start + 1]) { + (*start)--; + fputs("Ar ", stdout); + return; + } + (*start)++; for (i = *start; i < end; i++) if (isalnum((int)buf[i])) continue; + else if ('?' == buf[i]) + continue; else if ('-' == buf[i]) continue; else if ('_' == buf[i]) @@ -414,12 +427,14 @@ formatcode(struct state *st, const char *buf, printf("Em "); break; case (FMT_BOLD): - if (SECT_SYNOPSIS == st->sect && - 1 == dsz && - '-' == buf[*start]) - dosynopsisfl(buf, start, end); - else - printf("Sy "); + if (SECT_SYNOPSIS == st->sect) { + if (1 == dsz && '-' == buf[*start]) + dosynopsisfl(buf, start, end); + else + printf("Ar "); + break; + } + printf("Sy "); break; case (FMT_CODE): printf("Qo Li ");