source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Compatibility hack for the old "manpath=OpenBSD<blank>" query
@ 2014-07-13 15:38 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-07-13 15:38 UTC (permalink / raw)
  To: source

Log Message:
-----------
Compatibility hack for the old "manpath=OpenBSD<blank>" 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.

Modified Files:
--------------
    mdocml:
        cgi.c
        cgi.h.example
        man.cgi.8

Revision Data
-------------
Index: man.cgi.8
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man.cgi.8,v
retrieving revision 1.5
retrieving revision 1.6
diff -Lman.cgi.8 -Lman.cgi.8 -u -p -r1.5 -r1.6
--- man.cgi.8
+++ man.cgi.8
@@ -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,
@@ -282,27 +338,6 @@ An example
 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
Index: cgi.h.example
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.h.example,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lcgi.h.example -Lcgi.h.example -u -p -r1.1 -r1.2
--- cgi.h.example
+++ cgi.h.example
@@ -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: cgi.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -Lcgi.c -Lcgi.c -u -p -r1.72 -r1.73
--- cgi.c
+++ cgi.c
@@ -250,14 +250,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;
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-07-13 15:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-13 15:38 mdocml: Compatibility hack for the old "manpath=OpenBSD<blank>" query schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).