aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/rman/contrib/http-rman.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/extras/rman/contrib/http-rman.c')
-rw-r--r--nx-X11/extras/rman/contrib/http-rman.c200
1 files changed, 0 insertions, 200 deletions
diff --git a/nx-X11/extras/rman/contrib/http-rman.c b/nx-X11/extras/rman/contrib/http-rman.c
deleted file mode 100644
index 687a8fc36..000000000
--- a/nx-X11/extras/rman/contrib/http-rman.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* $Id: http-rman.c,v 1.1.1.4 2004/03/14 08:29:12 eich Exp $
- *
- * Name:
- * http-rman.c -- a rudimentary man-page HTTP server
- *
- * Description:
- * This is a minimal HTTP server using RosettaMan by T.A. Phelps
- * (phelps@ACM.org) to produce hypertext renditions
- * of man-pages on the fly.
- *
- * This server processes URLs with the following syntax:
- *
- * [/man] ?<command> [ ?<section> ]
- *
- * For URLs matching this format, it pipes the output of
- * man <section> <command> through rman and sends it to
- * the HTTP client. For other URLs, it returns the document
- * given as argv[1] (using cat(1). The leading /man is
- * optional, but is strongly recommended.
- *
- * This server is shipped as two files, the http-rman.c
- * sources and the http-rman.html sample frontpage. I have
- * not included a Makefile; you can write your own or just
- * type [g]cc -o http-rman http-rman.c
- *
- * What do I need to run this:
- * If you don't have it, pick up RosettaMan by anonymous ftp
- * from ftp.cs.berkeley.edu: /ucb/people/phelps/tcl/rman.tar.Z
- *
- * You'll also need an HTTP client such as NCSA Mosaic to talk
- * to this server. Mosaic is available by anonymous FTP from
- * ftp://ftp.ncsa.uiuc.edu/Mosaic
- *
- * Both RosettaMan (rman) and Mosaic are available from many
- * other sites. Try Archie, or check your local or national net
- * archive.
- *
- * How do I get it running:
- * First, compile the server (see above), and install it
- * somewhere.
- *
- * The server runs under inetd(8). Add a service to
- * /etc/services, say:
- *
- * http-rman 4080/tcp
- *
- * If you're not about to install another HTTP server on your
- * machine, you may use the default HTTP port, 80, instead.
- *
- * Then add an entry to /etc/inetd.conf, such as (on a single line):
- *
- * http-rman stream tcp nowait root /usr/local/bin/http-rman
- * http-rman /usr/local/lib/rman/http-rman.html
- *
- * Change /usr/local/bin and /usr/local/lib/rman to where you
- * installed the two files. In addition, you may wish to run
- * the server as something other than root...
- *
- * Restart inetd(8) (use kill -HUP or kill it and start it again)
- * and try the following:
- *
- * $ Mosaic http://localhost:4080
- *
- * If you don't have Mosaic, try the following instead:
- *
- * $ telnet localhost 4080
- * Trying 127.0.0.1...
- * Connected to localhost.
- * Escape character is '^]'.
- * GET /man?ls <return>
- * <return>
- * HTTP/1.0 200 OK
- * ...
- *
- * Portability:
- * You'll need an ANSI compiler (or an editor and some patience).
- * As it stands right now, this code has been successfully
- * compiled on OSF/1 AXP using cc, and on SunOS 4.1 using gcc.
- * Might need some tuning for other platforms.
- *
- * Legal Issues:
- * Check the external visibility of the http-rman service
- * you choose. This server gives a user access to ALL man-
- * pages on your machine. You may have installed copyrighted
- * software (your operating system, for example) with
- * man-pages that you are NOT allowed to make visible for
- * anyone out there...
- *
- * History:
- * 94-04-30 fl: created
- * 94-05-13 fl: stripped away everything but rman support
- *
- * Copyright (c) Fredrik Lundh 1994 (fredrik_lundh@ivab.se)
- * All rights reserved.
- */
-
-
-#include <stdio.h> /* printf(), fflush(stdio) etc */
-#include <string.h> /* strrchr(), strcmp() etc */
-
-
-static int
-http_error(int error)
-{
- char *p;
-
- switch (error) {
- case 400:
- p = "Bad Request";
- break;
- case 404:
- p = "Not Found";
- break;
- default:
- p = "Error";
- }
- printf("HTTP/1.0 %d %s\r\n", error, p);
- printf("MIME-version: 1.0\r\n");
- printf("Content-Type: text/html\r\n\r\n");
- printf("<head><title>%d %s</title></head>\r\n", error, p);
- printf("<body><h1>%d %s</h1></body>\r\n", error, p);
- return 0;
-}
-
-
-static int
-http_rman(char *url)
-{
- char *pName;
- char *pSection;
- char buf[200];
-
- /* parse URL: should be /man?command[?section] */
- pSection = strrchr(url, '?');
- if (!pSection) {
- return -1;
- }
- pName = pSection-1;
- *pSection++ = '\0';
-
- pName = strrchr(url, '?');
- if (!pName) {
- pName = pSection;
- pSection = "";
- }
- else
- pName++;
-
- sprintf(buf, "man %s %s | rman -r \"man?%%s?%%s\" -n %s -f html",
- pSection, pName, pName);
-
- return system(buf);
-}
-
-
-int
-main(int ac, char **av)
-{
- char buf[200];
- char url[200];
- int status;
- char *sFrontpage = "/usr/local/lib/rman/http-rman.html";
-
-/* check arguments */
-
- if (ac > 1)
- sFrontpage = av[1];
-
-/* just read in one line from stdin and make sure it is a GET
-command */
-
- if (gets(buf)) {
-
- /* read rest of command (just for the sake of it) */
- while (gets(url) && url[0] != '\r')
- ;
-
- /* command should be GET <url> [HTTP/1.0] */
- if (sscanf(buf, "GET %s", url) == 1) {
-
- status = http_rman(url);
-
- if (status < 0) {
- sprintf(buf, "cat %s", sFrontpage);
- if (system(buf) == 0)
- status = 0;
- }
-
- if (status < 0)
- http_error(404);
-
- } else
-
- http_error(400);
- }
-
- fflush(stdout);
-
- exit(0);
-}