]> git.cameronkatri.com Git - mandoc.git/commitdiff
Use include files "header.html" and "footer.html" rather than a
authorIngo Schwarze <schwarze@openbsd.org>
Thu, 5 Nov 2015 20:55:41 +0000 (20:55 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Thu, 5 Nov 2015 20:55:41 +0000 (20:55 +0000)
compiled-in string.  This is not a security risk, we read the file
manpath.conf from the same directory, anyway.  No error handling
is needed; even if the files are absent, that's not an error.

This is more flexible without causing complication of the code or
the user interface.  It helps the upcoming revamp of the online
manual pages on man.NetBSD.org.

Based on an idea by Jean-Yves Migeon <jeanyves dot migeon at free dot fr>,
but implemented in a much simpler way.

cgi.c
cgi.h.example
man.cgi.8

diff --git a/cgi.c b/cgi.c
index bd9634e5af4d5870b712afb1bc96b0595149ceb8..679cae257cb5e786b2db43ae2158f4fe69b3490d 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-/*     $Id: cgi.c,v 1.113 2015/11/05 17:47:51 schwarze Exp $ */
+/*     $Id: cgi.c,v 1.114 2015/11/05 20:55:41 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@usta.de>
@@ -77,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 *);
@@ -367,6 +368,20 @@ resp_begin_http(int code, const char *msg)
        fflush(stdout);
 }
 
+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)
 {
@@ -384,12 +399,16 @@ resp_begin_html(int code, const char *msg)
               "<BODY>\n"
               "<!-- Begin page content. //-->\n",
               CSS_DIR, CUSTOMIZE_TITLE);
+
+       resp_copy(MAN_DIR "/header.html");
 }
 
 static void
 resp_end_html(void)
 {
 
+       resp_copy(MAN_DIR "/footer.html");
+
        puts("</BODY>\n"
             "</HTML>");
 }
@@ -399,7 +418,6 @@ resp_searchform(const struct req *req)
 {
        int              i;
 
-       puts(CUSTOMIZE_BEGIN);
        puts("<!-- Begin search form. //-->");
        printf("<DIV ID=\"mancgi\">\n"
               "<FORM ACTION=\"%s\" METHOD=\"get\">\n"
index f4c783186751dd9bce0111310b06d1dc2c5d254c..c4878d34a194d697920b7c58c4079e8ff557ca9e 100644 (file)
@@ -4,6 +4,4 @@
 #define        MAN_DIR "/var/www/man"
 #define        CSS_DIR ""
 #define        CUSTOMIZE_TITLE "Manual pages with mandoc"
-#define        CUSTOMIZE_BEGIN "<H2>\nManual pages with " \
-       "<A HREF=\"http://mdocml.bsd.lv/\">mandoc</A>\n</H2>"
 #define        COMPAT_OLDURI Yes
index 80391d72cd0ad589bad94d9df93f9b75fd8f538a..2e54dbf4b81fd555325df0a4e725834d6287eafa 100644 (file)
--- a/man.cgi.8
+++ b/man.cgi.8
@@ -1,4 +1,4 @@
-.\"     $Id: man.cgi.8,v 1.12 2015/11/05 17:47:51 schwarze Exp $
+.\"     $Id: man.cgi.8,v 1.13 2015/11/05 20:55:41 schwarze Exp $
 .\"
 .\" Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
 .\"
@@ -190,14 +190,8 @@ and to be specified without a trailing slash.
 When not specified, the CSS files
 are assumed to be in the document root.
 This is used in generated HTML code.
-.It Ev CUSTOMIZE_BEGIN
-A HTML string to be inserted right after opening the
-.Aq BODY
-element.
 .It Ev CUSTOMIZE_TITLE
-An ASCII string to be used for the HTML
-.Aq TITLE
-element.
+An ASCII string to be used for the HTML <TITLE> element.
 .It Ev HTTP_HOST
 The FQDN of the (possibly virtual) host the HTTP server is running on.
 This is used for
@@ -374,6 +368,12 @@ or any character not contained in the
 .Sx Restricted character set ,
 .Nm
 reports an internal server error and exits without doing anything.
+.It Pa /man/header.html
+An optional file containing static HTML code to be inserted right
+after opening the <BODY> element.
+.It Pa /man/footer.html
+An optional file containing static HTML code to be inserted right
+before closing the <BODY> element.
 .It Pa /man/OpenBSD-current/man1/mandoc.1
 An example
 .Xr mdoc 7