commit 7b11e26c3e87e349a93287f53f6c5fdae687e071 Author: Pierre R. Mai Date: Sun May 23 15:47:18 1999 +0000 Initial revision diff --git a/CLASH.system b/CLASH.system new file mode 100644 index 0000000..4acdb32 --- /dev/null +++ b/CLASH.system @@ -0,0 +1,40 @@ +;;;; -*-Mode: LISP; Package: CL-USER; Syntax: ANSI-Common-lisp -*- +;;;; CLASH --- The Common Lisp Adaptable Simple HTTP server +;;;; This is copyrighted software. See documentation for terms. +;;;; +;;;; clash.system --- CLASH system definitions for MK-DEFSYSTEM +;;;; +;;;; Checkout Tag: $Name$ +;;;; $Id$ + +(in-package :CL-USER) + +;;;; %File Description: +;;;; +;;;; +;;;; + +(defsystem "CLASH-SYS" + :source-pathname "src/sys" + :source-extension "cl" + :components + ((:file "package") + (:file "mp" :depends-on "package") + (:file "socket" :depends-on "package"))) + +(defsystem "CLASH" + :source-pathname "src" + :source-extension "cl" + :components + ((:module "base" + :source-pathname "" + :components ((:file "package"))) + (:module "main" + :source-pathname "main" + :components ((:file "url")) + :depends-on ("base")) + (:module "driver" + :source-pathname "drivers" + :components ((:file "simple.cl")) + :depends-on ("base" "main"))) + :depends-on ("CLASH-SYS")) diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..fd5a512 --- /dev/null +++ b/COPYING @@ -0,0 +1,25 @@ + Copyright (C) 1999 Pierre Mai + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of the author shall + not be used in advertising or otherwise to promote the sale, use or + other dealings in this Software without prior written authorization + from the author. diff --git a/README b/README new file mode 100644 index 0000000..21988bb --- /dev/null +++ b/README @@ -0,0 +1,55 @@ +CLASH - The Common Lisp Adaptable Simple HTTP server +==================================================== + +This package is a very simple, yet adaptable HTTP server for various +implementations of ANSI Common Lisp. Since this package was born out +of neccessity ("scratching one's own itch", as Eric Raymond put it in +[1]), it provides the following feature set, which might or might not +suit your needs: + +* CLASH is as simple as was possible to achieve the given objective of + serving static and dynamic content to various new and old clients, + as well as allowing for the creation of static snapshots of parts of + the served document tree for off-line distribution. + +* It's very adaptable, since I never knew what features would be + needed next. + +* It's as portable as possible, requiring only few changes to make it + run in other implementations capable of supporting serious HTTP + serving. + +* It's under a very unrestrictive and clear licence, mostly X-style. + There exist a number of HTTP servers for CL already, but most of + them are under licences which are quite vague, and wouldn't stand up + in court, thus putting any user under too much of a risk. Since + CLASH has been explicitly put in the public domain, this shouldn't + be a problem, minus the ever present danger of software patents. + + For information on the conditions of use and copying that come with + CLASH, see the file COPYING included in the distribution. + +If CLASH suits your needs, use it as you wish. If it doesn't, take a +look at the following packages, which might suit your needs better +(and which are quite impressive in their feature sets): + +* CL-HTTP + + This is a very impressive and comprehensive implementation of HTTP + (including HTTP/1.1), HTML and XML generation, advanced user + interfacing via the WWW, proxying, mirroring, spiders and robots and + many other things. It runs in nearly all current implementations. + See http://www.ai.mit.edu/projects/iiip/doc/cl-http/home-page.htm + +* Closure + + This is the counter-part of CL-HTTP, in that it is a GPLed web + browser. It's still being developed, and although it currently runs + only under Franz' Allegro CL (for Linux/Unix), there are plans of + porting this further. + See http://www.uni-karlsruhe.de/~unk6/closure/ + +For further information on the conditions of use and copying that come +with CLASH, see the file COPYING included in the distribution. + +For information on building and using CLASH, see doc/README. diff --git a/src/package.cl b/src/package.cl new file mode 100644 index 0000000..56b3a91 --- /dev/null +++ b/src/package.cl @@ -0,0 +1,18 @@ +;;;; CLASH --- The Common Lisp Adaptable Simple HTTP server +;;;; This is copyrighted software. See documentation for terms. +;;;; +;;;; package.cl --- Package definition for CLASH itself +;;;; +;;;; Checkout Tag: $Name$ +;;;; $Id$ + +(in-package :CL-USER) + +;;;; %File Description: +;;;; +;;;; +;;;; + +(defpackage "CLASH" + (:USE :CL :CLASH-SYS) + (:EXPORT )) diff --git a/tools/init.el b/tools/init.el new file mode 100644 index 0000000..4c586ca --- /dev/null +++ b/tools/init.el @@ -0,0 +1,65 @@ +;;;; CLASH --- The Common Lisp Adaptable Simple HTTP server +;;;; This is copyrighted software. See documentation for terms. +;;;; +;;;; init.el -- XEmacs initialisations for the CLASH project +;;;; +;;;; Checkout Tag: $Name$ +;;;; $Id$ + +;;;; %File Description: +;;;; +;;;; This pulls together several advanced functions of XEmacs to better +;;;; support working with the CLASH project and it's guidelines. +;;;; Amongst other things, it provides for automated template insertion +;;;; into new files, use of a simple transfer menu/command to switch +;;;; between corresponding files, support for CL-Test cases in *.test +;;;; files, etc. +;;;; To use this file, load it from your .emacs file. +;;;; + +;;; Mode-Map +(unless (assoc "\\.system$" auto-mode-alist) + (push '("\\.system$" . lisp-mode) auto-mode-alist)) + +;;; Mode-Defaults +(add-hook 'lisp-mode-hook + '(lambda () + (setq lisp-indent-offset 76) + (put 'with-slots 'lisp-indent-function 2) + (put 'with-accessors 'lisp-indent-function 2) + (put 'handler-case 'lisp-indent-function 1))) + +;;; Auto-insertion +;;(add-hook 'find-file-hooks 'auto-insert) +(define-auto-insert "/CLASH/.*\\.cl$" + '("Short description: " + ";;;; CLASH --- The Common Lisp Adaptable Simple HTTP server\n" + ";;;; This is copyrighted software. See documentation for terms.\n" + ";;;; \n" + ";;;; " (file-name-nondirectory (buffer-file-name)) " --- " str "\n" + ";;;; \n" + ";;;; Checkout Tag: $" "Name$\n" + ";;;; $" "Id$\n\n" + "(in-package :CLASH)\n\n" + ";;;; %File Description:\n" + ";;;; \n" + ";;;; " _ "\n" + ";;;; \n\n")) + +(define-auto-insert "/CLASH/.*\\.test$" + '(nil + ";;;; CLASH --- The Common Lisp Adaptable Simple HTTP server\n" + ";;;; This is copyrighted software. See documentation for terms.\n" + ";;;; \n" + ";;;; " (file-name-nondirectory (buffer-file-name)) " --- " + "Regression test cases for " + (replace-in-string (file-name-nondirectory (buffer-file-name)) + "\\.test$" ".cl" t) + "\n" + ";;;; \n" + ";;;; Checkout Tag: $" "Name$\n" + ";;;; $" "Id$\n\n" + ";;;; %File Description:\n" + ";;;; \n" + ";;;; " _ "\n" + ";;;; \n\n"))