=================================================================== RCS file: /cvs/mandoc/cgi.c,v retrieving revision 1.110 retrieving revision 1.114 diff -u -p -r1.110 -r1.114 --- mandoc/cgi.c 2015/10/13 22:59:54 1.110 +++ mandoc/cgi.c 2015/11/05 20:55:41 1.114 @@ -1,4 +1,4 @@ -/* $Id: cgi.c,v 1.110 2015/10/13 22:59:54 schwarze Exp $ */ +/* $Id: cgi.c,v 1.114 2015/11/05 20:55:41 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2014, 2015 Ingo Schwarze @@ -33,6 +33,8 @@ #include "mandoc_aux.h" #include "mandoc.h" #include "roff.h" +#include "mdoc.h" +#include "man.h" #include "main.h" #include "manconf.h" #include "mansearch.h" @@ -75,6 +77,7 @@ static void pg_searchres(const struct req *, static void pg_show(struct req *, const char *); static void resp_begin_html(int, const char *); static void resp_begin_http(int, const char *); +static void resp_copy(const char *); static void resp_end_html(void); static void resp_searchform(const struct req *); static void resp_show(const struct req *, const char *); @@ -366,6 +369,20 @@ resp_begin_http(int code, const char *msg) } static void +resp_copy(const char *filename) +{ + char buf[4096]; + ssize_t sz; + int fd; + + if ((fd = open(filename, O_RDONLY)) != -1) { + fflush(stdout); + while ((sz = read(fd, buf, sizeof(buf))) > 0) + write(STDOUT_FILENO, buf, sz); + } +} + +static void resp_begin_html(int code, const char *msg) { @@ -375,21 +392,23 @@ resp_begin_html(int code, const char *msg) "\n" "\n" "\n" - "\n" - "\n" "%s\n" "\n" "\n" "\n", - CSS_DIR, CSS_DIR, CUSTOMIZE_TITLE); + CSS_DIR, CUSTOMIZE_TITLE); + + resp_copy(MAN_DIR "/header.html"); } static void resp_end_html(void) { + resp_copy(MAN_DIR "/footer.html"); + puts("\n" ""); } @@ -399,7 +418,6 @@ resp_searchform(const struct req *req) { int i; - puts(CUSTOMIZE_BEGIN); puts(""); printf("
\n" "
\n" @@ -856,10 +874,13 @@ format(const struct req *req, const char *file) vp = html_alloc(&conf); - if (man->macroset == MACROSET_MDOC) + if (man->macroset == MACROSET_MDOC) { + mdoc_validate(man); html_mdoc(vp, man); - else + } else { + man_validate(man); html_man(vp, man); + } html_free(vp); mparse_free(mp);