From aabcc9a1cf92b664532a1e7cb2103ad7b0a35f11 Mon Sep 17 00:00:00 2001 From: schwarze Date: Sun, 13 Jul 2014 15:38:06 +0000 Subject: [PATCH] Compatibility hack for the old "manpath=OpenBSD" query parameter format; 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 | 21 +++++++--- usr.bin/mandoc/cgi.h.example | 1 + usr.bin/mandoc/man.cgi.8 | 79 ++++++++++++++++++++++++++---------- 3 files changed, 74 insertions(+), 27 deletions(-) diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c index 6d2dba2eeea..24bcb3e795c 100644 --- a/usr.bin/mandoc/cgi.c +++ b/usr.bin/mandoc/cgi.c @@ -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 * Copyright (c) 2014 Ingo Schwarze @@ -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; diff --git a/usr.bin/mandoc/cgi.h.example b/usr.bin/mandoc/cgi.h.example index 95508defe57..4f7273b14ed 100644 --- a/usr.bin/mandoc/cgi.h.example +++ b/usr.bin/mandoc/cgi.h.example @@ -5,3 +5,4 @@ #define CUSTOMIZE_TITLE "Manual pages with mandoc" #define CUSTOMIZE_BEGIN "

\nManual pages with " \ "mandoc\n

" +#define COMPAT_OLDURI Yes diff --git a/usr.bin/mandoc/man.cgi.8 b/usr.bin/mandoc/man.cgi.8 index 6d642c06462..44ed2ffa9a6 100644 --- a/usr.bin/mandoc/man.cgi.8 +++ b/usr.bin/mandoc/man.cgi.8 @@ -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 .\" @@ -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 -- 2.20.1