=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/html.c,v retrieving revision 1.109 retrieving revision 1.110 diff -c -r1.109 -r1.110 *** src/usr.bin/mandoc/html.c 2018/08/16 13:49:40 1.109 --- src/usr.bin/mandoc/html.c 2018/10/02 12:32:55 1.110 *************** *** 1,4 **** ! /* $OpenBSD: html.c,v 1.109 2018/08/16 13:49:40 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: html.c,v 1.110 2018/10/02 12:32:55 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze *************** *** 16,21 **** --- 16,22 ---- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include + #include #include #include *************** *** 126,132 **** h->tag = NULL; h->style = outopts->style; ! h->base_man = outopts->man; h->base_includes = outopts->includes; if (outopts->fragment) h->oflags |= HTML_FRAGMENT; --- 127,136 ---- h->tag = NULL; h->style = outopts->style; ! if ((h->base_man1 = outopts->man) == NULL) ! h->base_man2 = NULL; ! else if ((h->base_man2 = strchr(h->base_man1, ';')) != NULL) ! *h->base_man2++ = '\0'; h->base_includes = outopts->includes; if (outopts->fragment) h->oflags |= HTML_FRAGMENT; *************** *** 465,473 **** static void print_href(struct html *h, const char *name, const char *sec, int man) { const char *p, *pp; ! pp = man ? h->base_man : h->base_includes; while ((p = strchr(pp, '%')) != NULL) { print_encode(h, pp, p, 1); if (man && p[1] == 'S') { --- 469,489 ---- static void print_href(struct html *h, const char *name, const char *sec, int man) { + struct stat sb; const char *p, *pp; + char *filename; ! if (man) { ! pp = h->base_man1; ! if (h->base_man2 != NULL) { ! mandoc_asprintf(&filename, "%s.%s", name, sec); ! if (stat(filename, &sb) == -1) ! pp = h->base_man2; ! free(filename); ! } ! } else ! pp = h->base_includes; ! while ((p = strchr(pp, '%')) != NULL) { print_encode(h, pp, p, 1); if (man && p[1] == 'S') {