Compatibility hack for the old "manpath=OpenBSD<blank>" query parameter format;
authorschwarze <schwarze@openbsd.org>
Sun, 13 Jul 2014 15:38:06 +0000 (15:38 +0000)
committerschwarze <schwarze@openbsd.org>
Sun, 13 Jul 2014 15:38:06 +0000 (15:38 +0000)
unfortunate, more than 400 links needing this are scattered all around
the www.openbsd.org website, and CVSweb needs this as well.

usr.bin/mandoc/cgi.c
usr.bin/mandoc/cgi.h.example
usr.bin/mandoc/man.cgi.8

index 6d2dba2..24bcb3e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: cgi.c,v 1.12 2014/07/13 12:55:24 schwarze Exp $ */
+/*     $Id: cgi.c,v 1.13 2014/07/13 15:38:06 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014 Ingo Schwarze <schwarze@usta.de>
@@ -246,14 +246,25 @@ http_parse(struct req *req, char *p)
 
                if (0 == strcmp(key, "query"))
                        req->q.expr = val;
-               else if (0 == strcmp(key, "manpath"))
+               else if (0 == strcmp(key, "manpath")) {
+#ifdef COMPAT_OLDURI
+                       if (0 == strncmp(val, "OpenBSD ", 8)) {
+                               val[7] = '-';
+                               if ('C' == val[8])
+                                       val[8] = 'c';
+                       }
+#endif
                        req->q.manpath = val;
-               else if (0 == strcmp(key, "apropos"))
+               else if (0 == strcmp(key, "apropos"))
                        req->q.equal = !strcmp(val, "0");
-               else if (0 == strcmp(key, "sec") ||
-                        0 == strcmp(key, "sektion")) {
+               else if (0 == strcmp(key, "sec")) {
+                       if (strcmp(val, "0"))
+                               req->q.sec = val;
+#ifdef COMPAT_OLDURI
+               } else if (0 == strcmp(key, "sektion")) {
                        if (strcmp(val, "0"))
                                req->q.sec = val;
+#endif
                } else if (0 == strcmp(key, "arch")) {
                        if (strcmp(val, "default"))
                                req->q.arch = val;
index 95508de..4f7273b 100644 (file)
@@ -5,3 +5,4 @@
 #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 6d642c0..44ed2ff 100644 (file)
@@ -1,4 +1,4 @@
-.\"     $Id: man.cgi.8,v 1.3 2014/07/13 09:58:52 schwarze Exp $
+.\"     $Id: man.cgi.8,v 1.4 2014/07/13 15:38:06 schwarze Exp $
 .\"
 .\" Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
 .\"
@@ -159,6 +159,62 @@ When using
 the
 .Xr slowcgi 8
 proxy daemon is needed to translate FastCGI requests to plain old CGI.
+.Pp
+To compile
+.Nm ,
+first copy
+.Pa cgi.h.example
+to
+.Pa cgi.h
+and edit it according to your needs.
+It contains the following compile-time definitions:
+.Bl -tag -width Ds
+.It Ev COMPAT_OLDURI
+Only useful for running on www.openbsd.org to deal with old URIs containing
+.Qq "manpath=OpenBSD "
+where the blank character has to be translated to a hyphen.
+When compiling for other sites, this definition can be deleted.
+.It Ev CSS_DIR
+An optional path to the directory containing the CSS files,
+to be specified relative to the server's document root,
+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.
+.It Ev MAN_DIR
+A path to the
+.Nm
+data directory to be used instead of
+.Pa /var/www/man ,
+relative to the web server
+.Xr chroot 2
+directory, to be specified without a trailing slash.
+This is prepended to the manpath when opening
+.Xr mandoc.db 5
+and manual page files.
+.El
+.Pp
+After editing
+.Pa cgi.h ,
+run
+.Pp
+.Dl make man.cgi
+.Pp
+and copy the files to the proper locations.
+Reading the
+.Cm installcgi
+target in the
+.Pa Makefile
+can help with that, but do not run it without carefully checking it
+because the directory layouts of web servers vary greatly.
 .Ss URI interface
 .Nm
 uniform resource identifiers are not needed for interactive use,
@@ -283,27 +339,6 @@ source file located below the
 .Dq OpenBSD-current
 manpath.
 .El
-.Sh COMPILE-TIME DEFINES
-.Bl -tag -width Ds
-.It Ev CSS_DIR
-An optional path to the directory containing the CSS files,
-to be specified relative to the server's document root,
-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 MAN_DIR
-A path to the
-.Nm
-data directory to be used instead of
-.Pa /var/www/man ,
-relative to the web server
-.Xr chroot 2
-directory, to be specified without a trailing slash.
-This is prepended to the manpath when opening
-.Xr mandoc.db 5
-and manual page files.
-.El
 .Sh COMPATIBILITY
 The
 .Nm