summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-07-12 18:32:47 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-07-12 18:32:47 +0000
commitdc4bfc16fa380a3b20f7c13d22ac797e7c540c3a (patch)
treea029fbda5aa1738fde29ed7262c1adda91b10f73
parentaae3ab3e68edab90a23978db94cca91886c1a1f6 (diff)
downloadmandoc-dc4bfc16fa380a3b20f7c13d22ac797e7c540c3a.tar.gz
No need for run-time configuration, add minimal compile-time
configuration facilities, just two paths and two HTML strings. Show the title on all pages, not just the index page.
-rw-r--r--Makefile6
-rw-r--r--cgi.c24
-rw-r--r--cgi.h.example7
3 files changed, 19 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 11e22936..098671bc 100644
--- a/Makefile
+++ b/Makefile
@@ -65,7 +65,10 @@ INSTALL_MAN = $(INSTALL_DATA)
# the dependency on SQLite3, comment the following two lines.
DBLIB = -L/usr/local/lib -lsqlite3
DBBIN = makewhatis manpage apropos
-DBBIN += man.cgi
+
+# To build man.cgi, copy cgi.h.example to cgi.h, edit it, and
+# either enable the following line or run "make man.cgi" by hand.
+#DBBIN += man.cgi
# OpenBSD has the ohash functions in libutil.
# Comment the following line if your system doesn't.
@@ -250,6 +253,7 @@ msec.o: msec.in
roff.o: predefs.in
st.o: st.in
vol.o: vol.in
+cgi.o: cgi.h
$(LIBMAN_OBJS): libman.h
$(LIBMDOC_OBJS): libmdoc.h
diff --git a/cgi.c b/cgi.c
index 0c77e472..c414e605 100644
--- a/cgi.c
+++ b/cgi.c
@@ -33,6 +33,7 @@
#include "main.h"
#include "manpath.h"
#include "mansearch.h"
+#include "cgi.h"
/*
* A query as passed to the search function.
@@ -78,8 +79,6 @@ static void resp_search(const struct req *,
static void resp_searchform(const struct req *);
static const char *scriptname; /* CGI script name */
-static const char *mandir; /* contains all manpath directories */
-static const char *cssdir; /* css directory */
static const char *httphost; /* hostname used in the URIs */
/*
@@ -314,11 +313,11 @@ resp_begin_html(int code, const char *msg)
" TYPE=\"text/css\" media=\"all\">\n"
"<LINK REL=\"stylesheet\" HREF=\"%s/man.css\""
" TYPE=\"text/css\" media=\"all\">\n"
- "<TITLE>System Manpage Reference</TITLE>\n"
+ "<TITLE>%s</TITLE>\n"
"</HEAD>\n"
"<BODY>\n"
"<!-- Begin page content. //-->\n",
- cssdir, cssdir);
+ CSS_DIR, CSS_DIR, CUSTOMIZE_TITLE);
}
static void
@@ -334,6 +333,7 @@ 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"
@@ -391,10 +391,6 @@ resp_index(const struct req *req)
{
resp_begin_html(200, NULL);
- puts("<H1>\n"
- "Online manuals with "
- "<A HREF=\"http://mdocml.bsd.lv/\">mandoc</A>\n"
- "</H1>");
resp_searchform(req);
printf("<P>\n"
"This web interface is documented in the "
@@ -801,27 +797,21 @@ main(void)
/* Scan our run-time environment. */
- if (NULL == (mandir = getenv("MAN_DIR")))
- mandir = "/man";
-
if (NULL == (scriptname = getenv("SCRIPT_NAME")))
scriptname = "";
- if (NULL == (cssdir = getenv("CSS_DIR")))
- cssdir = "";
-
if (NULL == (httphost = getenv("HTTP_HOST")))
httphost = "localhost";
/*
- * First we change directory into the mandir so that
+ * First we change directory into the MAN_DIR so that
* subsequent scanning for manpath directories is rooted
* relative to the same position.
*/
- if (-1 == chdir(mandir)) {
+ if (-1 == chdir(MAN_DIR)) {
fprintf(stderr, "MAN_DIR: %s: %s\n",
- mandir, strerror(errno));
+ MAN_DIR, strerror(errno));
resp_error_internal();
return(EXIT_FAILURE);
}
diff --git a/cgi.h.example b/cgi.h.example
new file mode 100644
index 00000000..95508def
--- /dev/null
+++ b/cgi.h.example
@@ -0,0 +1,7 @@
+/* Example compile-time configuration file for man.cgi(8). */
+
+#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>"