| ofs | hex dump | ascii |
|---|
| 0000 | 73 69 6d 70 6c 65 2d 68 74 74 70 64 2d 32 30 32 33 30 38 32 31 2e 31 34 35 38 2f 00 00 00 00 00 | simple-httpd-20230821.1458/..... |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 |
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 34 32 36 00 20 35 00 00 00 | 0000000.00000000000.013426..5... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 73 69 6d 70 6c 65 2d 68 74 74 70 64 2d 32 30 32 33 30 38 32 31 2e 31 34 35 38 2f 73 69 6d 70 6c | simple-httpd-20230821.1458/simpl |
| 0220 | 65 2d 68 74 74 70 64 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | e-httpd.el...................... |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 0280 | 30 31 30 30 37 34 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 33 36 37 00 20 30 00 00 00 | 0100743.00000000000.016367..0... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 3b 3b 3b 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 2e 65 6c 20 2d 2d 2d 20 70 75 72 65 20 65 6c 69 | ;;;.simple-httpd.el.---.pure.eli |
| 0420 | 73 70 20 48 54 54 50 20 73 65 72 76 65 72 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 20 | sp.HTTP.server..;;.This.is.free. |
| 0440 | 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 73 | and.unencumbered.software.releas |
| 0460 | 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 | ed.into.the.public.domain...;;.A |
| 0480 | 75 74 68 6f 72 3a 20 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 20 3c 77 65 6c 6c | uthor:.Christopher.Wellons.<well |
| 04a0 | 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 55 52 4c 3a 20 68 74 74 | ons@nullprogram.com>.;;.URL:.htt |
| 04c0 | 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f 65 6d 61 63 73 2d 68 74 74 | ps://github.com/skeeto/emacs-htt |
| 04e0 | 70 2d 73 65 72 76 65 72 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 31 2e 35 2e 31 0a 3b 3b 20 50 61 | p-server.;;.Version:.1.5.1.;;.Pa |
| 0500 | 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 63 6c 2d 6c 69 62 20 22 30 2e 33 22 29 29 | ckage-Requires:.((cl-lib."0.3")) |
| 0520 | 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 55 73 65 20 60 68 74 74 70 64 | ..;;;.Commentary:..;;.Use.`httpd |
| 0540 | 2d 73 74 61 72 74 27 20 74 6f 20 73 74 61 72 74 20 74 68 65 20 77 65 62 20 73 65 72 76 65 72 2e | -start'.to.start.the.web.server. |
| 0560 | 20 46 69 6c 65 73 20 61 72 65 20 73 65 72 76 65 64 20 66 72 6f 6d 0a 3b 3b 20 60 68 74 74 70 64 | .Files.are.served.from.;;.`httpd |
| 0580 | 2d 72 6f 6f 74 27 20 6f 6e 20 70 6f 72 74 20 60 68 74 74 70 64 2d 70 6f 72 74 27 20 75 73 69 6e | -root'.on.port.`httpd-port'.usin |
| 05a0 | 67 20 60 68 74 74 70 64 2d 69 70 2d 66 61 6d 69 6c 79 27 20 61 74 20 68 6f 73 74 0a 3b 3b 20 60 | g.`httpd-ip-family'.at.host.;;.` |
| 05c0 | 68 74 74 70 64 2d 68 6f 73 74 27 2e 20 57 68 69 6c 65 20 74 68 65 20 72 6f 6f 74 20 63 61 6e 20 | httpd-host'..While.the.root.can. |
| 05e0 | 62 65 20 63 68 61 6e 67 65 64 20 61 74 20 61 6e 79 20 74 69 6d 65 2c 20 74 68 65 20 73 65 72 76 | be.changed.at.any.time,.the.serv |
| 0600 | 65 72 0a 3b 3b 20 6e 65 65 64 73 20 74 6f 20 62 65 20 72 65 73 74 61 72 74 65 64 20 69 6e 20 6f | er.;;.needs.to.be.restarted.in.o |
| 0620 | 72 64 65 72 20 66 6f 72 20 61 20 70 6f 72 74 20 63 68 61 6e 67 65 20 74 6f 20 74 61 6b 65 20 65 | rder.for.a.port.change.to.take.e |
| 0640 | 66 66 65 63 74 2e 0a 0a 3b 3b 20 45 76 65 72 79 74 68 69 6e 67 20 69 73 20 70 65 72 66 6f 72 6d | ffect...;;.Everything.is.perform |
| 0660 | 65 64 20 62 79 20 73 65 72 76 6c 65 74 73 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 65 72 76 69 6e | ed.by.servlets,.including.servin |
| 0680 | 67 0a 3b 3b 20 66 69 6c 65 73 2e 20 53 65 72 76 6c 65 74 73 20 61 72 65 20 65 6e 61 62 6c 65 64 | g.;;.files..Servlets.are.enabled |
| 06a0 | 20 62 79 20 73 65 74 74 69 6e 67 20 60 68 74 74 70 64 2d 73 65 72 76 6c 65 74 73 27 20 74 6f 20 | .by.setting.`httpd-servlets'.to. |
| 06c0 | 74 72 75 65 0a 3b 3b 20 28 64 65 66 61 75 6c 74 29 2e 20 53 65 72 76 6c 65 74 73 20 61 72 65 20 | true.;;.(default)..Servlets.are. |
| 06e0 | 66 6f 75 72 2d 70 61 72 61 6d 65 74 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 62 65 | four-parameter.functions.that.be |
| 0700 | 67 69 6e 20 77 69 74 68 0a 3b 3b 20 22 68 74 74 70 64 2f 22 20 77 68 65 72 65 20 74 68 65 20 74 | gin.with.;;."httpd/".where.the.t |
| 0720 | 72 61 69 6c 69 6e 67 20 63 6f 6d 70 6f 6e 65 6e 74 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 | railing.component.specifies.the. |
| 0740 | 69 6e 69 74 69 61 6c 20 70 61 74 68 20 6f 6e 0a 3b 3b 20 74 68 65 20 73 65 72 76 65 72 2e 20 46 | initial.path.on.;;.the.server..F |
| 0760 | 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 68 74 74 70 64 2f | or.example,.the.function.`httpd/ |
| 0780 | 68 65 6c 6c 6f 2d 77 6f 72 6c 64 27 20 77 69 6c 6c 20 62 65 0a 3b 3b 20 63 61 6c 6c 65 64 20 66 | hello-world'.will.be.;;.called.f |
| 07a0 | 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 20 22 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 22 20 61 6e | or.the.request."/hello-world".an |
| 07c0 | 64 20 22 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 2f 66 6f 6f 22 2e 0a 0a 3b 3b 20 54 68 65 20 64 65 | d."/hello-world/foo"...;;.The.de |
| 07e0 | 66 61 75 6c 74 20 73 65 72 76 6c 65 74 20 60 68 74 74 70 64 2f 27 20 69 73 20 74 68 65 20 6f 6e | fault.servlet.`httpd/'.is.the.on |
| 0800 | 65 20 74 68 61 74 20 73 65 72 76 65 73 20 66 69 6c 65 73 20 66 72 6f 6d 0a 3b 3b 20 60 68 74 74 | e.that.serves.files.from.;;.`htt |
| 0820 | 70 64 2d 72 6f 6f 74 27 20 61 6e 64 20 63 61 6e 20 62 65 20 74 75 72 6e 65 64 20 6f 66 66 20 74 | pd-root'.and.can.be.turned.off.t |
| 0840 | 68 72 6f 75 67 68 20 72 65 64 65 66 69 6e 69 74 69 6f 6e 20 6f 72 20 73 65 74 74 69 6e 67 0a 3b | hrough.redefinition.or.setting.; |
| 0860 | 3b 20 60 68 74 74 70 64 2d 73 65 72 76 65 2d 66 69 6c 65 73 27 20 74 6f 20 6e 69 6c 2e 20 49 74 | ;.`httpd-serve-files'.to.nil..It |
| 0880 | 20 69 73 20 75 73 65 64 20 65 76 65 6e 20 77 68 65 6e 20 60 68 74 74 70 64 2d 73 65 72 76 6c 65 | .is.used.even.when.`httpd-servle |
| 08a0 | 74 73 27 0a 3b 3b 20 69 73 20 6e 69 6c 2e 0a 0a 3b 3b 20 54 68 65 20 66 6f 75 72 20 70 61 72 61 | ts'.;;.is.nil...;;.The.four.para |
| 08c0 | 6d 65 74 65 72 73 20 66 6f 72 20 61 20 73 65 72 76 6c 65 74 20 61 72 65 20 70 72 6f 63 65 73 73 | meters.for.a.servlet.are.process |
| 08e0 | 2c 20 55 52 49 20 70 61 74 68 2c 20 47 45 54 2f 50 4f 53 54 0a 3b 3b 20 61 72 67 75 6d 65 6e 74 | ,.URI.path,.GET/POST.;;.argument |
| 0900 | 73 20 28 61 6c 69 73 74 29 2c 20 61 6e 64 20 74 68 65 20 66 75 6c 6c 20 72 65 71 75 65 73 74 20 | s.(alist),.and.the.full.request. |
| 0920 | 6f 62 6a 65 63 74 20 28 68 65 61 64 65 72 0a 3b 3b 20 61 6c 69 73 74 29 2e 20 54 68 65 73 65 20 | object.(header.;;.alist)..These. |
| 0940 | 61 72 65 20 6f 72 64 65 72 65 64 20 62 79 20 67 65 6e 65 72 61 6c 20 69 6d 70 6f 72 74 61 6e 63 | are.ordered.by.general.importanc |
| 0960 | 65 20 73 6f 20 74 68 61 74 20 73 6f 6d 65 20 63 61 6e 20 62 65 0a 3b 3b 20 69 67 6e 6f 72 65 64 | e.so.that.some.can.be.;;.ignored |
| 0980 | 2e 20 54 77 6f 20 6d 61 63 72 6f 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20 68 65 6c | ..Two.macros.are.provided.to.hel |
| 09a0 | 70 20 77 69 74 68 20 77 72 69 74 69 6e 67 20 73 65 72 76 6c 65 74 73 2e 0a 0a 3b 3b 20 20 2a 20 | p.with.writing.servlets...;;..*. |
| 09c0 | 60 77 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 27 20 2d 2d 20 43 72 65 61 74 65 73 20 61 | `with-httpd-buffer'.--.Creates.a |
| 09e0 | 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 74 68 61 74 20 69 73 0a 3b 3b 20 20 20 20 | .temporary.buffer.that.is.;;.... |
| 0a00 | 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72 76 65 64 20 74 6f 20 74 68 65 20 63 6c 69 65 | automatically.served.to.the.clie |
| 0a20 | 6e 74 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 6f 64 79 2e 0a 3b 3b 20 20 20 | nt.at.the.end.of.the.body..;;... |
| 0a40 | 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 27 | .Additionally,.`standard-output' |
| 0a60 | 20 69 73 20 73 65 74 20 74 6f 20 74 68 69 73 20 6f 75 74 70 75 74 0a 3b 3b 20 20 20 20 62 75 66 | .is.set.to.this.output.;;....buf |
| 0a80 | 66 65 72 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 69 73 20 73 65 72 76 6c 65 74 20 73 | fer..For.example,.this.servlet.s |
| 0aa0 | 61 79 73 20 68 65 6c 6c 6f 2c 0a 0a 3b 3b 20 20 20 20 20 28 64 65 66 75 6e 20 68 74 74 70 64 2f | ays.hello,..;;.....(defun.httpd/ |
| 0ac0 | 68 65 6c 6c 6f 2d 77 6f 72 6c 64 20 28 70 72 6f 63 20 70 61 74 68 20 26 72 65 73 74 20 61 72 67 | hello-world.(proc.path.&rest.arg |
| 0ae0 | 73 29 0a 3b 3b 20 20 20 20 20 20 20 28 77 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 20 70 | s).;;.......(with-httpd-buffer.p |
| 0b00 | 72 6f 63 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 0a 3b 3b 20 20 20 20 20 20 20 20 20 28 69 6e 73 | roc."text/plain".;;.........(ins |
| 0b20 | 65 72 74 20 22 68 65 6c 6c 6f 2c 20 22 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 | ert."hello,.".(file-name-nondire |
| 0b40 | 63 74 6f 72 79 20 70 61 74 68 29 29 29 29 0a 0a 3b 3b 20 54 68 69 73 20 73 65 72 76 6c 65 74 20 | ctory.path))))..;;.This.servlet. |
| 0b60 | 62 65 20 76 69 65 77 65 64 20 61 74 20 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 | be.viewed.at.http://localhost:80 |
| 0b80 | 38 30 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 2f 45 6d 61 63 73 0a 0a 3b 3b 20 2a 20 60 64 65 66 73 | 80/hello-world/Emacs..;;.*.`defs |
| 0ba0 | 65 72 76 6c 65 74 27 20 2d 2d 20 53 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 20 61 62 6f 76 65 20 | ervlet'.--.Similar.to.the.above. |
| 0bc0 | 6d 61 63 72 6f 20 62 75 74 20 74 6f 74 61 6c 6c 79 20 68 69 64 65 73 20 74 68 65 0a 3b 3b 20 20 | macro.but.totally.hides.the.;;.. |
| 0be0 | 20 70 72 6f 63 65 73 73 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 73 65 72 76 6c 65 74 | .process.object.from.the.servlet |
| 0c00 | 20 69 74 73 65 6c 66 2e 20 54 68 65 20 61 62 6f 76 65 20 73 65 72 76 6c 65 74 20 63 61 6e 20 62 | .itself..The.above.servlet.can.b |
| 0c20 | 65 0a 3b 3b 20 20 20 72 65 2d 77 72 69 74 74 65 6e 20 69 64 65 6e 74 69 63 61 6c 6c 79 20 6c 69 | e.;;...re-written.identically.li |
| 0c40 | 6b 65 20 73 6f 2c 0a 0a 3b 3b 20 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 20 68 65 6c 6c 6f | ke.so,..;;.....(defservlet.hello |
| 0c60 | 2d 77 6f 72 6c 64 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 70 61 74 68 29 0a 3b 3b 20 20 20 20 20 | -world.text/plain.(path).;;..... |
| 0c80 | 20 20 28 69 6e 73 65 72 74 20 22 68 65 6c 6c 6f 2c 20 22 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e | ..(insert."hello,.".(file-name-n |
| 0ca0 | 6f 6e 64 69 72 65 63 74 6f 72 79 20 70 61 74 68 29 29 29 0a 0a 3b 3b 20 4e 6f 74 65 20 74 68 61 | ondirectory.path)))..;;.Note.tha |
| 0cc0 | 74 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 74 | t.`defservlet'.automatically.set |
| 0ce0 | 73 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 2e 20 53 65 65 0a 3b 3b 20 62 | s.`httpd-current-proc'..See.;;.b |
| 0d00 | 65 6c 6f 77 2e 0a 0a 3b 3b 20 54 68 65 20 22 66 75 6e 63 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 | elow...;;.The."function.paramete |
| 0d20 | 72 73 22 20 70 61 72 74 20 63 61 6e 20 62 65 20 6c 65 66 74 20 65 6d 70 74 79 20 6f 72 20 63 6f | rs".part.can.be.left.empty.or.co |
| 0d40 | 6e 74 61 69 6e 20 75 70 20 74 6f 0a 3b 3b 20 74 68 72 65 65 20 70 61 72 61 6d 65 74 65 72 73 20 | ntain.up.to.;;.three.parameters. |
| 0d60 | 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 66 69 6e 61 6c 20 74 68 72 65 65 | corresponding.to.the.final.three |
| 0d80 | 20 73 65 72 76 6c 65 74 0a 3b 3b 20 70 61 72 61 6d 65 74 65 72 73 2e 20 46 6f 72 20 65 78 61 6d | .servlet.;;.parameters..For.exam |
| 0da0 | 70 6c 65 2c 20 61 20 73 65 72 76 6c 65 74 20 74 68 61 74 20 73 68 6f 77 73 20 2a 73 63 72 61 74 | ple,.a.servlet.that.shows.*scrat |
| 0dc0 | 63 68 2a 20 61 6e 64 20 64 6f 65 73 6e 27 74 0a 3b 3b 20 6e 65 65 64 20 70 61 72 61 6d 65 74 65 | ch*.and.doesn't.;;.need.paramete |
| 0de0 | 72 73 2c 0a 0a 3b 3b 20 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 20 73 63 72 61 74 63 68 20 | rs,..;;.....(defservlet.scratch. |
| 0e00 | 74 65 78 74 2f 70 6c 61 69 6e 20 28 29 0a 3b 3b 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 | text/plain.().;;.......(insert-b |
| 0e20 | 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 | uffer-substring.(get-buffer-crea |
| 0e40 | 74 65 20 22 2a 73 63 72 61 74 63 68 2a 22 29 29 29 0a 0a 3b 3b 20 41 20 68 69 67 68 65 72 20 6c | te."*scratch*")))..;;.A.higher.l |
| 0e60 | 65 76 65 6c 20 6d 61 63 72 6f 20 60 64 65 66 73 65 72 76 6c 65 74 2a 27 20 77 72 61 70 73 20 74 | evel.macro.`defservlet*'.wraps.t |
| 0e80 | 68 69 73 20 6c 6f 77 65 72 2d 6c 65 76 65 6c 0a 3b 3b 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 | his.lower-level.;;.`defservlet'. |
| 0ea0 | 6d 61 63 72 6f 2c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 69 6e 67 20 76 61 72 | macro,.automatically.binding.var |
| 0ec0 | 69 61 62 6c 65 73 20 74 6f 20 63 6f 6d 70 6f 6e 65 6e 74 73 0a 3b 3b 20 6f 66 20 74 68 65 20 72 | iables.to.components.;;.of.the.r |
| 0ee0 | 65 71 75 65 73 74 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 69 73 20 62 69 6e 64 73 20 | equest..For.example,.this.binds. |
| 0f00 | 70 61 72 74 73 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 20 70 61 74 68 0a 3b 3b 20 61 6e 64 | parts.of.the.request.path.;;.and |
| 0f20 | 20 6f 6e 65 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 20 52 65 71 75 65 73 74 20 63 6f | .one.query.parameter..Request.co |
| 0f40 | 6d 70 6f 6e 65 6e 74 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0a 3b 3b 20 | mponents.not.provided.by.the.;;. |
| 0f60 | 63 6c 69 65 6e 74 20 61 72 65 20 62 6f 75 6e 64 20 74 6f 20 6e 69 6c 2e 0a 0a 3b 3b 20 20 20 20 | client.are.bound.to.nil...;;.... |
| 0f80 | 20 28 64 65 66 73 65 72 76 6c 65 74 2a 20 70 61 63 6b 61 67 65 73 2f 3a 70 61 63 6b 61 67 65 2f | .(defservlet*.packages/:package/ |
| 0fa0 | 3a 76 65 72 73 69 6f 6e 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 76 65 72 62 6f 73 65 29 0a 3b 3b | :version.text/plain.(verbose).;; |
| 0fc0 | 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73 5c 6e 25 73 5c 6e | .......(insert.(format."%s\n%s\n |
| 0fe0 | 22 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 0a 3b 3b 20 20 20 20 20 20 20 28 70 72 | ".package.version)).;;.......(pr |
| 1000 | 69 6e 63 20 28 67 65 74 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 70 61 63 6b 61 67 65 20 76 65 72 | inc.(get-description.package.ver |
| 1020 | 73 69 6f 6e 29 29 0a 3b 3b 20 20 20 20 20 20 20 28 77 68 65 6e 20 76 65 72 62 6f 73 65 0a 3b 3b | sion)).;;.......(when.verbose.;; |
| 1040 | 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 53 22 20 28 67 | .........(insert.(format."%S".(g |
| 1060 | 65 74 2d 64 65 70 65 6e 64 65 6e 63 69 65 73 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 | et-dependencies.package.version) |
| 1080 | 29 29 29 29 0a 0a 3b 3b 20 49 74 20 77 6f 75 6c 64 20 62 65 20 61 63 63 65 73 73 65 64 20 6c 69 | ))))..;;.It.would.be.accessed.li |
| 10a0 | 6b 65 20 73 6f 2c 0a 0a 3b 3b 20 20 20 20 20 68 74 74 70 3a 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f | ke.so,..;;.....http://example.co |
| 10c0 | 6d 2f 70 61 63 6b 61 67 65 73 2f 66 6f 6f 62 61 72 2f 31 2e 30 3f 76 65 72 62 6f 73 65 3d 31 0a | m/packages/foobar/1.0?verbose=1. |
| 10e0 | 0a 3b 3b 20 53 6f 6d 65 20 73 75 70 70 6f 72 74 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 | .;;.Some.support.functions.are.a |
| 1100 | 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 73 65 72 76 6c 65 74 73 20 66 6f 72 20 6d 6f 72 65 0a 3b | vailable.for.servlets.for.more.; |
| 1120 | 3b 20 63 75 73 74 6f 6d 69 7a 65 64 20 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 3b 3b 20 20 20 2a 20 | ;.customized.responses...;;...*. |
| 1140 | 60 68 74 74 70 64 2d 73 65 6e 64 2d 66 69 6c 65 27 20 20 20 2d 2d 20 73 65 72 76 65 20 61 20 66 | `httpd-send-file'...--.serve.a.f |
| 1160 | 69 6c 65 20 77 69 74 68 20 70 72 6f 70 65 72 20 63 61 63 68 69 6e 67 0a 3b 3b 20 20 20 2a 20 60 | ile.with.proper.caching.;;...*.` |
| 1180 | 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 27 20 20 20 20 2d 2d 20 72 65 64 69 72 65 63 74 20 74 | httpd-redirect'....--.redirect.t |
| 11a0 | 68 65 20 62 72 6f 77 73 65 72 20 74 6f 20 61 6e 6f 74 68 65 72 20 75 72 6c 0a 3b 3b 20 20 20 2a | he.browser.to.another.url.;;...* |
| 11c0 | 20 60 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 27 20 2d 2d 20 73 65 6e 64 20 63 75 73 | .`httpd-send-header'.--.send.cus |
| 11e0 | 74 6f 6d 20 68 65 61 64 65 72 73 0a 3b 3b 20 20 20 2a 20 60 68 74 74 70 64 2d 65 72 72 6f 72 27 | tom.headers.;;...*.`httpd-error' |
| 1200 | 20 20 20 20 20 20 20 2d 2d 20 72 65 70 6f 72 74 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 74 68 65 | .......--.report.an.error.to.the |
| 1220 | 20 63 6c 69 65 6e 74 0a 3b 3b 20 20 20 2a 20 60 68 74 74 70 64 2d 6c 6f 67 27 20 20 20 20 20 20 | .client.;;...*.`httpd-log'...... |
| 1240 | 20 20 20 2d 2d 20 6c 6f 67 20 61 6e 20 6f 62 6a 65 63 74 20 74 6f 20 2a 68 74 74 70 64 2a 0a 0a | ...--.log.an.object.to.*httpd*.. |
| 1260 | 3b 3b 20 53 6f 6d 65 20 6f 66 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 71 75 69 | ;;.Some.of.these.functions.requi |
| 1280 | 72 65 20 61 20 70 72 6f 63 65 73 73 20 6f 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 6e 27 74 | re.a.process.object,.which.isn't |
| 12a0 | 0a 3b 3b 20 70 61 73 73 65 64 20 74 6f 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 73 65 72 76 6c | .;;.passed.to.`defservlet'.servl |
| 12c0 | 65 74 73 2e 20 55 73 65 20 74 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 70 72 6f 63 65 | ets..Use.t.in.place.of.the.proce |
| 12e0 | 73 73 0a 3b 3b 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 75 73 65 20 60 68 74 74 70 64 2d 63 75 72 | ss.;;.argument.to.use.`httpd-cur |
| 1300 | 72 65 6e 74 2d 70 72 6f 63 27 20 28 6c 69 6b 65 20 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 | rent-proc'.(like.`standard-outpu |
| 1320 | 74 27 29 2e 0a 0a 3b 3b 20 49 66 20 79 6f 75 20 6a 75 73 74 20 6e 65 65 64 20 74 6f 20 73 65 72 | t')...;;.If.you.just.need.to.ser |
| 1340 | 76 65 20 73 74 61 74 69 63 20 66 72 6f 6d 20 73 6f 6d 65 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 64 | ve.static.from.some.location.und |
| 1360 | 65 72 20 73 6f 6d 65 0a 3b 3b 20 72 6f 75 74 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 2c 20 | er.some.;;.route.on.the.server,. |
| 1380 | 75 73 65 20 60 68 74 74 70 64 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 27 2e 20 49 74 | use.`httpd-def-file-servlet'..It |
| 13a0 | 20 65 78 70 61 6e 64 73 20 69 6e 74 6f 0a 3b 3b 20 61 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 | .expands.into.;;.a.`defservlet'. |
| 13c0 | 74 68 61 74 20 73 65 72 76 65 73 20 66 69 6c 65 73 2e 0a 0a 3b 3b 3b 20 48 69 73 74 6f 72 79 3a | that.serves.files...;;;.History: |
| 13e0 | 0a 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 35 2e 31 3a 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 | ..;;.Version.1.5.1:.improvements |
| 1400 | 0a 3b 3b 20 20 20 2a 20 41 64 64 20 60 68 74 74 70 64 2d 72 75 6e 6e 69 6e 67 2d 70 27 0a 3b 3b | .;;...*.Add.`httpd-running-p'.;; |
| 1420 | 20 20 20 2a 20 50 72 6f 70 65 72 6c 79 20 68 61 6e 64 6c 65 20 22 43 6f 6e 6e 65 63 74 69 6f 6e | ...*.Properly.handle."Connection |
| 1440 | 3a 20 63 6c 6f 73 65 22 20 61 6e 64 20 48 54 54 50 2f 31 2e 30 0a 3b 3b 20 56 65 72 73 69 6f 6e | :.close".and.HTTP/1.0.;;.Version |
| 1460 | 20 31 2e 35 2e 30 3a 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 0a 3b 3b 20 20 20 2a 20 44 72 61 73 | .1.5.0:.improvements.;;...*.Dras |
| 1480 | 74 69 63 61 6c 6c 79 20 69 6d 70 72 6f 76 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 66 6f 72 | tically.improved.performance.for |
| 14a0 | 20 6c 61 72 67 65 20 72 65 71 75 65 73 74 73 0a 3b 3b 20 20 20 2a 20 4d 6f 72 65 20 48 54 54 50 | .large.requests.;;...*.More.HTTP |
| 14c0 | 20 73 74 61 74 75 73 20 63 6f 64 65 73 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 36 3a 20 | .status.codes.;;.Version.1.4.6:. |
| 14e0 | 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 41 64 64 65 64 20 68 74 74 70 64 2d 73 65 72 76 65 2d 64 | fixes.;;...*.Added.httpd-serve-d |
| 1500 | 69 72 65 63 74 6f 72 79 0a 3b 3b 20 20 20 2a 20 46 69 78 20 73 6f 6d 65 20 65 6e 63 6f 64 69 6e | irectory.;;...*.Fix.some.encodin |
| 1520 | 67 20 69 73 73 75 65 73 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 35 3a 20 66 69 78 65 73 | g.issues.;;.Version.1.4.5:.fixes |
| 1540 | 0a 3b 3b 20 20 20 2a 20 55 70 64 61 74 65 20 74 6f 20 63 6c 2d 6c 69 62 20 66 72 6f 6d 20 63 6c | .;;...*.Update.to.cl-lib.from.cl |
| 1560 | 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 34 3a 20 66 65 61 74 75 72 65 73 0a 3b 3b 20 20 | .;;.Version.1.4.4:.features.;;.. |
| 1580 | 20 2a 20 43 6f 6d 6d 6f 6e 20 4c 69 73 70 20 26 6b 65 79 2d 6c 69 6b 65 20 64 65 66 73 65 72 76 | .*.Common.Lisp.&key-like.defserv |
| 15a0 | 6c 65 74 2a 20 61 72 67 75 6d 65 6e 74 20 73 75 70 70 6f 72 74 0a 3b 3b 20 20 20 2a 20 46 69 78 | let*.argument.support.;;...*.Fix |
| 15c0 | 20 75 70 20 73 6f 6d 65 20 64 65 66 73 65 72 76 6c 65 74 2a 20 75 73 61 67 65 20 77 61 72 6e 69 | .up.some.defservlet*.usage.warni |
| 15e0 | 6e 67 73 2e 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 33 3a 20 66 65 61 74 75 72 65 73 0a | ngs..;;.Version.1.4.3:.features. |
| 1600 | 3b 3b 20 20 20 2a 20 41 64 64 20 60 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 | ;;...*.Add.`httpd-discard-buffer |
| 1620 | 27 0a 3b 3b 20 20 20 2a 20 41 64 64 20 60 68 74 74 70 64 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 | '.;;...*.Add.`httpd-def-file-ser |
| 1640 | 76 6c 65 74 27 0a 3b 3b 20 20 20 2a 20 42 65 20 6d 6f 72 65 20 63 61 72 65 66 75 6c 20 61 62 6f | vlet'.;;...*.Be.more.careful.abo |
| 1660 | 75 74 20 6e 6f 74 20 73 65 6e 64 69 6e 67 20 65 78 74 72 61 20 68 65 61 64 65 72 73 0a 3b 3b 20 | ut.not.sending.extra.headers.;;. |
| 1680 | 56 65 72 73 69 6f 6e 20 31 2e 34 2e 32 3a 20 66 65 61 74 75 72 65 73 2c 20 66 69 78 65 73 0a 3b | Version.1.4.2:.features,.fixes.; |
| 16a0 | 3b 20 20 20 2a 20 60 64 65 66 73 65 72 76 6c 65 74 2a 27 20 6d 61 63 72 6f 0a 3b 3b 20 56 65 72 | ;...*.`defservlet*'.macro.;;.Ver |
| 16c0 | 73 69 6f 6e 20 31 2e 34 2e 31 3a 20 73 6d 61 6c 6c 20 62 75 67 20 66 69 78 65 73 2c 20 6f 6e 65 | sion.1.4.1:.small.bug.fixes,.one |
| 16e0 | 20 66 65 61 74 75 72 65 0a 3b 3b 20 20 20 2a 20 41 6c 6c 20 6d 69 6d 65 2d 74 79 70 65 20 70 61 | .feature.;;...*.All.mime-type.pa |
| 1700 | 72 61 6d 65 74 65 72 73 20 6e 6f 77 20 61 63 63 65 70 74 20 73 74 72 69 6e 67 20 64 65 73 69 67 | rameters.now.accept.string.desig |
| 1720 | 6e 61 74 6f 72 73 0a 3b 3b 20 20 20 2a 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 75 70 64 61 | nators.;;...*.Documentation.upda |
| 1740 | 74 65 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 30 3a 20 66 65 61 74 75 72 65 73 2c 20 41 | te.;;.Version.1.4.0:.features,.A |
| 1760 | 50 49 20 63 68 61 6e 67 65 2c 20 61 6e 64 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 52 65 6d 6f | PI.change,.and.fixes.;;...*.Remo |
| 1780 | 76 65 64 20 68 74 74 70 64 2d 73 65 6e 64 2d 62 75 66 66 65 72 3b 20 68 74 74 70 64 2d 73 65 6e | ved.httpd-send-buffer;.httpd-sen |
| 17a0 | 64 2d 68 65 61 64 65 72 20 6e 6f 77 20 64 6f 65 73 20 74 68 69 73 20 69 6d 70 6c 69 63 69 74 6c | d-header.now.does.this.implicitl |
| 17c0 | 79 0a 3b 3b 20 20 20 2a 20 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 6e 6f 77 20 61 | y.;;...*.httpd-send-header.now.a |
| 17e0 | 63 63 65 70 74 73 20 6b 65 79 77 6f 72 64 73 20 69 6e 73 74 65 61 64 0a 3b 3b 20 20 20 2a 20 46 | ccepts.keywords.instead.;;...*.F |
| 1800 | 69 78 20 68 74 74 70 64 2d 63 6c 65 61 6e 2d 70 61 74 68 20 69 6e 20 57 69 6e 64 6f 77 73 0a 3b | ix.httpd-clean-path.in.Windows.; |
| 1820 | 3b 20 20 20 2a 20 46 69 78 20 61 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 62 75 67 0a 3b | ;...*.Fix.a.content-length.bug.; |
| 1840 | 3b 20 20 20 2a 20 64 65 66 73 65 72 76 6c 65 74 20 66 6f 6e 74 69 66 69 63 61 74 69 6f 6e 0a 3b | ;...*.defservlet.fontification.; |
| 1860 | 3b 20 56 65 72 73 69 6f 6e 20 31 2e 33 2e 31 3a 20 66 65 61 74 75 72 65 73 20 61 6e 64 20 66 69 | ;.Version.1.3.1:.features.and.fi |
| 1880 | 78 65 73 0a 3b 3b 20 20 20 2a 20 53 65 74 20 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 27 | xes.;;...*.Set.`standard-output' |
| 18a0 | 20 69 6e 20 60 77 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 27 0a 3b 3b 20 56 65 72 73 69 | .in.`with-httpd-buffer'.;;.Versi |
| 18c0 | 6f 6e 20 31 2e 33 2e 30 3a 20 73 65 63 75 72 69 74 79 20 66 69 78 0a 3b 3b 20 20 20 2a 20 46 69 | on.1.3.0:.security.fix.;;...*.Fi |
| 18e0 | 78 20 70 61 74 68 20 65 78 70 61 6e 73 69 6f 6e 20 73 65 63 75 72 69 74 79 20 69 73 73 75 65 0a | x.path.expansion.security.issue. |
| 1900 | 3b 3b 20 20 20 2a 20 46 69 78 20 63 6f 64 69 6e 67 20 73 79 73 74 65 6d 20 28 64 6f 6e 27 74 20 | ;;...*.Fix.coding.system.(don't. |
| 1920 | 64 65 66 61 75 6c 74 29 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 32 2e 34 3a 20 66 69 78 65 73 | default).;;.Version.1.2.4:.fixes |
| 1940 | 0a 3b 3b 20 20 20 2a 20 48 61 6e 64 6c 65 20 6c 61 72 67 65 20 50 4f 53 54 73 0a 3b 3b 20 20 20 | .;;...*.Handle.large.POSTs.;;... |
| 1960 | 2a 20 46 69 78 20 64 61 74 65 20 73 74 72 69 6e 67 73 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 | *.Fix.date.strings..;;;.Code:..( |
| 1980 | 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 70 70 29 0a 28 | require.'cl-lib).(require.'pp).( |
| 19a0 | 72 65 71 75 69 72 65 20 27 75 72 6c 2d 75 74 69 6c 29 0a 0a 28 64 65 66 67 72 6f 75 70 20 73 69 | require.'url-util)..(defgroup.si |
| 19c0 | 6d 70 6c 65 2d 68 74 74 70 64 20 6e 69 6c 0a 20 20 22 41 20 73 69 6d 70 6c 65 20 77 65 62 20 73 | mple-httpd.nil..."A.simple.web.s |
| 19e0 | 65 72 76 65 72 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 63 6f 6d 6d 29 0a 0a 28 64 65 66 63 75 73 | erver."...:group.'comm)..(defcus |
| 1a00 | 74 6f 6d 20 68 74 74 70 64 2d 69 70 2d 66 61 6d 69 6c 79 20 27 69 70 76 34 0a 20 20 22 57 65 62 | tom.httpd-ip-family.'ipv4..."Web |
| 1a20 | 20 73 65 72 76 65 72 20 49 50 20 66 61 6d 69 6c 79 20 75 73 65 64 20 62 79 20 60 6d 61 6b 65 2d | .server.IP.family.used.by.`make- |
| 1a40 | 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d | network-process'."...:group.'sim |
| 1a60 | 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 73 79 6d 62 6f 6c 29 0a 0a 28 64 65 66 | ple-httpd...:type.'symbol)..(def |
| 1a80 | 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 68 6f 73 74 20 6e 69 6c 0a 20 20 22 57 65 62 20 73 65 72 | custom.httpd-host.nil..."Web.ser |
| 1aa0 | 76 65 72 20 68 6f 73 74 20 6e 61 6d 65 20 75 73 65 64 20 62 79 20 60 6d 61 6b 65 2d 6e 65 74 77 | ver.host.name.used.by.`make-netw |
| 1ac0 | 6f 72 6b 2d 70 72 6f 63 65 73 73 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d | ork-process'."...:group.'simple- |
| 1ae0 | 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 63 6f 6e 73 74 20 6e 69 | httpd...:type.'(choice.(const.ni |
| 1b00 | 6c 29 20 28 63 6f 6e 73 74 20 6c 6f 63 61 6c 29 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 | l).(const.local).string))..(defc |
| 1b20 | 75 73 74 6f 6d 20 68 74 74 70 64 2d 70 6f 72 74 20 38 30 38 30 0a 20 20 22 57 65 62 20 73 65 72 | ustom.httpd-port.8080..."Web.ser |
| 1b40 | 76 65 72 20 70 6f 72 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 | ver.port."...:group.'simple-http |
| 1b60 | 64 0a 20 20 3a 74 79 70 65 20 27 69 6e 74 65 67 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 | d...:type.'integer)..(defcustom. |
| 1b80 | 68 74 74 70 64 2d 72 6f 6f 74 20 22 7e 2f 70 75 62 6c 69 63 5f 68 74 6d 6c 22 0a 20 20 22 57 65 | httpd-root."~/public_html"..."We |
| 1ba0 | 62 20 73 65 72 76 65 72 20 66 69 6c 65 20 72 6f 6f 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 | b.server.file.root."...:group.'s |
| 1bc0 | 69 6d 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 64 69 72 65 63 74 6f 72 79 29 0a | imple-httpd...:type.'directory). |
| 1be0 | 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 73 65 72 76 65 2d 66 69 6c 65 73 20 74 0a | .(defcustom.httpd-serve-files.t. |
| 1c00 | 20 20 22 45 6e 61 62 6c 65 20 73 65 72 76 69 6e 67 20 66 69 6c 65 73 20 66 72 6f 6d 20 60 68 74 | .."Enable.serving.files.from.`ht |
| 1c20 | 74 70 64 2d 72 6f 6f 74 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 | tpd-root'."...:group.'simple-htt |
| 1c40 | 70 64 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d | pd...:type.'boolean)..(defcustom |
| 1c60 | 20 68 74 74 70 64 2d 6c 69 73 74 69 6e 67 73 20 74 0a 20 20 22 49 66 20 74 72 75 65 2c 20 73 65 | .httpd-listings.t..."If.true,.se |
| 1c80 | 72 76 65 20 64 69 72 65 63 74 6f 72 79 20 6c 69 73 74 69 6e 67 73 2e 22 0a 20 20 3a 67 72 6f 75 | rve.directory.listings."...:grou |
| 1ca0 | 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e | p.'simple-httpd...:type.'boolean |
| 1cc0 | 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 73 65 72 76 6c 65 74 73 20 74 0a 20 | )..(defcustom.httpd-servlets.t.. |
| 1ce0 | 20 22 45 6e 61 62 6c 65 20 73 65 72 76 6c 65 74 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 | ."Enable.servlets."...:group.'si |
| 1d00 | 6d 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 | mple-httpd...:type.'boolean)..(d |
| 1d20 | 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 73 68 6f 77 2d 62 61 63 6b 74 72 61 63 65 2d 77 68 | efcustom.httpd-show-backtrace-wh |
| 1d40 | 65 6e 2d 65 72 72 6f 72 20 6e 69 6c 0a 20 20 22 49 66 20 74 72 75 65 2c 20 73 68 6f 77 20 62 61 | en-error.nil..."If.true,.show.ba |
| 1d60 | 63 6b 74 72 61 63 65 20 6f 6e 20 65 72 72 6f 72 20 70 61 67 65 2e 22 0a 20 20 3a 67 72 6f 75 70 | cktrace.on.error.page."...:group |
| 1d80 | 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 | .'simple-httpd...:type.'boolean) |
| 1da0 | 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 73 74 61 72 74 2d 68 6f 6f 6b 20 6e 69 | ..(defcustom.httpd-start-hook.ni |
| 1dc0 | 6c 0a 20 20 22 48 6f 6f 6b 20 74 6f 20 72 75 6e 20 77 68 65 6e 20 74 68 65 20 73 65 72 76 65 72 | l..."Hook.to.run.when.the.server |
| 1de0 | 20 68 61 73 20 73 74 61 72 74 65 64 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d | .has.started."...:group.'simple- |
| 1e00 | 68 74 74 70 64 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d | httpd...:type.'hook)..(defcustom |
| 1e20 | 20 68 74 74 70 64 2d 73 74 6f 70 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 74 6f 20 | .httpd-stop-hook.nil..."Hook.to. |
| 1e40 | 72 75 6e 20 77 68 65 6e 20 74 68 65 20 73 65 72 76 65 72 20 68 61 73 20 73 74 6f 70 70 65 64 2e | run.when.the.server.has.stopped. |
| 1e60 | 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 64 0a 20 20 3a 74 79 70 65 | "...:group.'simple-httpd...:type |
| 1e80 | 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 73 65 72 76 65 72 2d 6e 61 | .'hook)..(defvar.httpd-server-na |
| 1ea0 | 6d 65 20 28 66 6f 72 6d 61 74 20 22 73 69 6d 70 6c 65 2d 68 74 74 70 64 20 28 45 6d 61 63 73 20 | me.(format."simple-httpd.(Emacs. |
| 1ec0 | 25 73 29 22 20 65 6d 61 63 73 2d 76 65 72 73 69 6f 6e 29 0a 20 20 22 53 74 72 69 6e 67 20 74 6f | %s)".emacs-version)..."String.to |
| 1ee0 | 20 75 73 65 20 69 6e 20 74 68 65 20 53 65 72 76 65 72 20 68 65 61 64 65 72 2e 22 29 0a 0a 28 64 | .use.in.the.Server.header.")..(d |
| 1f00 | 65 66 76 61 72 20 68 74 74 70 64 2d 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 27 28 28 22 70 6e 67 | efvar.httpd-mime-types...'(("png |
| 1f20 | 22 20 20 2e 20 22 69 6d 61 67 65 2f 70 6e 67 22 29 0a 20 20 20 20 28 22 67 69 66 22 20 20 2e 20 | "...."image/png").....("gif".... |
| 1f40 | 22 69 6d 61 67 65 2f 67 69 66 22 29 0a 20 20 20 20 28 22 6a 70 67 22 20 20 2e 20 22 69 6d 61 67 | "image/gif").....("jpg"...."imag |
| 1f60 | 65 2f 6a 70 65 67 22 29 0a 20 20 20 20 28 22 6a 70 65 67 22 20 2e 20 22 69 6d 61 67 65 2f 6a 70 | e/jpeg").....("jpeg"..."image/jp |
| 1f80 | 65 67 22 29 0a 20 20 20 20 28 22 74 69 66 22 20 20 2e 20 22 69 6d 61 67 65 2f 74 69 66 22 29 0a | eg").....("tif"...."image/tif"). |
| 1fa0 | 20 20 20 20 28 22 74 69 66 66 22 20 2e 20 22 69 6d 61 67 65 2f 74 69 66 66 22 29 0a 20 20 20 20 | ....("tiff"..."image/tiff")..... |
| 1fc0 | 28 22 69 63 6f 22 20 20 2e 20 22 69 6d 61 67 65 2f 78 2d 69 63 6f 6e 22 29 0a 20 20 20 20 28 22 | ("ico"...."image/x-icon").....(" |
| 1fe0 | 73 76 67 22 20 20 2e 20 22 69 6d 61 67 65 2f 73 76 67 2b 78 6d 6c 22 29 0a 20 20 20 20 28 22 63 | svg"...."image/svg+xml").....("c |
| 2000 | 73 73 22 20 20 2e 20 22 74 65 78 74 2f 63 73 73 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 | ss"...."text/css;.charset=utf-8" |
| 2020 | 29 0a 20 20 20 20 28 22 68 74 6d 22 20 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 | ).....("htm"...."text/html;.char |
| 2040 | 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 68 74 6d 6c 22 20 2e 20 22 74 65 78 74 2f | set=utf-8").....("html"..."text/ |
| 2060 | 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 78 6d 6c 22 | html;.charset=utf-8").....("xml" |
| 2080 | 20 20 2e 20 22 74 65 78 74 2f 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 | ...."text/xml;.charset=utf-8").. |
| 20a0 | 20 20 20 28 22 72 73 73 22 20 20 2e 20 22 74 65 78 74 2f 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d | ...("rss"...."text/xml;.charset= |
| 20c0 | 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 61 74 6f 6d 22 20 2e 20 22 74 65 78 74 2f 78 6d 6c 3b | utf-8").....("atom"..."text/xml; |
| 20e0 | 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 74 78 74 22 20 20 2e 20 22 | .charset=utf-8").....("txt"...." |
| 2100 | 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 | text/plain;.charset=utf-8")..... |
| 2120 | 28 22 65 6c 22 20 20 20 2e 20 22 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 | ("el"....."text/plain;.charset=u |
| 2140 | 74 66 2d 38 22 29 0a 20 20 20 20 28 22 6a 73 22 20 20 20 2e 20 22 74 65 78 74 2f 6a 61 76 61 73 | tf-8").....("js"....."text/javas |
| 2160 | 63 72 69 70 74 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 6d 64 22 | cript;.charset=utf-8").....("md" |
| 2180 | 20 20 20 2e 20 22 74 65 78 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 3b 20 63 68 61 72 73 65 74 3d 75 | ....."text/x-markdown;.charset=u |
| 21a0 | 74 66 2d 38 22 29 0a 20 20 20 20 28 22 67 7a 22 20 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f | tf-8").....("gz"....."applicatio |
| 21c0 | 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 22 29 0a 20 20 20 20 28 22 70 73 22 20 20 20 2e 20 22 | n/octet-stream").....("ps"....." |
| 21e0 | 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 6f 73 74 73 63 72 69 70 74 22 29 0a 20 20 20 20 28 22 65 | application/postscript").....("e |
| 2200 | 70 73 22 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 6f 73 74 73 63 72 69 70 74 22 29 | ps"...."application/postscript") |
| 2220 | 0a 20 20 20 20 28 22 70 64 66 22 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 | .....("pdf"...."application/pdf" |
| 2240 | 29 0a 20 20 20 20 28 22 74 61 72 22 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 74 | ).....("tar"...."application/x-t |
| 2260 | 61 72 22 29 0a 20 20 20 20 28 22 7a 69 70 22 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f | ar").....("zip"...."application/ |
| 2280 | 7a 69 70 22 29 0a 20 20 20 20 28 22 77 61 73 6d 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e | zip").....("wasm"..."application |
| 22a0 | 2f 77 61 73 6d 22 29 0a 20 20 20 20 28 22 6d 70 33 22 20 20 2e 20 22 61 75 64 69 6f 2f 6d 70 65 | /wasm").....("mp3"...."audio/mpe |
| 22c0 | 67 22 29 0a 20 20 20 20 28 22 77 61 76 22 20 20 2e 20 22 61 75 64 69 6f 2f 78 2d 77 61 76 22 29 | g").....("wav"...."audio/x-wav") |
| 22e0 | 0a 20 20 20 20 28 22 66 6c 61 63 22 20 2e 20 22 61 75 64 69 6f 2f 66 6c 61 63 22 29 0a 20 20 20 | .....("flac"..."audio/flac").... |
| 2300 | 20 28 22 73 70 78 22 20 20 2e 20 22 61 75 64 69 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 22 6f 67 | .("spx"...."audio/ogg").....("og |
| 2320 | 61 22 20 20 2e 20 22 61 75 64 69 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 22 6f 67 67 22 20 20 2e | a"...."audio/ogg").....("ogg"... |
| 2340 | 20 22 61 75 64 69 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 22 6f 67 76 22 20 20 2e 20 22 76 69 64 | ."audio/ogg").....("ogv"...."vid |
| 2360 | 65 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 22 6d 70 34 22 20 20 2e 20 22 76 69 64 65 6f 2f 6d 70 | eo/ogg").....("mp4"...."video/mp |
| 2380 | 34 22 29 0a 20 20 20 20 28 22 6d 6b 76 22 20 20 2e 20 22 76 69 64 65 6f 2f 78 2d 6d 61 74 72 6f | 4").....("mkv"...."video/x-matro |
| 23a0 | 73 6b 61 22 29 0a 20 20 20 20 28 22 77 65 62 6d 22 20 2e 20 22 76 69 64 65 6f 2f 77 65 62 6d 22 | ska").....("webm"..."video/webm" |
| 23c0 | 29 29 0a 20 20 22 4d 49 4d 45 20 74 79 70 65 73 20 66 6f 72 20 68 65 61 64 65 72 73 2e 22 29 0a | ))..."MIME.types.for.headers."). |
| 23e0 | 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 69 6e 64 65 78 65 73 0a 20 20 27 28 22 69 6e 64 65 | .(defvar.httpd-indexes...'("inde |
| 2400 | 78 2e 68 74 6d 6c 22 0a 20 20 20 20 22 69 6e 64 65 78 2e 68 74 6d 22 0a 20 20 20 20 22 69 6e 64 | x.html"....."index.htm"....."ind |
| 2420 | 65 78 2e 78 6d 6c 22 29 0a 20 20 22 46 69 6c 65 20 73 65 72 76 65 64 20 62 79 20 64 65 66 61 75 | ex.xml")..."File.served.by.defau |
| 2440 | 6c 74 20 77 68 65 6e 20 61 63 63 65 73 73 69 6e 67 20 61 20 64 69 72 65 63 74 6f 72 79 2e 22 29 | lt.when.accessing.a.directory.") |
| 2460 | 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 73 74 61 74 75 73 2d 63 6f 64 65 73 0a 20 20 27 | ..(defvar.httpd-status-codes...' |
| 2480 | 28 28 31 30 30 20 2e 20 22 43 6f 6e 74 69 6e 75 65 22 29 0a 20 20 20 20 28 31 30 31 20 2e 20 22 | ((100..."Continue").....(101..." |
| 24a0 | 53 77 69 74 63 68 69 6e 67 20 50 72 6f 74 6f 63 6f 6c 73 22 29 0a 20 20 20 20 28 31 30 32 20 2e | Switching.Protocols").....(102.. |
| 24c0 | 20 22 50 72 6f 63 65 73 73 69 6e 67 22 29 0a 20 20 20 20 28 32 30 30 20 2e 20 22 4f 4b 22 29 0a | ."Processing").....(200..."OK"). |
| 24e0 | 20 20 20 20 28 32 30 31 20 2e 20 22 43 72 65 61 74 65 64 22 29 0a 20 20 20 20 28 32 30 32 20 2e | ....(201..."Created").....(202.. |
| 2500 | 20 22 41 63 63 65 70 74 65 64 22 29 0a 20 20 20 20 28 32 30 33 20 2e 20 22 4e 6f 6e 2d 61 75 74 | ."Accepted").....(203..."Non-aut |
| 2520 | 68 6f 72 69 74 61 74 69 76 65 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 22 29 0a 20 20 20 20 28 32 30 | horitative.Information").....(20 |
| 2540 | 34 20 2e 20 22 4e 6f 20 43 6f 6e 74 65 6e 74 22 29 0a 20 20 20 20 28 32 30 35 20 2e 20 22 52 65 | 4..."No.Content").....(205..."Re |
| 2560 | 73 65 74 20 43 6f 6e 74 65 6e 74 22 29 0a 20 20 20 20 28 32 30 36 20 2e 20 22 50 61 72 74 69 61 | set.Content").....(206..."Partia |
| 2580 | 6c 20 43 6f 6e 74 65 6e 74 22 29 0a 20 20 20 20 28 32 30 37 20 2e 20 22 4d 75 6c 74 69 2d 53 74 | l.Content").....(207..."Multi-St |
| 25a0 | 61 74 75 73 22 29 0a 20 20 20 20 28 32 30 38 20 2e 20 22 41 6c 72 65 61 64 79 20 52 65 70 6f 72 | atus").....(208..."Already.Repor |
| 25c0 | 74 65 64 22 29 0a 20 20 20 20 28 32 32 36 20 2e 20 22 49 4d 20 55 73 65 64 22 29 0a 20 20 20 20 | ted").....(226..."IM.Used")..... |
| 25e0 | 28 33 30 30 20 2e 20 22 4d 75 6c 74 69 70 6c 65 20 43 68 6f 69 63 65 73 22 29 0a 20 20 20 20 28 | (300..."Multiple.Choices").....( |
| 2600 | 33 30 31 20 2e 20 22 4d 6f 76 65 64 20 50 65 72 6d 61 6e 65 6e 74 6c 79 22 29 0a 20 20 20 20 28 | 301..."Moved.Permanently").....( |
| 2620 | 33 30 32 20 2e 20 22 46 6f 75 6e 64 22 29 0a 20 20 20 20 28 33 30 33 20 2e 20 22 53 65 65 20 4f | 302..."Found").....(303..."See.O |
| 2640 | 74 68 65 72 22 29 0a 20 20 20 20 28 33 30 34 20 2e 20 22 4e 6f 74 20 4d 6f 64 69 66 69 65 64 22 | ther").....(304..."Not.Modified" |
| 2660 | 29 0a 20 20 20 20 28 33 30 35 20 2e 20 22 55 73 65 20 50 72 6f 78 79 22 29 0a 20 20 20 20 28 33 | ).....(305..."Use.Proxy").....(3 |
| 2680 | 30 37 20 2e 20 22 54 65 6d 70 6f 72 61 72 79 20 52 65 64 69 72 65 63 74 22 29 0a 20 20 20 20 28 | 07..."Temporary.Redirect").....( |
| 26a0 | 33 30 38 20 2e 20 22 50 65 72 6d 61 6e 65 6e 74 20 52 65 64 69 72 65 63 74 22 29 0a 20 20 20 20 | 308..."Permanent.Redirect")..... |
| 26c0 | 28 34 30 30 20 2e 20 22 42 61 64 20 52 65 71 75 65 73 74 22 29 0a 20 20 20 20 28 34 30 31 20 2e | (400..."Bad.Request").....(401.. |
| 26e0 | 20 22 55 6e 61 75 74 68 6f 72 69 7a 65 64 22 29 0a 20 20 20 20 28 34 30 32 20 2e 20 22 50 61 79 | ."Unauthorized").....(402..."Pay |
| 2700 | 6d 65 6e 74 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 34 30 33 20 2e 20 22 46 6f 72 62 | ment.Required").....(403..."Forb |
| 2720 | 69 64 64 65 6e 22 29 0a 20 20 20 20 28 34 30 34 20 2e 20 22 4e 6f 74 20 46 6f 75 6e 64 22 29 0a | idden").....(404..."Not.Found"). |
| 2740 | 20 20 20 20 28 34 30 35 20 2e 20 22 4d 65 74 68 6f 64 20 4e 6f 74 20 41 6c 6c 6f 77 65 64 22 29 | ....(405..."Method.Not.Allowed") |
| 2760 | 0a 20 20 20 20 28 34 30 36 20 2e 20 22 4e 6f 74 20 41 63 63 65 70 74 61 62 6c 65 22 29 0a 20 20 | .....(406..."Not.Acceptable")... |
| 2780 | 20 20 28 34 30 37 20 2e 20 22 50 72 6f 78 79 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 52 | ..(407..."Proxy.Authentication.R |
| 27a0 | 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 34 30 38 20 2e 20 22 52 65 71 75 65 73 74 20 54 69 | equired").....(408..."Request.Ti |
| 27c0 | 6d 65 6f 75 74 22 29 0a 20 20 20 20 28 34 30 39 20 2e 20 22 43 6f 6e 66 6c 69 63 74 22 29 0a 20 | meout").....(409..."Conflict").. |
| 27e0 | 20 20 20 28 34 31 30 20 2e 20 22 47 6f 6e 65 22 29 0a 20 20 20 20 28 34 31 31 20 2e 20 22 4c 65 | ...(410..."Gone").....(411..."Le |
| 2800 | 6e 67 74 68 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 34 31 32 20 2e 20 22 50 72 65 63 | ngth.Required").....(412..."Prec |
| 2820 | 6f 6e 64 69 74 69 6f 6e 20 46 61 69 6c 65 64 22 29 0a 20 20 20 20 28 34 31 33 20 2e 20 22 50 61 | ondition.Failed").....(413..."Pa |
| 2840 | 79 6c 6f 61 64 20 54 6f 6f 20 4c 61 72 67 65 22 29 0a 20 20 20 20 28 34 31 34 20 2e 20 22 52 65 | yload.Too.Large").....(414..."Re |
| 2860 | 71 75 65 73 74 2d 55 52 49 20 54 6f 6f 20 4c 6f 6e 67 22 29 0a 20 20 20 20 28 34 31 35 20 2e 20 | quest-URI.Too.Long").....(415... |
| 2880 | 22 55 6e 73 75 70 70 6f 72 74 65 64 20 4d 65 64 69 61 20 54 79 70 65 22 29 0a 20 20 20 20 28 34 | "Unsupported.Media.Type").....(4 |
| 28a0 | 31 36 20 2e 20 22 52 65 71 75 65 73 74 65 64 20 52 61 6e 67 65 20 4e 6f 74 20 53 61 74 69 73 66 | 16..."Requested.Range.Not.Satisf |
| 28c0 | 69 61 62 6c 65 22 29 0a 20 20 20 20 28 34 31 37 20 2e 20 22 45 78 70 65 63 74 61 74 69 6f 6e 20 | iable").....(417..."Expectation. |
| 28e0 | 46 61 69 6c 65 64 22 29 0a 20 20 20 20 28 34 31 38 20 2e 20 22 49 27 6d 20 61 20 74 65 61 70 6f | Failed").....(418..."I'm.a.teapo |
| 2900 | 74 22 29 0a 20 20 20 20 28 34 32 31 20 2e 20 22 4d 69 73 64 69 72 65 63 74 65 64 20 52 65 71 75 | t").....(421..."Misdirected.Requ |
| 2920 | 65 73 74 22 29 0a 20 20 20 20 28 34 32 32 20 2e 20 22 55 6e 70 72 6f 63 65 73 73 61 62 6c 65 20 | est").....(422..."Unprocessable. |
| 2940 | 45 6e 74 69 74 79 22 29 0a 20 20 20 20 28 34 32 33 20 2e 20 22 4c 6f 63 6b 65 64 22 29 0a 20 20 | Entity").....(423..."Locked")... |
| 2960 | 20 20 28 34 32 34 20 2e 20 22 46 61 69 6c 65 64 20 44 65 70 65 6e 64 65 6e 63 79 22 29 0a 20 20 | ..(424..."Failed.Dependency")... |
| 2980 | 20 20 28 34 32 36 20 2e 20 22 55 70 67 72 61 64 65 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 | ..(426..."Upgrade.Required").... |
| 29a0 | 20 28 34 32 38 20 2e 20 22 50 72 65 63 6f 6e 64 69 74 69 6f 6e 20 52 65 71 75 69 72 65 64 22 29 | .(428..."Precondition.Required") |
| 29c0 | 0a 20 20 20 20 28 34 32 39 20 2e 20 22 54 6f 6f 20 4d 61 6e 79 20 52 65 71 75 65 73 74 73 22 29 | .....(429..."Too.Many.Requests") |
| 29e0 | 0a 20 20 20 20 28 34 33 31 20 2e 20 22 52 65 71 75 65 73 74 20 48 65 61 64 65 72 20 46 69 65 6c | .....(431..."Request.Header.Fiel |
| 2a00 | 64 73 20 54 6f 6f 20 4c 61 72 67 65 22 29 0a 20 20 20 20 28 34 34 34 20 2e 20 22 43 6f 6e 6e 65 | ds.Too.Large").....(444..."Conne |
| 2a20 | 63 74 69 6f 6e 20 43 6c 6f 73 65 64 20 57 69 74 68 6f 75 74 20 52 65 73 70 6f 6e 73 65 22 29 0a | ction.Closed.Without.Response"). |
| 2a40 | 20 20 20 20 28 34 35 31 20 2e 20 22 55 6e 61 76 61 69 6c 61 62 6c 65 20 46 6f 72 20 4c 65 67 61 | ....(451..."Unavailable.For.Lega |
| 2a60 | 6c 20 52 65 61 73 6f 6e 73 22 29 0a 20 20 20 20 28 34 39 39 20 2e 20 22 43 6c 69 65 6e 74 20 43 | l.Reasons").....(499..."Client.C |
| 2a80 | 6c 6f 73 65 64 20 52 65 71 75 65 73 74 22 29 0a 20 20 20 20 28 35 30 30 20 2e 20 22 49 6e 74 65 | losed.Request").....(500..."Inte |
| 2aa0 | 72 6e 61 6c 20 53 65 72 76 65 72 20 45 72 72 6f 72 22 29 0a 20 20 20 20 28 35 30 31 20 2e 20 22 | rnal.Server.Error").....(501..." |
| 2ac0 | 4e 6f 74 20 49 6d 70 6c 65 6d 65 6e 74 65 64 22 29 0a 20 20 20 20 28 35 30 32 20 2e 20 22 42 61 | Not.Implemented").....(502..."Ba |
| 2ae0 | 64 20 47 61 74 65 77 61 79 22 29 0a 20 20 20 20 28 35 30 33 20 2e 20 22 53 65 72 76 69 63 65 20 | d.Gateway").....(503..."Service. |
| 2b00 | 55 6e 61 76 61 69 6c 61 62 6c 65 22 29 0a 20 20 20 20 28 35 30 34 20 2e 20 22 47 61 74 65 77 61 | Unavailable").....(504..."Gatewa |
| 2b20 | 79 20 54 69 6d 65 6f 75 74 22 29 0a 20 20 20 20 28 35 30 35 20 2e 20 22 48 54 54 50 20 56 65 72 | y.Timeout").....(505..."HTTP.Ver |
| 2b40 | 73 69 6f 6e 20 4e 6f 74 20 53 75 70 70 6f 72 74 65 64 22 29 0a 20 20 20 20 28 35 30 36 20 2e 20 | sion.Not.Supported").....(506... |
| 2b60 | 22 56 61 72 69 61 6e 74 20 41 6c 73 6f 20 4e 65 67 6f 74 69 61 74 65 73 22 29 0a 20 20 20 20 28 | "Variant.Also.Negotiates").....( |
| 2b80 | 35 30 37 20 2e 20 22 49 6e 73 75 66 66 69 63 69 65 6e 74 20 53 74 6f 72 61 67 65 22 29 0a 20 20 | 507..."Insufficient.Storage")... |
| 2ba0 | 20 20 28 35 30 38 20 2e 20 22 4c 6f 6f 70 20 44 65 74 65 63 74 65 64 22 29 0a 20 20 20 20 28 35 | ..(508..."Loop.Detected").....(5 |
| 2bc0 | 31 30 20 2e 20 22 4e 6f 74 20 45 78 74 65 6e 64 65 64 22 29 0a 20 20 20 20 28 35 31 31 20 2e 20 | 10..."Not.Extended").....(511... |
| 2be0 | 22 4e 65 74 77 6f 72 6b 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 52 65 71 75 69 72 65 64 | "Network.Authentication.Required |
| 2c00 | 22 29 0a 20 20 20 20 28 35 39 39 20 2e 20 22 4e 65 74 77 6f 72 6b 20 43 6f 6e 6e 65 63 74 20 54 | ").....(599..."Network.Connect.T |
| 2c20 | 69 6d 65 6f 75 74 20 45 72 72 6f 72 22 29 29 0a 20 20 22 48 54 54 50 20 73 74 61 74 75 73 20 63 | imeout.Error"))..."HTTP.status.c |
| 2c40 | 6f 64 65 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 68 74 6d 6c 0a 20 20 27 28 | odes.")..(defvar.httpd-html...'( |
| 2c60 | 28 34 30 33 20 2e 20 22 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 3e 3c 68 | (403..."<!DOCTYPE.html>.<html><h |
| 2c80 | 65 61 64 3e 0a 3c 74 69 74 6c 65 3e 34 30 33 20 46 6f 72 62 69 64 64 65 6e 3c 2f 74 69 74 6c 65 | ead>.<title>403.Forbidden</title |
| 2ca0 | 3e 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0a 3c 68 31 3e 46 6f 72 62 69 64 64 65 6e 3c 2f 68 | >.</head><body>.<h1>Forbidden</h |
| 2cc0 | 31 3e 0a 3c 70 3e 54 68 65 20 72 65 71 75 65 73 74 65 64 20 55 52 4c 20 69 73 20 66 6f 72 62 69 | 1>.<p>The.requested.URL.is.forbi |
| 2ce0 | 64 64 65 6e 2e 3c 2f 70 3e 0a 3c 70 72 65 3e 25 73 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 3c | dden.</p>.<pre>%s</pre>.</body>< |
| 2d00 | 2f 68 74 6d 6c 3e 22 29 0a 20 20 20 20 28 34 30 34 20 2e 20 22 3c 21 44 4f 43 54 59 50 45 20 68 | /html>").....(404..."<!DOCTYPE.h |
| 2d20 | 74 6d 6c 3e 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 0a 3c 74 69 74 6c 65 3e 34 30 34 20 4e 6f 74 | tml>.<html><head>.<title>404.Not |
| 2d40 | 20 46 6f 75 6e 64 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0a 3c 68 31 | .Found</title>.</head><body>.<h1 |
| 2d60 | 3e 4e 6f 74 20 46 6f 75 6e 64 3c 2f 68 31 3e 0a 3c 70 3e 54 68 65 20 72 65 71 75 65 73 74 65 64 | >Not.Found</h1>.<p>The.requested |
| 2d80 | 20 55 52 4c 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 20 6f 6e 20 74 68 69 73 20 73 65 72 76 65 | .URL.was.not.found.on.this.serve |
| 2da0 | 72 2e 3c 2f 70 3e 0a 3c 70 72 65 3e 25 73 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 | r.</p>.<pre>%s</pre>.</body></ht |
| 2dc0 | 6d 6c 3e 22 29 0a 20 20 20 20 28 35 30 30 20 2e 20 22 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c | ml>").....(500..."<!DOCTYPE.html |
| 2de0 | 3e 0a 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 0a 3c 74 69 74 6c 65 3e 35 30 30 20 49 6e 74 65 72 6e | >.<html><head>.<title>500.Intern |
| 2e00 | 61 6c 20 45 72 72 6f 72 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0a 3c | al.Error</title>.</head><body>.< |
| 2e20 | 68 31 3e 35 30 30 20 49 6e 74 65 72 6e 61 6c 20 45 72 72 6f 72 3c 2f 68 31 3e 0a 3c 70 3e 49 6e | h1>500.Internal.Error</h1>.<p>In |
| 2e40 | 74 65 72 6e 61 6c 20 65 72 72 6f 72 20 77 68 65 6e 20 68 61 6e 64 6c 69 6e 67 20 74 68 69 73 20 | ternal.error.when.handling.this. |
| 2e60 | 72 65 71 75 65 73 74 2e 3c 2f 70 3e 0a 3c 70 72 65 3e 25 73 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 | request.</p>.<pre>%s</pre>.</bod |
| 2e80 | 79 3e 3c 2f 68 74 6d 6c 3e 22 29 29 0a 20 20 22 48 54 4d 4c 20 66 6f 72 20 76 61 72 69 6f 75 73 | y></html>"))..."HTML.for.various |
| 2ea0 | 20 65 72 72 6f 72 73 2e 22 29 0a 0a 3b 3b 20 55 73 65 72 20 69 6e 74 65 72 66 61 63 65 0a 0a 3b | .errors.")..;;.User.interface..; |
| 2ec0 | 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 74 61 72 74 | ;;###autoload.(defun.httpd-start |
| 2ee0 | 20 28 29 0a 20 20 22 53 74 61 72 74 20 74 68 65 20 77 65 62 20 73 65 72 76 65 72 20 70 72 6f 63 | .()..."Start.the.web.server.proc |
| 2f00 | 65 73 73 2e 20 49 66 20 74 68 65 20 73 65 72 76 65 72 20 69 73 20 61 6c 72 65 61 64 79 0a 72 75 | ess..If.the.server.is.already.ru |
| 2f20 | 6e 6e 69 6e 67 2c 20 74 68 69 73 20 77 69 6c 6c 20 72 65 73 74 61 72 74 20 74 68 65 20 73 65 72 | nning,.this.will.restart.the.ser |
| 2f40 | 76 65 72 2e 20 54 68 65 72 65 20 69 73 20 6f 6e 6c 79 20 6f 6e 65 20 73 65 72 76 65 72 0a 69 6e | ver..There.is.only.one.server.in |
| 2f60 | 73 74 61 6e 63 65 20 70 65 72 20 45 6d 61 63 73 20 69 6e 73 74 61 6e 63 65 2e 22 0a 20 20 28 69 | stance.per.Emacs.instance."...(i |
| 2f80 | 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 68 74 74 70 64 2d 73 74 6f 70 29 0a 20 20 28 68 74 | nteractive)...(httpd-stop)...(ht |
| 2fa0 | 74 70 64 2d 6c 6f 67 20 60 28 73 74 61 72 74 20 2c 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 | tpd-log.`(start.,(current-time-s |
| 2fc0 | 74 72 69 6e 67 29 29 29 0a 20 20 28 6d 61 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 | tring)))...(make-network-process |
| 2fe0 | 0a 20 20 20 3a 6e 61 6d 65 20 20 20 20 20 22 68 74 74 70 64 22 0a 20 20 20 3a 73 65 72 76 69 63 | ....:name....."httpd"....:servic |
| 3000 | 65 20 20 68 74 74 70 64 2d 70 6f 72 74 0a 20 20 20 3a 73 65 72 76 65 72 20 20 20 74 0a 20 20 20 | e..httpd-port....:server...t.... |
| 3020 | 3a 68 6f 73 74 20 20 20 20 20 68 74 74 70 64 2d 68 6f 73 74 0a 20 20 20 3a 66 61 6d 69 6c 79 20 | :host.....httpd-host....:family. |
| 3040 | 20 20 68 74 74 70 64 2d 69 70 2d 66 61 6d 69 6c 79 0a 20 20 20 3a 66 69 6c 74 65 72 20 20 20 27 | ..httpd-ip-family....:filter...' |
| 3060 | 68 74 74 70 64 2d 2d 66 69 6c 74 65 72 0a 20 20 20 3a 63 6f 64 69 6e 67 20 20 20 27 62 69 6e 61 | httpd--filter....:coding...'bina |
| 3080 | 72 79 0a 20 20 20 3a 6c 6f 67 20 20 20 20 20 20 27 68 74 74 70 64 2d 2d 6c 6f 67 29 0a 20 20 28 | ry....:log......'httpd--log)...( |
| 30a0 | 72 75 6e 2d 68 6f 6f 6b 73 20 27 68 74 74 70 64 2d 73 74 61 72 74 2d 68 6f 6f 6b 29 29 0a 0a 3b | run-hooks.'httpd-start-hook))..; |
| 30c0 | 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 74 6f 70 20 | ;;###autoload.(defun.httpd-stop. |
| 30e0 | 28 29 0a 20 20 22 53 74 6f 70 20 74 68 65 20 77 65 62 20 73 65 72 76 65 72 20 69 66 20 69 74 20 | ()..."Stop.the.web.server.if.it. |
| 3100 | 69 73 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 2c 20 6f 74 68 65 72 77 69 73 65 20 | is.currently.running,.otherwise. |
| 3120 | 64 6f 20 6e 6f 74 68 69 6e 67 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 | do.nothing."...(interactive)...( |
| 3140 | 77 68 65 6e 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 22 68 74 74 70 64 22 29 0a 20 20 | when.(process-status."httpd")... |
| 3160 | 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 22 68 74 74 70 64 22 29 0a 20 20 20 20 28 | ..(delete-process."httpd").....( |
| 3180 | 68 74 74 70 64 2d 6c 6f 67 20 60 28 73 74 6f 70 20 2c 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d | httpd-log.`(stop.,(current-time- |
| 31a0 | 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 68 74 74 70 64 2d | string))).....(run-hooks.'httpd- |
| 31c0 | 73 74 6f 70 2d 68 6f 6f 6b 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 | stop-hook)))..;;;###autoload.(de |
| 31e0 | 66 75 6e 20 68 74 74 70 64 2d 72 75 6e 6e 69 6e 67 2d 70 20 28 29 0a 20 20 22 52 65 74 75 72 6e | fun.httpd-running-p.()..."Return |
| 3200 | 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 74 68 65 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 20 73 65 72 | .non-nil.if.the.simple-httpd.ser |
| 3220 | 76 65 72 20 69 73 20 72 75 6e 6e 69 6e 67 2e 22 0a 20 20 28 6e 6f 74 20 28 6e 75 6c 6c 20 28 70 | ver.is.running."...(not.(null.(p |
| 3240 | 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 22 68 74 74 70 64 22 29 29 29 29 0a 0a 3b 3b 3b 23 23 | rocess-status."httpd"))))..;;;## |
| 3260 | 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 65 72 76 65 2d 64 69 72 | #autoload.(defun.httpd-serve-dir |
| 3280 | 65 63 74 6f 72 79 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 53 74 61 72 74 20 74 68 65 20 | ectory.(directory)..."Start.the. |
| 32a0 | 77 65 62 20 73 65 72 76 65 72 20 77 69 74 68 20 67 69 76 65 6e 20 60 64 69 72 65 63 74 6f 72 79 | web.server.with.given.`directory |
| 32c0 | 27 20 61 73 20 60 68 74 74 70 64 2d 72 6f 6f 74 27 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 | '.as.`httpd-root'."...(interacti |
| 32e0 | 76 65 20 22 44 53 65 72 76 65 20 64 69 72 65 63 74 6f 72 79 3a 20 5c 6e 22 29 0a 20 20 28 73 65 | ve."DServe.directory:.\n")...(se |
| 3300 | 74 66 20 68 74 74 70 64 2d 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 29 0a 20 20 28 68 74 74 70 | tf.httpd-root.directory)...(http |
| 3320 | 64 2d 73 74 61 72 74 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 53 74 61 72 74 65 64 20 73 69 6d | d-start)...(message."Started.sim |
| 3340 | 70 6c 65 2d 68 74 74 70 64 20 6f 6e 20 25 73 3a 25 64 2c 20 73 65 72 76 69 6e 67 3a 20 25 73 22 | ple-httpd.on.%s:%d,.serving:.%s" |
| 3360 | 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 61 73 65 20 68 74 74 70 64 2d 68 6f 73 74 0a | ............(cl-case.httpd-host. |
| 3380 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 69 6c 29 20 22 30 2e 30 2e 30 2e 30 22 29 0a 20 | .............((nil)."0.0.0.0").. |
| 33a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 63 61 6c 29 20 22 6c 6f 63 61 6c 68 6f 73 74 22 | ............((local)."localhost" |
| 33c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 74 68 65 72 77 69 73 65 20 68 74 74 70 64 2d | )..............(otherwise.httpd- |
| 33e0 | 68 6f 73 74 29 29 20 68 74 74 70 64 2d 70 6f 72 74 20 64 69 72 65 63 74 6f 72 79 29 29 0a 0a 28 | host)).httpd-port.directory))..( |
| 3400 | 64 65 66 75 6e 20 68 74 74 70 64 2d 62 61 74 63 68 2d 73 74 61 72 74 20 28 29 0a 20 20 22 4e 65 | defun.httpd-batch-start.()..."Ne |
| 3420 | 76 65 72 20 72 65 74 75 72 6e 73 2c 20 68 6f 6c 64 69 6e 67 20 74 68 65 20 73 65 72 76 65 72 20 | ver.returns,.holding.the.server. |
| 3440 | 6f 70 65 6e 20 69 6e 64 65 66 69 6e 69 74 65 6c 79 20 66 6f 72 20 62 61 74 63 68 20 6d 6f 64 65 | open.indefinitely.for.batch.mode |
| 3460 | 2e 0a 4c 6f 67 73 20 61 72 65 20 72 65 64 69 72 65 63 74 65 64 20 74 6f 20 73 74 64 6f 75 74 2e | ..Logs.are.redirected.to.stdout. |
| 3480 | 20 54 6f 20 75 73 65 2c 20 69 6e 76 6f 6b 65 20 45 6d 61 63 73 20 6c 69 6b 65 20 74 68 69 73 3a | .To.use,.invoke.Emacs.like.this: |
| 34a0 | 0a 65 6d 61 63 73 20 2d 51 20 2d 62 61 74 63 68 20 2d 6c 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 | .emacs.-Q.-batch.-l.simple-httpd |
| 34c0 | 2e 65 6c 63 20 2d 66 20 68 74 74 70 64 2d 62 61 74 63 68 2d 73 74 61 72 74 22 0a 20 20 28 69 66 | .elc.-f.httpd-batch-start"...(if |
| 34e0 | 20 28 6e 6f 74 20 6e 6f 6e 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 28 65 72 72 | .(not.noninteractive).......(err |
| 3500 | 6f 72 20 22 4f 6e 6c 79 20 75 73 65 20 60 68 74 74 70 64 2d 62 61 74 63 68 2d 73 74 61 72 74 27 | or."Only.use.`httpd-batch-start' |
| 3520 | 20 69 6e 20 62 61 74 63 68 20 6d 6f 64 65 21 22 29 0a 20 20 20 20 28 68 74 74 70 64 2d 73 74 61 | .in.batch.mode!").....(httpd-sta |
| 3540 | 72 74 29 0a 20 20 20 20 28 64 65 66 61 6c 69 61 73 20 27 68 74 74 70 64 2d 6c 6f 67 20 27 70 70 | rt).....(defalias.'httpd-log.'pp |
| 3560 | 29 0a 20 20 20 20 28 77 68 69 6c 65 20 74 20 28 73 6c 65 65 70 2d 66 6f 72 20 36 30 29 29 29 29 | ).....(while.t.(sleep-for.60)))) |
| 3580 | 0a 0a 3b 3b 20 55 74 69 6c 69 74 79 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 64 61 74 65 2d | ..;;.Utility..(defun.httpd-date- |
| 35a0 | 73 74 72 69 6e 67 20 28 26 6f 70 74 69 6f 6e 61 6c 20 64 61 74 65 29 0a 20 20 22 52 65 74 75 72 | string.(&optional.date)..."Retur |
| 35c0 | 6e 20 61 6e 20 48 54 54 50 20 64 61 74 65 20 73 74 72 69 6e 67 20 28 52 46 43 20 31 31 32 33 29 | n.an.HTTP.date.string.(RFC.1123) |
| 35e0 | 2e 22 0a 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 61 2c 20 25 65 | ."...(format-time-string."%a,.%e |
| 3600 | 20 25 62 20 25 59 20 25 54 20 47 4d 54 22 20 64 61 74 65 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 | .%b.%Y.%T.GMT".date.t))..(defun. |
| 3620 | 68 74 74 70 64 2d 65 74 61 67 20 28 66 69 6c 65 29 0a 20 20 22 43 6f 6d 70 75 74 65 20 74 68 65 | httpd-etag.(file)..."Compute.the |
| 3640 | 20 45 54 61 67 20 66 6f 72 20 46 49 4c 45 2e 22 0a 20 20 28 63 6f 6e 63 61 74 20 22 5c 22 22 20 | .ETag.for.FILE."...(concat."\"". |
| 3660 | 28 73 75 62 73 74 72 69 6e 67 20 28 73 68 61 31 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e | (substring.(sha1.(prin1-to-strin |
| 3680 | 67 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74 65 73 20 66 69 6c 65 29 29 29 20 2d 31 36 29 0a | g.(file-attributes.file))).-16). |
| 36a0 | 20 20 20 20 20 20 20 20 20 20 22 5c 22 22 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d | .........."\""))..(defun.httpd-- |
| 36c0 | 73 74 72 69 6e 67 69 66 79 20 28 64 65 73 69 67 6e 61 74 6f 72 29 0a 20 20 22 54 75 72 6e 20 61 | stringify.(designator)..."Turn.a |
| 36e0 | 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 61 74 6f 72 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 | .string.designator.into.a.string |
| 3700 | 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 72 69 6e 67 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 | ."...(let.((string.(format."%s". |
| 3720 | 64 65 73 69 67 6e 61 74 6f 72 29 29 29 0a 20 20 20 20 28 69 66 20 28 6b 65 79 77 6f 72 64 70 20 | designator))).....(if.(keywordp. |
| 3740 | 64 65 73 69 67 6e 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 | designator).........(substring.s |
| 3760 | 74 72 69 6e 67 20 31 29 0a 20 20 20 20 20 20 73 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 20 4e 65 74 | tring.1).......string)))..;;.Net |
| 3780 | 77 6f 72 6b 69 6e 67 20 63 6f 64 65 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 63 6f 6e 6e | working.code..(defun.httpd--conn |
| 37a0 | 65 63 74 69 6f 6e 2d 63 6c 6f 73 65 2d 70 20 28 72 65 71 75 65 73 74 29 0a 20 20 22 52 65 74 75 | ection-close-p.(request)..."Retu |
| 37c0 | 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 74 68 65 20 63 6c 69 65 6e 74 20 72 65 71 75 65 73 74 | rn.non-nil.if.the.client.request |
| 37e0 | 65 64 20 5c 22 63 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 5c 22 2e 22 0a 20 20 28 6f 72 | ed.\"connection:.close\"."...(or |
| 3800 | 20 28 65 71 75 61 6c 20 27 28 22 63 6c 6f 73 65 22 29 20 28 63 64 72 20 28 61 73 73 6f 63 20 22 | .(equal.'("close").(cdr.(assoc." |
| 3820 | 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 65 71 | Connection".request))).......(eq |
| 3840 | 75 61 6c 20 27 28 22 48 54 54 50 2f 31 2e 30 22 29 20 28 63 64 64 72 20 28 61 73 73 6f 63 20 22 | ual.'("HTTP/1.0").(cddr.(assoc." |
| 3860 | 47 45 54 22 20 72 65 71 75 65 73 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d | GET".request)))))..(defun.httpd- |
| 3880 | 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 20 63 68 75 6e 6b 29 0a 20 20 22 52 75 6e 73 20 65 61 63 | -filter.(proc.chunk)..."Runs.eac |
| 38a0 | 68 20 74 69 6d 65 20 63 6c 69 65 6e 74 20 6d 61 6b 65 73 20 61 20 72 65 71 75 65 73 74 2e 22 0a | h.time.client.makes.a.request.". |
| 38c0 | 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d | ..(with-current-buffer.(process- |
| 38e0 | 67 65 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 | get.proc.:request-buffer).....(g |
| 3900 | 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 69 6e 73 65 72 | oto-char.(point-max)).....(inser |
| 3920 | 74 20 63 68 75 6e 6b 29 0a 20 20 20 20 28 6c 65 74 20 28 28 72 65 71 75 65 73 74 20 28 70 72 6f | t.chunk).....(let.((request.(pro |
| 3940 | 63 65 73 73 2d 67 65 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 | cess-get.proc.:request)))....... |
| 3960 | 28 75 6e 6c 65 73 73 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 | (unless.request.........(when.(s |
| 3980 | 65 74 66 20 72 65 71 75 65 73 74 20 28 68 74 74 70 64 2d 70 61 72 73 65 29 29 0a 20 20 20 20 20 | etf.request.(httpd-parse))...... |
| 39a0 | 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 | .....(delete-region.(point-min). |
| 39c0 | 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 | (point))...........(process-put. |
| 39e0 | 70 72 6f 63 20 3a 72 65 71 75 65 73 74 20 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 | proc.:request.request))).......( |
| 3a00 | 77 68 65 6e 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 | when.request.........(let.((cont |
| 3a20 | 65 6e 74 2d 6c 65 6e 67 74 68 20 28 63 61 64 72 20 28 61 73 73 6f 63 20 22 43 6f 6e 74 65 6e 74 | ent-length.(cadr.(assoc."Content |
| 3a40 | 2d 4c 65 6e 67 74 68 22 20 72 65 71 75 65 73 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 | -Length".request))))...........( |
| 3a60 | 77 68 65 6e 20 28 6f 72 20 28 6e 75 6c 6c 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 29 0a 20 | when.(or.(null.content-length).. |
| 3a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 28 62 75 66 66 65 72 2d 73 69 | ...................(=.(buffer-si |
| 3aa0 | 7a 65 29 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 63 6f 6e 74 65 6e 74 2d 6c 65 | ze).(string-to-number.content-le |
| 3ac0 | 6e 67 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 | ngth))).............(let*.((cont |
| 3ae0 | 65 6e 74 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ent.(buffer-string))............ |
| 3b00 | 20 20 20 20 20 20 20 20 28 75 72 69 20 28 63 6c 2d 63 61 64 61 72 20 72 65 71 75 65 73 74 29 29 | ........(uri.(cl-cadar.request)) |
| 3b20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 73 65 64 2d 75 72 69 20 | ....................(parsed-uri. |
| 3b40 | 28 68 74 74 70 64 2d 70 61 72 73 65 2d 75 72 69 20 28 63 6f 6e 63 61 74 20 75 72 69 29 29 29 0a | (httpd-parse-uri.(concat.uri))). |
| 3b60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 69 2d 70 61 74 68 20 28 68 74 | ...................(uri-path.(ht |
| 3b80 | 74 70 64 2d 75 6e 68 65 78 20 28 6e 74 68 20 30 20 70 61 72 73 65 64 2d 75 72 69 29 29 29 0a 20 | tpd-unhex.(nth.0.parsed-uri))).. |
| 3ba0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 69 2d 71 75 65 72 79 20 28 61 70 | ..................(uri-query.(ap |
| 3bc0 | 70 65 6e 64 20 28 6e 74 68 20 31 20 70 61 72 73 65 64 2d 75 72 69 29 0a 20 20 20 20 20 20 20 20 | pend.(nth.1.parsed-uri)......... |
| 3be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 | ..............................(h |
| 3c00 | 74 74 70 64 2d 70 61 72 73 65 2d 61 72 67 73 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 | ttpd-parse-args.content)))...... |
| 3c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 72 76 6c 65 74 20 28 68 74 74 70 64 2d 67 65 | ..............(servlet.(httpd-ge |
| 3c40 | 74 2d 73 65 72 76 6c 65 74 20 75 72 69 2d 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | t-servlet.uri-path)))........... |
| 3c60 | 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(erase-buffer).............. |
| 3c80 | 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 20 6e 69 6c 29 | .(process-put.proc.:request.nil) |
| 3ca0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 72 65 71 75 65 73 74 20 28 6e 72 | ...............(setf.request.(nr |
| 3cc0 | 65 76 65 72 73 65 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 22 43 6f 6e 74 65 6e 74 22 20 63 6f 6e | everse.(cons.(list."Content".con |
| 3ce0 | 74 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tent)........................... |
| 3d00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 71 75 | ..................(nreverse.requ |
| 3d20 | 65 73 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 | est))))...............(httpd-log |
| 3d40 | 20 60 28 72 65 71 75 65 73 74 20 28 64 61 74 65 20 2c 28 68 74 74 70 64 2d 64 61 74 65 2d 73 74 | .`(request.(date.,(httpd-date-st |
| 3d60 | 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ring)).......................... |
| 3d80 | 20 20 20 20 20 20 20 20 20 20 28 61 64 64 72 65 73 73 20 2c 28 63 61 72 20 28 70 72 6f 63 65 73 | ..........(address.,(car.(proces |
| 3da0 | 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s-contact.proc)))............... |
| 3dc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 20 2c 75 72 69 2d 70 | .....................(get.,uri-p |
| 3de0 | 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ath)............................ |
| 3e00 | 20 20 20 20 20 20 20 20 2c 28 63 6f 6e 73 20 27 68 65 61 64 65 72 73 20 72 65 71 75 65 73 74 29 | ........,(cons.'headers.request) |
| 3e20 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 73 65 72 76 6c | ))...............(if.(null.servl |
| 3e40 | 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 2d 65 72 | et)...................(httpd--er |
| 3e60 | 72 6f 72 2d 73 61 66 65 20 70 72 6f 63 20 34 30 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ror-safe.proc.404).............. |
| 3e80 | 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 2d 63 61 73 65 0a 20 20 | ...(condition-case.error-case... |
| 3ea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 72 76 6c | ..................(funcall.servl |
| 3ec0 | 65 74 20 70 72 6f 63 20 75 72 69 2d 70 61 74 68 20 75 72 69 2d 71 75 65 72 79 20 72 65 71 75 65 | et.proc.uri-path.uri-query.reque |
| 3ee0 | 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 68 74 | st)...................(error.(ht |
| 3f00 | 74 70 64 2d 2d 65 72 72 6f 72 2d 73 61 66 65 20 70 72 6f 63 20 35 30 30 20 65 72 72 6f 72 2d 63 | tpd--error-safe.proc.500.error-c |
| 3f20 | 61 73 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 68 74 74 | ase))))...............(when.(htt |
| 3f40 | 70 64 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 2d 63 6c 6f 73 65 2d 70 20 72 65 71 75 65 73 74 29 0a | pd--connection-close-p.request). |
| 3f60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f | ................(process-send-eo |
| 3f80 | 66 20 70 72 6f 63 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 6c | f.proc)))))))))..(defun.httpd--l |
| 3fa0 | 6f 67 20 28 73 65 72 76 65 72 20 70 72 6f 63 20 6d 65 73 73 61 67 65 29 0a 20 20 22 52 75 6e 73 | og.(server.proc.message)..."Runs |
| 3fc0 | 20 65 61 63 68 20 74 69 6d 65 20 61 20 6e 65 77 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 73 | .each.time.a.new.client.connects |
| 3fe0 | 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 6e 65 72 | ."...(with-current-buffer.(gener |
| 4000 | 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 20 2a 68 74 74 70 64 2d 63 6c 69 65 6e 74 2a 22 | ate-new-buffer.".*httpd-client*" |
| 4020 | 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 | ).....(process-put.proc.:request |
| 4040 | 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 28 73 65 | -buffer.(current-buffer)))...(se |
| 4060 | 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 20 23 27 68 74 74 70 64 2d | t-process-sentinel.proc.#'httpd- |
| 4080 | 2d 73 65 6e 74 69 6e 65 6c 29 0a 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 28 6c 69 73 74 20 27 63 | -sentinel)...(httpd-log.(list.'c |
| 40a0 | 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 61 72 20 28 70 72 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 | onnection.(car.(process-contact. |
| 40c0 | 70 72 6f 63 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 73 65 6e 74 69 6e 65 | proc)))))..(defun.httpd--sentine |
| 40e0 | 6c 20 28 70 72 6f 63 20 6d 65 73 73 61 67 65 29 0a 20 20 22 52 75 6e 73 20 77 68 65 6e 20 61 20 | l.(proc.message)..."Runs.when.a. |
| 4100 | 63 6c 69 65 6e 74 20 63 6c 6f 73 65 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 | client.closes.the.connection.".. |
| 4120 | 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 6f 70 65 6e 20 | .(unless.(string-match-p."^open. |
| 4140 | 22 20 6d 65 73 73 61 67 65 29 0a 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 20 28 70 72 | ".message).....(let.((buffer.(pr |
| 4160 | 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 2d 62 75 66 66 65 72 29 29 | ocess-get.proc.:request-buffer)) |
| 4180 | 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 6b 69 | ).......(when.buffer.........(ki |
| 41a0 | 6c 6c 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 29 29 29 29 29 0a 0a 3b 3b 20 4c 6f 67 67 69 6e | ll-buffer.buffer)))))..;;.Loggin |
| 41c0 | 67 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 6c 6f 67 20 28 69 74 65 6d 29 0a 20 20 22 50 72 | g..(defun.httpd-log.(item)..."Pr |
| 41e0 | 65 74 74 79 20 70 72 69 6e 74 20 61 20 6c 69 73 70 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 | etty.print.a.lisp.object.to.the. |
| 4200 | 6c 6f 67 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 | log."...(with-current-buffer.(ge |
| 4220 | 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 68 74 74 70 64 2a 22 29 0a 20 20 20 20 28 | t-buffer-create."*httpd*").....( |
| 4240 | 73 65 74 66 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 20 20 20 20 28 | setf.buffer-read-only.nil).....( |
| 4260 | 6c 65 74 20 28 28 66 6f 6c 6c 6f 77 20 28 3d 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d | let.((follow.(=.(point).(point-m |
| 4280 | 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 | ax)))).......(save-excursion.... |
| 42a0 | 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 | .....(goto-char.(point-max)).... |
| 42c0 | 20 20 20 20 20 28 70 70 20 69 74 65 6d 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 | .....(pp.item.(current-buffer))) |
| 42e0 | 0a 20 20 20 20 20 20 28 69 66 20 66 6f 6c 6c 6f 77 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f | .......(if.follow.(goto-char.(po |
| 4300 | 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 74 72 75 6e 63 61 74 65 2d 6c | int-max)))).....(setf.truncate-l |
| 4320 | 69 6e 65 73 20 74 0a 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c | ines.t...........buffer-read-onl |
| 4340 | 79 20 74 29 0a 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 20 | y.t).....(set-buffer-modified-p. |
| 4360 | 6e 69 6c 29 29 29 0a 0a 3b 3b 20 53 65 72 76 6c 65 74 73 0a 0a 28 64 65 66 76 61 72 20 68 74 74 | nil)))..;;.Servlets..(defvar.htt |
| 4380 | 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 20 6e 69 6c 0a 20 20 22 54 68 65 20 70 72 6f 63 65 | pd-current-proc.nil..."The.proce |
| 43a0 | 73 73 20 6f 62 6a 65 63 74 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 22 29 0a 0a 28 | ss.object.currently.in.use.")..( |
| 43c0 | 64 65 66 76 61 72 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 20 6e 69 6c 0a 20 20 | defvar.httpd--header-sent.nil... |
| 43e0 | 22 42 75 66 66 65 72 2d 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 20 69 6e 64 69 63 61 74 69 6e | "Buffer-local.variable.indicatin |
| 4400 | 67 20 69 66 20 74 68 65 20 68 65 61 64 65 72 20 68 61 73 20 62 65 65 6e 20 73 65 6e 74 2e 22 29 | g.if.the.header.has.been.sent.") |
| 4420 | 0a 28 6d 61 6b 65 2d 76 61 72 69 61 62 6c 65 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 27 68 74 | .(make-variable-buffer-local.'ht |
| 4440 | 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d | tpd--header-sent)..(defun.httpd- |
| 4460 | 72 65 73 6f 6c 76 65 2d 70 72 6f 63 20 28 70 72 6f 63 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 | resolve-proc.(proc)..."Return.th |
| 4480 | 65 20 63 6f 72 72 65 63 74 20 70 72 6f 63 65 73 73 20 74 6f 20 75 73 65 2e 20 54 68 69 73 20 68 | e.correct.process.to.use..This.h |
| 44a0 | 61 6e 64 6c 65 73 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 2e 22 0a 20 20 | andles.`httpd-current-proc'."... |
| 44c0 | 28 69 66 20 28 65 71 20 74 20 70 72 6f 63 29 20 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 | (if.(eq.t.proc).httpd-current-pr |
| 44e0 | 6f 63 20 70 72 6f 63 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 77 69 74 68 2d 68 74 74 70 64 2d | oc.proc))..(defmacro.with-httpd- |
| 4500 | 62 75 66 66 65 72 20 28 70 72 6f 63 20 6d 69 6d 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 | buffer.(proc.mime.&rest.body)... |
| 4520 | 22 43 72 65 61 74 65 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 2c 20 73 65 74 20 | "Create.a.temporary.buffer,.set. |
| 4540 | 69 74 20 61 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2c 20 61 6e 64 2c 0a 61 | it.as.the.current.buffer,.and,.a |
| 4560 | 74 20 74 68 65 20 65 6e 64 20 6f 66 20 62 6f 64 79 2c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 | t.the.end.of.body,.automatically |
| 4580 | 20 73 65 72 76 65 20 69 74 20 74 6f 20 61 6e 20 48 54 54 50 20 63 6c 69 65 6e 74 20 77 69 74 68 | .serve.it.to.an.HTTP.client.with |
| 45a0 | 0a 61 6e 20 48 54 54 50 20 68 65 61 64 65 72 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 73 | .an.HTTP.header.indicating.the.s |
| 45c0 | 70 65 63 69 66 69 65 64 20 4d 49 4d 45 20 74 79 70 65 2e 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 | pecified.MIME.type..Additionally |
| 45e0 | 2c 0a 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 27 20 69 73 20 73 65 74 20 74 6f 20 74 68 | ,.`standard-output'.is.set.to.th |
| 4600 | 69 73 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 20 61 6e 64 0a 60 68 74 74 70 64 2d 63 75 72 72 | is.output.buffer.and.`httpd-curr |
| 4620 | 65 6e 74 2d 70 72 6f 63 27 20 69 73 20 73 65 74 20 74 6f 20 50 52 4f 43 2e 22 0a 20 20 28 64 65 | ent-proc'.is.set.to.PROC."...(de |
| 4640 | 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 70 | clare.(indent.defun))...(let.((p |
| 4660 | 72 6f 63 2d 73 79 6d 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 2d 2d 70 72 6f 63 2d 2d 22 29 | roc-sym.(make-symbol."--proc--") |
| 4680 | 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28 2c 70 72 6f 63 2d 73 79 6d 20 2c 70 72 6f 63 29 29 | )).....`(let.((,proc-sym.,proc)) |
| 46a0 | 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 | ........(with-temp-buffer....... |
| 46c0 | 20 20 20 28 73 65 74 66 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 68 74 74 70 64 2d 62 75 66 66 65 | ...(setf.major-mode.'httpd-buffe |
| 46e0 | 72 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 | r)..........(let.((standard-outp |
| 4700 | 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ut.(current-buffer))............ |
| 4720 | 20 20 20 20 28 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 20 2c 70 72 6f 63 2d 73 79 | ....(httpd-current-proc.,proc-sy |
| 4740 | 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 0a 20 20 20 20 20 20 20 20 20 | m))............,@body).......... |
| 4760 | 28 75 6e 6c 65 73 73 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 0a 20 20 20 20 20 | (unless.httpd--header-sent...... |
| 4780 | 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 2c 70 72 6f 63 2d 73 | ......(httpd-send-header.,proc-s |
| 47a0 | 79 6d 20 2c 6d 69 6d 65 20 32 30 30 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 | ym.,mime.200))))))..(defun.httpd |
| 47c0 | 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 20 28 29 0a 20 20 22 44 6f 6e 27 74 20 72 65 73 70 | -discard-buffer.()..."Don't.resp |
| 47e0 | 6f 6e 64 20 75 73 69 6e 67 20 63 75 72 72 65 6e 74 20 73 65 72 76 65 72 20 62 75 66 66 65 72 20 | ond.using.current.server.buffer. |
| 4800 | 28 60 77 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 27 29 2e 0a 52 65 74 75 72 6e 73 20 61 | (`with-httpd-buffer')..Returns.a |
| 4820 | 20 70 72 6f 63 65 73 73 20 66 6f 72 20 66 75 74 75 72 65 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 | .process.for.future.response.".. |
| 4840 | 20 28 77 68 65 6e 20 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 68 74 74 70 64 2d 62 75 66 | .(when.(eq.major-mode.'httpd-buf |
| 4860 | 66 65 72 29 20 28 73 65 74 66 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 20 74 29 | fer).(setf.httpd--header-sent.t) |
| 4880 | 29 0a 20 20 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 29 0a 0a 28 64 65 66 6d 61 63 | )...httpd-current-proc)..(defmac |
| 48a0 | 72 6f 20 64 65 66 73 65 72 76 6c 65 74 20 28 6e 61 6d 65 20 6d 69 6d 65 20 70 61 74 68 2d 71 75 | ro.defservlet.(name.mime.path-qu |
| 48c0 | 65 72 79 2d 72 65 71 75 65 73 74 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 44 65 66 69 6e | ery-request.&rest.body)..."Defin |
| 48e0 | 65 73 20 61 20 73 69 6d 70 6c 65 20 68 74 74 70 64 20 73 65 72 76 65 6c 65 74 2e 20 54 68 65 20 | es.a.simple.httpd.servelet..The. |
| 4900 | 73 65 72 76 6c 65 74 20 72 75 6e 73 20 69 6e 20 61 0a 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 | servlet.runs.in.a.temporary.buff |
| 4920 | 65 72 20 77 68 69 63 68 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72 76 65 64 | er.which.is.automatically.served |
| 4940 | 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 0a 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 68 65 61 64 | .to.the.client.along.with.a.head |
| 4960 | 65 72 2e 0a 0a 41 20 73 65 72 76 6c 65 74 20 74 68 61 74 20 73 65 72 76 65 73 20 74 68 65 20 63 | er...A.servlet.that.serves.the.c |
| 4980 | 6f 6e 74 65 6e 74 73 20 6f 66 20 2a 73 63 72 61 74 63 68 2a 2c 0a 0a 20 20 20 20 28 64 65 66 73 | ontents.of.*scratch*,......(defs |
| 49a0 | 65 72 76 6c 65 74 20 73 63 72 61 74 63 68 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 29 0a 20 20 20 | ervlet.scratch.text/plain.().... |
| 49c0 | 20 20 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 67 65 74 | ...(insert-buffer-substring.(get |
| 49e0 | 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 5c 22 2a 73 63 72 61 74 63 68 2a 5c 22 29 29 29 0a | -buffer-create.\"*scratch*\"))). |
| 4a00 | 0a 41 20 73 65 72 76 6c 65 74 20 74 68 61 74 20 73 61 79 73 20 68 65 6c 6c 6f 2c 0a 0a 20 20 20 | .A.servlet.that.says.hello,..... |
| 4a20 | 20 28 64 65 66 73 65 72 76 6c 65 74 20 68 65 6c 6c 6f 2d 77 6f 72 6c 64 20 74 65 78 74 2f 70 6c | .(defservlet.hello-world.text/pl |
| 4a40 | 61 69 6e 20 28 70 61 74 68 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 5c 22 68 65 6c 6c 6f | ain.(path).......(insert.\"hello |
| 4a60 | 2c 20 5c 22 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e 64 69 72 65 63 74 6f 72 79 20 70 61 74 | ,.\".(file-name-nondirectory.pat |
| 4a80 | 68 29 29 29 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 | h))))"...(declare.(indent.defun) |
| 4aa0 | 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 73 79 6d 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c | )...(let.((proc-sym.(make-symbol |
| 4ac0 | 20 22 70 72 6f 63 22 29 29 0a 20 20 20 20 20 20 20 20 28 66 6e 61 6d 65 20 28 69 6e 74 65 72 6e | ."proc")).........(fname.(intern |
| 4ae0 | 20 28 63 6f 6e 63 61 74 20 22 68 74 74 70 64 2f 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6e | .(concat."httpd/".(symbol-name.n |
| 4b00 | 61 6d 65 29 29 29 29 29 0a 20 20 20 20 60 28 64 65 66 75 6e 20 2c 66 6e 61 6d 65 20 28 2c 70 72 | ame))))).....`(defun.,fname.(,pr |
| 4b20 | 6f 63 2d 73 79 6d 20 2c 40 70 61 74 68 2d 71 75 65 72 79 2d 72 65 71 75 65 73 74 20 26 72 65 73 | oc-sym.,@path-query-request.&res |
| 4b40 | 74 20 2c 28 63 6c 2d 67 65 6e 73 79 6d 29 29 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d 68 74 74 | t.,(cl-gensym))........(with-htt |
| 4b60 | 70 64 2d 62 75 66 66 65 72 20 2c 70 72 6f 63 2d 73 79 6d 20 2c 28 68 74 74 70 64 2d 2d 73 74 72 | pd-buffer.,proc-sym.,(httpd--str |
| 4b80 | 69 6e 67 69 66 79 20 6d 69 6d 65 29 0a 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 29 | ingify.mime)..........,@body)))) |
| 4ba0 | 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 70 61 72 73 65 2d 65 6e 64 70 6f 69 6e 74 20 28 73 | ..(defun.httpd-parse-endpoint.(s |
| 4bc0 | 79 6d 62 6f 6c 29 0a 20 20 22 50 61 72 73 65 20 61 6e 20 65 6e 64 70 6f 69 6e 74 20 64 65 66 69 | ymbol)..."Parse.an.endpoint.defi |
| 4be0 | 6e 69 74 69 6f 6e 20 74 65 6d 70 6c 61 74 65 20 66 6f 72 20 75 73 65 20 77 69 74 68 20 60 64 65 | nition.template.for.use.with.`de |
| 4c00 | 66 73 65 72 76 6c 65 74 2a 27 2e 22 0a 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 69 74 65 6d | fservlet*'."...(cl-loop.for.item |
| 4c20 | 20 69 6e 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 | .in.(split-string.(symbol-name.s |
| 4c40 | 79 6d 62 6f 6c 29 20 22 2f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 75 70 66 | ymbol)."/")............for.n.upf |
| 4c60 | 72 6f 6d 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 28 61 6e 64 20 28 3e 20 28 6c | rom.0............when.(and.(>.(l |
| 4c80 | 65 6e 67 74 68 20 69 74 65 6d 29 20 30 29 20 28 65 71 6c 20 28 61 72 65 66 20 69 74 65 6d 20 30 | ength.item).0).(eql.(aref.item.0 |
| 4ca0 | 29 20 3f 3a 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e 73 20 | ).?:))............collect.(cons. |
| 4cc0 | 28 69 6e 74 65 72 6e 20 28 73 75 62 73 74 72 69 6e 67 20 69 74 65 6d 20 31 29 29 20 6e 29 20 69 | (intern.(substring.item.1)).n).i |
| 4ce0 | 6e 74 6f 20 76 61 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 | nto.vars............else.collect |
| 4d00 | 20 69 74 65 6d 20 69 6e 74 6f 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c | .item.into.path............final |
| 4d20 | 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 | ly............(cl-return........ |
| 4d40 | 20 20 20 20 20 28 63 6c 2d 76 61 6c 75 65 73 20 28 69 6e 74 65 72 6e 20 28 6d 61 70 63 6f 6e 63 | .....(cl-values.(intern.(mapconc |
| 4d60 | 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 70 61 74 68 20 22 2f 22 29 29 20 76 61 72 73 29 29 29 | at.#'identity.path."/")).vars))) |
| 4d80 | 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 70 61 74 68 20 6e 69 6c 0a 20 20 22 41 6e 61 | )..(defvar.httpd-path.nil..."Ana |
| 4da0 | 70 68 6f 72 69 63 20 76 61 72 69 61 62 6c 65 20 66 6f 72 20 60 64 65 66 73 65 72 76 6c 65 74 2a | phoric.variable.for.`defservlet* |
| 4dc0 | 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 71 75 65 72 79 20 6e 69 6c 0a 20 20 | '.")..(defvar.httpd-query.nil... |
| 4de0 | 22 41 6e 61 70 68 6f 72 69 63 20 76 61 72 69 61 62 6c 65 20 66 6f 72 20 60 64 65 66 73 65 72 76 | "Anaphoric.variable.for.`defserv |
| 4e00 | 6c 65 74 2a 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 72 65 71 75 65 73 74 20 | let*'.")..(defvar.httpd-request. |
| 4e20 | 6e 69 6c 0a 20 20 22 41 6e 61 70 68 6f 72 69 63 20 76 61 72 69 61 62 6c 65 20 66 6f 72 20 60 64 | nil..."Anaphoric.variable.for.`d |
| 4e40 | 65 66 73 65 72 76 6c 65 74 2a 27 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 73 70 | efservlet*'.")..(defvar.httpd-sp |
| 4e60 | 6c 69 74 2d 70 61 74 68 20 6e 69 6c 0a 20 20 22 41 6e 61 70 68 6f 72 69 63 20 76 61 72 69 61 62 | lit-path.nil..."Anaphoric.variab |
| 4e80 | 6c 65 20 66 6f 72 20 60 64 65 66 73 65 72 76 6c 65 74 2a 27 2e 22 29 0a 0a 28 64 65 66 6d 61 63 | le.for.`defservlet*'.")..(defmac |
| 4ea0 | 72 6f 20 64 65 66 73 65 72 76 6c 65 74 2a 20 28 65 6e 64 70 6f 69 6e 74 20 6d 69 6d 65 20 61 72 | ro.defservlet*.(endpoint.mime.ar |
| 4ec0 | 67 73 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 64 65 66 73 65 72 76 6c | gs.&rest.body)..."Like.`defservl |
| 4ee0 | 65 74 27 2c 20 62 75 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 76 61 72 69 | et',.but.automatically.bind.vari |
| 4f00 | 61 62 6c 65 73 2f 61 72 67 75 6d 65 6e 74 73 0a 74 6f 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 | ables/arguments.to.the.request.. |
| 4f20 | 54 72 61 69 6c 69 6e 67 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 74 68 65 20 45 4e 44 50 4f | Trailing.components.of.the.ENDPO |
| 4f40 | 49 4e 54 20 63 61 6e 20 62 65 20 62 6f 75 6e 64 0a 62 79 20 70 72 65 66 69 78 69 6e 67 20 74 68 | INT.can.be.bound.by.prefixing.th |
| 4f60 | 65 73 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 77 69 74 68 20 61 20 63 6f 6c 6f 6e 2c 20 61 63 74 | ese.components.with.a.colon,.act |
| 4f80 | 69 6e 67 20 6c 69 6b 65 20 61 20 74 65 6d 70 6c 61 74 65 2e 0a 0a 20 20 20 20 28 64 65 66 73 65 | ing.like.a.template.......(defse |
| 4fa0 | 72 76 6c 65 74 2a 20 70 61 63 6b 61 67 65 73 2f 3a 70 61 63 6b 61 67 65 2f 3a 76 65 72 73 69 6f | rvlet*.packages/:package/:versio |
| 4fc0 | 6e 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 76 65 72 62 6f 73 65 29 0a 20 20 20 20 20 20 28 69 6e | n.text/plain.(verbose).......(in |
| 4fe0 | 73 65 72 74 20 28 66 6f 72 6d 61 74 20 5c 22 25 73 5c 5c 6e 25 73 5c 5c 6e 5c 22 20 70 61 63 6b | sert.(format.\"%s\\n%s\\n\".pack |
| 5000 | 61 67 65 20 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 67 65 74 2d | age.version)).......(princ.(get- |
| 5020 | 64 65 73 63 72 69 70 74 69 6f 6e 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 0a 20 20 | description.package.version))... |
| 5040 | 20 20 20 20 28 77 68 65 6e 20 76 65 72 62 6f 73 65 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 | ....(when.verbose.........(inser |
| 5060 | 74 20 28 66 6f 72 6d 61 74 20 5c 22 25 53 5c 22 20 28 67 65 74 2d 64 65 70 65 6e 64 65 6e 63 69 | t.(format.\"%S\".(get-dependenci |
| 5080 | 65 73 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 29 29 29 0a 0a 57 68 65 6e 20 61 63 | es.package.version)))))..When.ac |
| 50a0 | 63 65 73 73 65 64 20 66 72 6f 6d 20 74 68 69 73 20 55 52 4c 2c 0a 0a 20 20 20 20 68 74 74 70 3a | cessed.from.this.URL,......http: |
| 50c0 | 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 2f 70 61 63 6b 61 67 65 73 2f 66 6f 6f 62 61 72 2f 31 2e | //example.com/packages/foobar/1. |
| 50e0 | 30 3f 76 65 72 62 6f 73 65 3d 31 0a 0a 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 70 61 63 6b 61 | 0?verbose=1..the.variables.packa |
| 5100 | 67 65 2c 20 76 65 72 73 69 6f 6e 2c 20 61 6e 64 20 76 65 72 62 6f 73 65 20 77 69 6c 6c 20 62 65 | ge,.version,.and.verbose.will.be |
| 5120 | 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6d 70 6f 6e 65 | .bound.to.the.associated.compone |
| 5140 | 6e 74 73 20 6f 66 20 74 68 65 20 55 52 4c 2e 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 6e 6f 74 20 70 | nts.of.the.URL..Components.not.p |
| 5160 | 72 6f 76 69 64 65 64 20 61 72 65 0a 62 6f 75 6e 64 20 74 6f 20 6e 69 6c 2e 20 54 68 65 20 71 75 | rovided.are.bound.to.nil..The.qu |
| 5180 | 65 72 79 20 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 75 73 65 20 74 68 65 20 43 6f 6d 6d 6f 6e | ery.arguments.can.use.the.Common |
| 51a0 | 20 4c 69 73 70 20 26 6b 65 79 0a 66 6f 72 6d 20 28 76 61 72 69 61 62 6c 65 20 64 65 66 61 75 6c | .Lisp.&key.form.(variable.defaul |
| 51c0 | 74 20 70 72 6f 76 69 64 65 64 2d 70 29 2e 0a 0a 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 2a | t.provided-p).......(defservlet* |
| 51e0 | 20 67 72 65 65 74 69 6e 67 2f 3a 6e 61 6d 65 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 28 67 72 65 | .greeting/:name.text/plain.((gre |
| 5200 | 65 74 69 6e 67 20 5c 22 68 69 5c 22 20 67 72 65 65 74 69 6e 67 2d 70 29 29 0a 20 20 20 20 20 20 | eting.\"hi\".greeting-p))....... |
| 5220 | 28 70 72 69 6e 63 20 28 66 6f 72 6d 61 74 20 5c 22 25 73 2c 20 25 73 20 28 70 72 6f 76 69 64 65 | (princ.(format.\"%s,.%s.(provide |
| 5240 | 64 3a 20 25 73 29 5c 22 20 67 72 65 65 74 69 6e 67 20 6e 61 6d 65 20 67 72 65 65 74 69 6e 67 2d | d:.%s)\".greeting.name.greeting- |
| 5260 | 70 29 29 29 0a 0a 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 70 61 74 68 2c 20 71 75 65 72 79 2c 20 | p)))..The.original.path,.query,. |
| 5280 | 61 6e 64 20 72 65 71 75 65 73 74 20 63 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 62 79 20 74 | and.request.can.be.accessed.by.t |
| 52a0 | 68 65 0a 61 6e 61 70 68 6f 72 69 63 20 73 70 65 63 69 61 6c 20 76 61 72 69 61 62 6c 65 73 20 60 | he.anaphoric.special.variables.` |
| 52c0 | 68 74 74 70 64 2d 70 61 74 68 27 2c 20 60 68 74 74 70 64 2d 71 75 65 72 79 27 2c 20 61 6e 64 0a | httpd-path',.`httpd-query',.and. |
| 52e0 | 60 68 74 74 70 64 2d 72 65 71 75 65 73 74 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e | `httpd-request'."...(declare.(in |
| 5300 | 64 65 6e 74 20 64 65 66 75 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 70 61 74 68 2d 6c 65 78 69 63 | dent.defun))...(let.((path-lexic |
| 5320 | 61 6c 20 28 63 6c 2d 67 65 6e 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 28 71 75 65 72 79 2d 6c | al.(cl-gensym)).........(query-l |
| 5340 | 65 78 69 63 61 6c 20 28 63 6c 2d 67 65 6e 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 71 | exical.(cl-gensym)).........(req |
| 5360 | 75 65 73 74 2d 6c 65 78 69 63 61 6c 20 28 63 6c 2d 67 65 6e 73 79 6d 29 29 29 0a 20 20 20 20 28 | uest-lexical.(cl-gensym))).....( |
| 5380 | 63 6c 2d 6d 75 6c 74 69 70 6c 65 2d 76 61 6c 75 65 2d 62 69 6e 64 20 28 70 61 74 68 20 76 61 72 | cl-multiple-value-bind.(path.var |
| 53a0 | 73 29 20 28 68 74 74 70 64 2d 70 61 72 73 65 2d 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e | s).(httpd-parse-endpoint.endpoin |
| 53c0 | 74 29 0a 20 20 20 20 20 20 60 28 64 65 66 73 65 72 76 6c 65 74 20 2c 70 61 74 68 20 2c 6d 69 6d | t).......`(defservlet.,path.,mim |
| 53e0 | 65 20 28 2c 70 61 74 68 2d 6c 65 78 69 63 61 6c 20 2c 71 75 65 72 79 2d 6c 65 78 69 63 61 6c 20 | e.(,path-lexical.,query-lexical. |
| 5400 | 2c 72 65 71 75 65 73 74 2d 6c 65 78 69 63 61 6c 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 | ,request-lexical)..........(let. |
| 5420 | 28 28 68 74 74 70 64 2d 70 61 74 68 20 2c 70 61 74 68 2d 6c 65 78 69 63 61 6c 29 0a 20 20 20 20 | ((httpd-path.,path-lexical)..... |
| 5440 | 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 71 75 65 72 79 20 2c 71 75 65 72 79 2d 6c | ...........(httpd-query.,query-l |
| 5460 | 65 78 69 63 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 72 65 | exical)................(httpd-re |
| 5480 | 71 75 65 73 74 20 2c 72 65 71 75 65 73 74 2d 6c 65 78 69 63 61 6c 29 0a 20 20 20 20 20 20 20 20 | quest.,request-lexical)......... |
| 54a0 | 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 70 6c 69 74 2d 70 61 74 68 20 28 73 70 6c 69 74 2d | .......(httpd-split-path.(split- |
| 54c0 | 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | string.......................... |
| 54e0 | 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 2c 70 61 74 68 2d 6c 65 78 69 63 61 | .........(substring.,path-lexica |
| 5500 | 6c 20 31 29 20 22 2f 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 2c 28 63 6c | l.1)."/")))............(let.,(cl |
| 5520 | 2d 6c 6f 6f 70 20 66 6f 72 20 28 76 61 72 20 2e 20 70 6f 73 29 20 69 6e 20 76 61 72 73 0a 20 20 | -loop.for.(var...pos).in.vars... |
| 5540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 78 74 72 | ........................for.extr |
| 5560 | 61 63 74 20 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | act.=........................... |
| 5580 | 60 28 68 74 74 70 64 2d 75 6e 68 65 78 20 28 6e 74 68 20 2c 70 6f 73 20 68 74 74 70 64 2d 73 70 | `(httpd-unhex.(nth.,pos.httpd-sp |
| 55a0 | 6c 69 74 2d 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lit-path))...................... |
| 55c0 | 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 76 61 72 20 65 78 74 72 61 63 74 29 29 | .....collect.(list.var.extract)) |
| 55e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 2c 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 | ..............(let.,(cl-loop.for |
| 5600 | 20 61 72 67 20 69 6e 20 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .arg.in.args.................... |
| 5620 | 20 20 20 20 20 20 20 20 20 66 6f 72 20 68 61 73 2d 64 65 66 61 75 6c 74 20 3d 20 28 6c 69 73 74 | .........for.has-default.=.(list |
| 5640 | 70 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | p.arg).......................... |
| 5660 | 20 20 20 66 6f 72 20 68 61 73 2d 64 65 66 61 75 6c 74 2d 70 20 3d 20 28 61 6e 64 20 68 61 73 2d | ...for.has-default-p.=.(and.has- |
| 5680 | 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | default......................... |
| 56a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 | .............................(=. |
| 56c0 | 33 20 28 6c 65 6e 67 74 68 20 61 72 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 3.(length.arg)))................ |
| 56e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 61 72 67 2d 6e 61 6d 65 20 3d 20 28 73 79 6d | .............for.arg-name.=.(sym |
| 5700 | 62 6f 6c 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | bol-name........................ |
| 5720 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 68 61 73 2d 64 65 66 | .....................(if.has-def |
| 5740 | 61 75 6c 74 20 28 63 6c 2d 66 69 72 73 74 20 61 72 67 29 20 61 72 67 29 29 0a 20 20 20 20 20 20 | ault.(cl-first.arg).arg))....... |
| 5760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 68 61 73 2d 64 | ......................when.has-d |
| 5780 | 65 66 61 75 6c 74 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | efault.collect.................. |
| 57a0 | 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6c 2d 66 69 72 73 74 20 61 72 67 29 0a | ...........(list.(cl-first.arg). |
| 57c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 57e0 | 20 20 60 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 73 73 6f 63 20 2c 61 72 67 2d 6e 61 6d 65 | ..`(let.((value.(assoc.,arg-name |
| 5800 | 20 68 74 74 70 64 2d 71 75 65 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .httpd-query)))................. |
| 5820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 | .....................(if.value.. |
| 5840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 5860 | 20 20 20 20 20 20 20 20 28 63 6c 2d 73 65 63 6f 6e 64 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 | ........(cl-second.value)....... |
| 5880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 58a0 | 20 2c 28 63 6c 2d 73 65 63 6f 6e 64 20 61 72 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | .,(cl-second.arg))))............ |
| 58c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 0a 20 20 | .................else.collect... |
| 58e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 | ..........................(list. |
| 5900 | 61 72 67 20 60 28 63 6c 2d 73 65 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | arg.`(cl-second................. |
| 5920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 20 2c | ........................(assoc., |
| 5940 | 61 72 67 2d 6e 61 6d 65 20 68 74 74 70 64 2d 71 75 65 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 | arg-name.httpd-query)))......... |
| 5960 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 68 61 73 2d 64 65 66 | ....................when.has-def |
| 5980 | 61 75 6c 74 2d 70 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ault-p.collect.................. |
| 59a0 | 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6c 2d 74 68 69 72 64 20 61 72 67 29 0a | ...........(list.(cl-third.arg). |
| 59c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 59e0 | 20 20 60 28 6e 6f 74 20 28 6e 75 6c 6c 20 28 61 73 73 6f 63 20 2c 61 72 67 2d 6e 61 6d 65 20 68 | ..`(not.(null.(assoc.,arg-name.h |
| 5a00 | 74 74 70 64 2d 71 75 65 72 79 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c | ttpd-query)))))................, |
| 5a20 | 40 62 6f 64 79 29 29 29 29 29 29 29 0a 0a 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 61 64 64 2d 6b 65 79 | @body)))))))..(font-lock-add-key |
| 5a40 | 77 6f 72 64 73 0a 20 27 65 6d 61 63 73 2d 6c 69 73 70 2d 6d 6f 64 65 0a 20 27 28 28 22 28 5c 5c | words..'emacs-lisp-mode..'(("(\\ |
| 5a60 | 3c 5c 5c 28 64 65 66 73 65 72 76 6c 65 74 5c 5c 2a 3f 5c 5c 29 5c 5c 3e 20 2b 5c 5c 28 5b 5e 20 | <\\(defservlet\\*?\\)\\>.+\\([^. |
| 5a80 | 28 29 5d 2b 5c 5c 29 20 2b 5c 5c 28 5b 5e 20 28 29 5d 2b 5c 5c 29 22 0a 20 20 20 20 28 31 20 27 | ()]+\\).+\\([^.()]+\\)".....(1.' |
| 5aa0 | 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 29 0a 20 20 20 20 28 32 20 27 | font-lock-keyword-face).....(2.' |
| 5ac0 | 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 29 0a 20 20 | font-lock-function-name-face)... |
| 5ae0 | 20 20 28 33 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 74 79 70 65 2d 66 61 63 65 29 29 29 29 0a 0a 28 | ..(3.'font-lock-type-face))))..( |
| 5b00 | 64 65 66 6d 61 63 72 6f 20 68 74 74 70 64 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 20 | defmacro.httpd-def-file-servlet. |
| 5b20 | 28 6e 61 6d 65 20 72 6f 6f 74 29 0a 20 20 22 44 65 66 69 6e 65 73 20 61 20 73 65 72 76 6c 65 74 | (name.root)..."Defines.a.servlet |
| 5b40 | 20 74 68 61 74 20 73 65 72 76 65 73 20 66 69 6c 65 73 20 66 72 6f 6d 20 52 4f 4f 54 20 75 6e 64 | .that.serves.files.from.ROOT.und |
| 5b60 | 65 72 20 74 68 65 20 72 6f 75 74 65 20 4e 41 4d 45 2e 0a 0a 20 20 20 20 28 68 74 74 70 64 2d 64 | er.the.route.NAME.......(httpd-d |
| 5b80 | 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 20 6d 79 2f 77 77 77 20 5c 22 2f 76 61 72 2f 77 77 | ef-file-servlet.my/www.\"/var/ww |
| 5ba0 | 77 2f 5c 22 29 0a 0a 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 68 61 6e 64 6c 65 73 20 72 65 64 | w/\")..Automatically.handles.red |
| 5bc0 | 69 72 65 63 74 73 20 61 6e 64 20 75 73 65 73 20 60 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f | irects.and.uses.`httpd-serve-roo |
| 5be0 | 74 27 20 74 6f 0a 61 63 74 75 61 6c 6c 79 20 73 65 72 76 65 20 75 70 20 66 69 6c 65 73 2e 22 0a | t'.to.actually.serve.up.files.". |
| 5c00 | 20 20 28 6c 65 74 2a 20 28 28 73 68 6f 72 74 2d 72 6f 6f 74 20 28 64 69 72 65 63 74 6f 72 79 2d | ..(let*.((short-root.(directory- |
| 5c20 | 66 69 6c 65 2d 6e 61 6d 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65 29 29 29 0a 20 | file-name.(symbol-name.name))).. |
| 5c40 | 20 20 20 20 20 20 20 20 28 70 61 74 68 2d 72 6f 6f 74 20 28 63 6f 6e 63 61 74 20 73 68 6f 72 74 | ........(path-root.(concat.short |
| 5c60 | 2d 72 6f 6f 74 20 22 2f 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 68 6f 70 20 28 6c 65 6e 67 | -root."/"))..........(chop.(leng |
| 5c80 | 74 68 20 70 61 74 68 2d 72 6f 6f 74 29 29 29 0a 20 20 20 20 60 28 64 65 66 73 65 72 76 6c 65 74 | th.path-root))).....`(defservlet |
| 5ca0 | 20 2c 6e 61 6d 65 20 6e 69 6c 20 28 75 72 69 2d 70 61 74 68 20 71 75 65 72 79 20 72 65 71 75 65 | .,name.nil.(uri-path.query.reque |
| 5cc0 | 73 74 29 0a 20 20 20 20 20 20 20 28 73 65 74 66 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 | st)........(setf.httpd--header-s |
| 5ce0 | 65 6e 74 20 74 29 20 3b 20 44 6f 6e 27 74 20 61 63 74 75 61 6c 6c 79 20 75 73 65 20 74 68 69 73 | ent.t).;.Don't.actually.use.this |
| 5d00 | 20 74 65 6d 70 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 6c 65 6e 67 | .temp.buffer........(if.(=.(leng |
| 5d20 | 74 68 20 75 72 69 2d 70 61 74 68 29 20 2c 63 68 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 | th.uri-path).,chop)............( |
| 5d40 | 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 20 74 20 2c 70 61 74 68 2d 72 6f 6f 74 29 0a 20 20 20 | httpd-redirect.t.,path-root).... |
| 5d60 | 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 74 68 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 | ......(let.((path.(substring.uri |
| 5d80 | 2d 70 61 74 68 20 2c 63 68 6f 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 | -path.,chop)))............(httpd |
| 5da0 | 2d 73 65 72 76 65 2d 72 6f 6f 74 20 74 20 2c 72 6f 6f 74 20 70 61 74 68 20 72 65 71 75 65 73 74 | -serve-root.t.,root.path.request |
| 5dc0 | 29 29 29 29 29 29 0a 0a 3b 3b 20 52 65 71 75 65 73 74 20 70 61 72 73 69 6e 67 0a 0a 28 64 65 66 | ))))))..;;.Request.parsing..(def |
| 5de0 | 75 6e 20 68 74 74 70 64 2d 2d 6e 6f 72 6d 61 6c 69 7a 65 2d 68 65 61 64 65 72 20 28 68 65 61 64 | un.httpd--normalize-header.(head |
| 5e00 | 65 72 29 0a 20 20 22 44 65 73 74 72 75 63 74 69 76 65 6c 79 20 63 61 70 69 74 61 6c 69 7a 65 20 | er)..."Destructively.capitalize. |
| 5e20 | 74 68 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 48 45 41 44 45 52 2e 22 0a 20 20 28 6d 61 | the.components.of.HEADER."...(ma |
| 5e40 | 70 63 6f 6e 63 61 74 20 23 27 63 61 70 69 74 61 6c 69 7a 65 20 28 73 70 6c 69 74 2d 73 74 72 69 | pconcat.#'capitalize.(split-stri |
| 5e60 | 6e 67 20 68 65 61 64 65 72 20 22 2d 22 29 20 22 2d 22 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 | ng.header."-")."-"))..(defun.htt |
| 5e80 | 70 64 2d 70 61 72 73 65 20 28 29 0a 20 20 22 50 61 72 73 65 20 48 54 54 50 20 68 65 61 64 65 72 | pd-parse.()..."Parse.HTTP.header |
| 5ea0 | 20 69 6e 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 6e 74 6f 20 61 73 73 6f 63 69 61 74 | .in.current.buffer.into.associat |
| 5ec0 | 69 6f 6e 20 6c 69 73 74 2e 0a 4c 65 61 76 65 73 20 74 68 65 20 70 6f 69 6e 74 20 61 74 20 74 68 | ion.list..Leaves.the.point.at.th |
| 5ee0 | 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 6e 74 2e 20 | e.start.of.the.request.content.. |
| 5f00 | 52 65 74 75 72 6e 73 20 6e 69 6c 0a 69 66 20 69 74 20 66 61 69 6c 65 64 20 74 6f 20 70 61 72 73 | Returns.nil.if.it.failed.to.pars |
| 5f20 | 65 20 61 20 63 6f 6d 70 6c 65 74 65 20 48 54 54 50 20 68 65 61 64 65 72 2e 22 0a 20 20 28 67 6f | e.a.complete.HTTP.header."...(go |
| 5f40 | 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 28 77 68 65 6e 20 28 6c 6f | to-char.(point-min))...(when.(lo |
| 5f60 | 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 5b 5e 20 5d 2b 5c 5c 29 20 2b 5c 5c 28 5b 5e 20 5d 2b 5c | oking-at."\\([^.]+\\).+\\([^.]+\ |
| 5f80 | 5c 29 20 2b 5c 5c 28 5b 5e 5c 72 5d 2b 5c 5c 29 5c 72 5c 6e 22 29 0a 20 20 20 20 28 6c 65 74 20 | \).+\\([^\r]+\\)\r\n").....(let. |
| 5fa0 | 28 28 6d 65 74 68 6f 64 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 29 0a 20 20 20 20 20 | ((method.(match-string.1))...... |
| 5fc0 | 20 20 20 20 20 28 70 61 74 68 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 | .....(path.(decode-coding-string |
| 5fe0 | 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 29 20 27 69 73 6f 2d 38 38 35 39 2d 31 29 29 0a | .(match-string.2).'iso-8859-1)). |
| 6000 | 20 20 20 20 20 20 20 20 20 20 28 76 65 72 73 69 6f 6e 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 | ..........(version.(match-string |
| 6020 | 20 33 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 20 28 29 29 29 0a 20 20 20 | .3))...........(headers.())).... |
| 6040 | 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 | ...(goto-char.(match-end.0)).... |
| 6060 | 20 20 20 28 77 68 69 6c 65 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 5b 2d 21 23 2d 27 | ...(while.(looking-at."\\([-!#-' |
| 6080 | 2a 2b 2e 30 2d 39 41 2d 5a 5e 5f 60 61 2d 7a 7c 7e 5d 2b 5c 5c 29 3a 20 2a 5c 5c 28 5b 5e 5c 72 | *+.0-9A-Z^_`a-z|~]+\\):.*\\([^\r |
| 60a0 | 5d 2b 5c 5c 29 5c 72 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 | ]+\\)\r\n").........(goto-char.( |
| 60c0 | 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 61 6d | match-end.0)).........(let.((nam |
| 60e0 | 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | e.(match-string.1))............. |
| 6100 | 20 20 28 76 61 6c 75 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 29 29 29 0a 20 20 20 20 | ..(value.(match-string.2)))..... |
| 6120 | 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 28 68 74 74 70 64 2d 2d 6e 6f 72 6d 61 6c | ......(push.(list.(httpd--normal |
| 6140 | 69 7a 65 2d 68 65 61 64 65 72 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ize-header.name)................ |
| 6160 | 20 20 20 20 20 20 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 76 61 6c | .......(decode-coding-string.val |
| 6180 | 75 65 20 27 69 73 6f 2d 38 38 35 39 2d 31 29 29 20 68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 | ue.'iso-8859-1)).headers)))..... |
| 61a0 | 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 72 5c 6e 22 29 0a 20 20 20 20 | ..(when.(looking-at."\r\n")..... |
| 61c0 | 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 | ....(goto-char.(match-end.0))... |
| 61e0 | 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 6d 65 74 68 6f 64 20 70 61 74 68 20 76 65 | ......(cons.(list.method.path.ve |
| 6200 | 72 73 69 6f 6e 29 20 28 6e 72 65 76 65 72 73 65 20 68 65 61 64 65 72 73 29 29 29 29 29 29 0a 0a | rsion).(nreverse.headers)))))).. |
| 6220 | 28 64 65 66 75 6e 20 68 74 74 70 64 2d 75 6e 68 65 78 20 28 73 74 72 29 0a 20 20 22 46 75 6c 6c | (defun.httpd-unhex.(str)..."Full |
| 6240 | 79 20 64 65 63 6f 64 65 20 74 68 65 20 55 52 4c 20 65 6e 63 6f 64 69 6e 67 20 69 6e 20 53 54 52 | y.decode.the.URL.encoding.in.STR |
| 6260 | 20 28 69 6e 63 6c 75 64 69 6e 67 20 2b 27 73 29 2e 22 0a 20 20 28 77 68 65 6e 20 73 74 72 0a 20 | .(including.+'s)."...(when.str.. |
| 6280 | 20 20 20 28 6c 65 74 20 28 28 6e 6f 6e 70 6c 75 73 73 65 64 20 28 72 65 70 6c 61 63 65 2d 72 65 | ...(let.((nonplussed.(replace-re |
| 62a0 | 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 22 2b 22 | gexp-in-string.(regexp-quote."+" |
| 62c0 | 29 20 22 20 22 20 73 74 72 29 29 29 0a 20 20 20 20 20 20 28 64 65 63 6f 64 65 2d 63 6f 64 69 6e | ).".".str))).......(decode-codin |
| 62e0 | 67 2d 73 74 72 69 6e 67 20 28 75 72 6c 2d 75 6e 68 65 78 2d 73 74 72 69 6e 67 20 6e 6f 6e 70 6c | g-string.(url-unhex-string.nonpl |
| 6300 | 75 73 73 65 64 20 74 29 20 27 75 74 66 2d 38 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 | ussed.t).'utf-8))))..(defun.http |
| 6320 | 64 2d 70 61 72 73 65 2d 61 72 67 73 20 28 61 72 67 73 74 72 29 0a 20 20 22 50 61 72 73 65 20 61 | d-parse-args.(argstr)..."Parse.a |
| 6340 | 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 55 52 4c 20 65 6e 63 6f 64 65 64 20 61 | .string.containing.URL.encoded.a |
| 6360 | 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 6c 65 6e | rguments."...(unless.(zerop.(len |
| 6380 | 67 74 68 20 61 72 67 73 74 72 29 29 0a 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 | gth.argstr)).....(mapcar.(lambda |
| 63a0 | 20 28 73 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 27 68 74 | .(str)...............(mapcar.'ht |
| 63c0 | 74 70 64 2d 75 6e 68 65 78 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 73 74 72 20 22 3d 22 29 | tpd-unhex.(split-string.str."=") |
| 63e0 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 61 72 67 | )).............(split-string.arg |
| 6400 | 73 74 72 20 22 26 22 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 70 61 72 73 65 2d | str."&"))))..(defun.httpd-parse- |
| 6420 | 75 72 69 20 28 75 72 69 29 0a 20 20 22 53 70 6c 69 74 20 61 20 55 52 49 20 69 6e 74 6f 20 69 74 | uri.(uri)..."Split.a.URI.into.it |
| 6440 | 73 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0a 54 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 | s.components..The.first.element. |
| 6460 | 6f 66 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 73 63 72 69 70 | of.the.return.value.is.the.scrip |
| 6480 | 74 20 70 61 74 68 2c 20 74 68 65 0a 73 65 63 6f 6e 64 20 65 6c 65 6d 65 6e 74 20 69 73 20 61 6e | t.path,.the.second.element.is.an |
| 64a0 | 20 61 6c 69 73 74 20 6f 66 20 76 61 72 69 61 62 6c 65 2f 76 61 6c 75 65 20 70 61 69 72 73 2c 20 | .alist.of.variable/value.pairs,. |
| 64c0 | 61 6e 64 20 74 68 65 20 74 68 69 72 64 0a 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 66 72 61 | and.the.third.element.is.the.fra |
| 64e0 | 67 6d 65 6e 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 31 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 | gment."...(let.((p1.(string-matc |
| 6500 | 68 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 22 3f 22 29 20 75 72 69 29 29 0a 20 20 20 20 20 | h.(regexp-quote."?").uri))...... |
| 6520 | 20 20 20 28 70 32 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 28 72 65 67 65 78 70 2d 71 75 6f | ...(p2.(string-match.(regexp-quo |
| 6540 | 74 65 20 22 23 22 29 20 75 72 69 29 29 0a 20 20 20 20 20 20 20 20 72 65 74 76 61 6c 29 0a 20 20 | te."#").uri)).........retval)... |
| 6560 | 20 20 28 70 75 73 68 20 28 69 66 20 70 32 20 28 68 74 74 70 64 2d 75 6e 68 65 78 20 28 73 75 62 | ..(push.(if.p2.(httpd-unhex.(sub |
| 6580 | 73 74 72 69 6e 67 20 75 72 69 20 28 31 2b 20 70 32 29 29 29 29 20 72 65 74 76 61 6c 29 0a 20 20 | string.uri.(1+.p2)))).retval)... |
| 65a0 | 20 20 28 70 75 73 68 20 28 69 66 20 70 31 20 28 68 74 74 70 64 2d 70 61 72 73 65 2d 61 72 67 73 | ..(push.(if.p1.(httpd-parse-args |
| 65c0 | 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 20 28 31 2b 20 70 31 29 20 70 32 29 29 29 20 72 65 | .(substring.uri.(1+.p1).p2))).re |
| 65e0 | 74 76 61 6c 29 0a 20 20 20 20 28 70 75 73 68 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 20 30 | tval).....(push.(substring.uri.0 |
| 6600 | 20 28 6f 72 20 70 31 20 70 32 29 29 20 72 65 74 76 61 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 | .(or.p1.p2)).retval)))..(defun.h |
| 6620 | 74 74 70 64 2d 65 73 63 61 70 65 2d 68 74 6d 6c 2d 62 75 66 66 65 72 20 28 29 0a 20 20 22 45 73 | ttpd-escape-html-buffer.()..."Es |
| 6640 | 63 61 70 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 | cape.current.buffer.contents.to. |
| 6660 | 62 65 20 73 61 66 65 20 66 6f 72 20 69 6e 73 65 72 74 69 6e 67 20 69 6e 74 6f 20 48 54 4d 4c 2e | be.safe.for.inserting.into.HTML. |
| 6680 | 22 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 28 77 | "...(goto-char.(point-min))...(w |
| 66a0 | 68 69 6c 65 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5b 3c 3e | hile.(search-forward-regexp."[<> |
| 66c0 | 26 5d 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 0a 20 20 | &]".nil.t).....(replace-match... |
| 66e0 | 20 20 20 28 63 6c 2d 63 61 73 65 20 28 61 72 65 66 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 | ...(cl-case.(aref.(match-string. |
| 6700 | 30 29 20 30 29 0a 20 20 20 20 20 20 20 28 3f 3c 20 22 26 6c 74 3b 22 29 0a 20 20 20 20 20 20 20 | 0).0)........(?<."<")........ |
| 6720 | 28 3f 3e 20 22 26 67 74 3b 22 29 0a 20 20 20 20 20 20 20 28 3f 26 20 22 26 61 6d 70 3b 22 29 29 | (?>.">")........(?&."&")) |
| 6740 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 65 73 63 61 70 65 2d 68 74 6d 6c 20 28 73 | )))..(defun.httpd-escape-html.(s |
| 6760 | 74 72 69 6e 67 29 0a 20 20 22 45 73 63 61 70 65 20 53 54 52 49 4e 47 20 73 6f 20 74 68 61 74 20 | tring)..."Escape.STRING.so.that. |
| 6780 | 69 74 27 73 20 73 61 66 65 20 74 6f 20 69 6e 73 65 72 74 20 69 6e 74 6f 20 61 6e 20 48 54 4d 4c | it's.safe.to.insert.into.an.HTML |
| 67a0 | 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a | .document."...(with-temp-buffer. |
| 67c0 | 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 68 74 74 70 64 2d 65 | ....(insert.string).....(httpd-e |
| 67e0 | 73 63 61 70 65 2d 68 74 6d 6c 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 62 75 66 66 65 72 2d 73 | scape-html-buffer).....(buffer-s |
| 6800 | 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 20 50 61 74 68 20 68 61 6e 64 6c 69 6e 67 0a 0a 28 64 65 66 | tring)))..;;.Path.handling..(def |
| 6820 | 75 6e 20 68 74 74 70 64 2d 73 74 61 74 75 73 20 28 70 61 74 68 29 0a 20 20 22 44 65 74 65 72 6d | un.httpd-status.(path)..."Determ |
| 6840 | 69 6e 65 20 73 74 61 74 75 73 20 63 6f 64 65 20 66 6f 72 20 50 41 54 48 2e 22 0a 20 20 28 63 6f | ine.status.code.for.PATH."...(co |
| 6860 | 6e 64 0a 20 20 20 28 28 6e 6f 74 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 70 61 74 68 29 | nd....((not.(file-exists-p.path) |
| 6880 | 29 20 20 20 34 30 34 29 0a 20 20 20 28 28 6e 6f 74 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 | )...404)....((not.(file-readable |
| 68a0 | 2d 70 20 70 61 74 68 29 29 20 34 30 33 29 0a 20 20 20 28 28 61 6e 64 20 28 66 69 6c 65 2d 64 69 | -p.path)).403)....((and.(file-di |
| 68c0 | 72 65 63 74 6f 72 79 2d 70 20 70 61 74 68 29 20 28 6e 6f 74 20 68 74 74 70 64 2d 6c 69 73 74 69 | rectory-p.path).(not.httpd-listi |
| 68e0 | 6e 67 73 29 29 20 34 30 33 29 0a 20 20 20 28 32 30 30 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 | ngs)).403)....(200)))..(defun.ht |
| 6900 | 74 70 64 2d 63 6c 65 61 6e 2d 70 61 74 68 20 28 70 61 74 68 29 0a 20 20 22 43 6c 65 61 6e 20 64 | tpd-clean-path.(path)..."Clean.d |
| 6920 | 61 6e 67 65 72 6f 75 73 20 2e 2e 20 66 72 6f 6d 20 50 41 54 48 20 61 6e 64 20 72 65 6d 6f 76 65 | angerous....from.PATH.and.remove |
| 6940 | 20 74 68 65 20 6c 65 61 64 69 6e 67 20 73 6c 61 73 68 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 | .the.leading.slash."...(let*.((s |
| 6960 | 65 70 20 28 69 66 20 28 6d 65 6d 62 65 72 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e | ep.(if.(member.system-type.'(win |
| 6980 | 64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 29 29 20 22 5b 2f 5c 5c 5d 22 20 22 2f 22 29 29 0a 20 | dows-nt.ms-dos))."[/\\]"."/")).. |
| 69a0 | 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 20 28 64 65 6c 65 74 65 20 22 2e 2e 22 20 28 73 70 6c | ........(split.(delete."..".(spl |
| 69c0 | 69 74 2d 73 74 72 69 6e 67 20 70 61 74 68 20 73 65 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 | it-string.path.sep)))..........( |
| 69e0 | 75 6e 73 70 6c 69 74 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 28 64 65 | unsplit.(mapconcat.'identity.(de |
| 6a00 | 6c 65 74 65 20 22 22 20 73 70 6c 69 74 29 20 22 2f 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 | lete."".split)."/"))).....(conca |
| 6a20 | 74 20 22 2e 2f 22 20 75 6e 73 70 6c 69 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d | t."./".unsplit)))..(defun.httpd- |
| 6a40 | 67 65 6e 2d 70 61 74 68 20 28 70 61 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 72 6f 6f 74 29 0a 20 | gen-path.(path.&optional.root).. |
| 6a60 | 20 22 54 72 61 6e 73 6c 61 74 65 20 47 45 54 20 74 6f 20 73 65 63 75 72 65 20 70 61 74 68 20 69 | ."Translate.GET.to.secure.path.i |
| 6a80 | 6e 20 52 4f 4f 54 20 28 60 68 74 74 70 64 2d 72 6f 6f 74 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 | n.ROOT.(`httpd-root')."...(let.( |
| 6aa0 | 28 63 6c 65 61 6e 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 68 74 74 70 64 2d | (clean.(expand-file-name.(httpd- |
| 6ac0 | 63 6c 65 61 6e 2d 70 61 74 68 20 70 61 74 68 29 20 28 6f 72 20 72 6f 6f 74 20 68 74 74 70 64 2d | clean-path.path).(or.root.httpd- |
| 6ae0 | 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 | root)))).....(if.(file-directory |
| 6b00 | 2d 70 20 63 6c 65 61 6e 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 64 69 72 20 28 66 | -p.clean).........(let*.((dir.(f |
| 6b20 | 69 6c 65 2d 6e 61 6d 65 2d 61 73 2d 64 69 72 65 63 74 6f 72 79 20 63 6c 65 61 6e 29 29 0a 20 20 | ile-name-as-directory.clean))... |
| 6b40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 65 73 20 28 63 6c 2d 6d 61 70 63 61 72 | .............(indexes.(cl-mapcar |
| 6b60 | 20 28 61 70 70 6c 79 2d 70 61 72 74 69 61 6c 6c 79 20 27 63 6f 6e 63 61 74 20 64 69 72 29 20 68 | .(apply-partially.'concat.dir).h |
| 6b80 | 74 74 70 64 2d 69 6e 64 65 78 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | ttpd-indexes))................(e |
| 6ba0 | 78 69 73 74 69 6e 67 20 28 63 6c 2d 72 65 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 27 66 69 6c 65 2d | xisting.(cl-remove-if-not.'file- |
| 6bc0 | 65 78 69 73 74 73 2d 70 20 69 6e 64 65 78 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f | exists-p.indexes)))...........(o |
| 6be0 | 72 20 28 63 61 72 20 65 78 69 73 74 69 6e 67 29 20 64 69 72 29 29 0a 20 20 20 20 20 20 63 6c 65 | r.(car.existing).dir)).......cle |
| 6c00 | 61 6e 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 67 65 74 2d 73 65 72 76 6c 65 74 20 | an)))..(defun.httpd-get-servlet. |
| 6c20 | 28 75 72 69 2d 70 61 74 68 29 0a 20 20 22 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 65 72 76 | (uri-path)..."Determine.the.serv |
| 6c40 | 6c 65 74 20 74 6f 20 62 65 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 55 52 49 2d 50 41 54 48 2e | let.to.be.executed.for.URI-PATH. |
| 6c60 | 22 0a 20 20 28 69 66 20 28 6e 6f 74 20 68 74 74 70 64 2d 73 65 72 76 6c 65 74 73 29 0a 20 20 20 | "...(if.(not.httpd-servlets).... |
| 6c80 | 20 20 20 27 68 74 74 70 64 2f 0a 20 20 20 20 28 63 6c 2d 6c 61 62 65 6c 73 20 28 28 63 61 74 20 | ...'httpd/.....(cl-labels.((cat. |
| 6ca0 | 28 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 68 | (x)...................(concat."h |
| 6cc0 | 74 74 70 64 2f 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 28 72 65 76 | ttpd/".(mapconcat.'identity.(rev |
| 6ce0 | 65 72 73 65 20 78 29 20 22 2f 22 29 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 72 | erse.x)."/")))).......(let.((par |
| 6d00 | 74 73 20 28 63 64 72 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 28 64 69 72 65 63 74 6f 72 79 | ts.(cdr.(split-string.(directory |
| 6d20 | 2d 66 69 6c 65 2d 6e 61 6d 65 20 75 72 69 2d 70 61 74 68 29 20 22 2f 22 29 29 29 29 0a 20 20 20 | -file-name.uri-path)."/")))).... |
| 6d40 | 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 66 20 27 66 | .....(or..........(cl-find-if.'f |
| 6d60 | 62 6f 75 6e 64 70 20 28 6d 61 70 63 61 72 20 27 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 20 20 20 | boundp.(mapcar.'intern-soft..... |
| 6d80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 6da0 | 20 20 28 63 6c 2d 6d 61 70 6c 69 73 74 20 23 27 63 61 74 20 28 72 65 76 65 72 73 65 20 70 61 72 | ..(cl-maplist.#'cat.(reverse.par |
| 6dc0 | 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 27 68 74 74 70 64 2f 29 29 29 29 29 0a 0a 28 64 | ts))))..........'httpd/)))))..(d |
| 6de0 | 65 66 75 6e 20 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f 74 20 28 70 72 6f 63 20 72 6f 6f 74 | efun.httpd-serve-root.(proc.root |
| 6e00 | 20 75 72 69 2d 70 61 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 71 75 65 73 74 29 0a 20 20 22 | .uri-path.&optional.request)..." |
| 6e20 | 53 65 63 75 72 65 6c 79 20 73 65 72 76 65 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 52 4f 4f 54 20 | Securely.serve.a.file.from.ROOT. |
| 6e40 | 66 72 6f 6d 20 75 6e 64 65 72 20 50 41 54 48 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 61 74 68 | from.under.PATH."...(let*.((path |
| 6e60 | 20 28 68 74 74 70 64 2d 67 65 6e 2d 70 61 74 68 20 75 72 69 2d 70 61 74 68 20 72 6f 6f 74 29 29 | .(httpd-gen-path.uri-path.root)) |
| 6e80 | 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 74 75 73 20 28 68 74 74 70 64 2d 73 74 61 74 75 73 20 | ..........(status.(httpd-status. |
| 6ea0 | 70 61 74 68 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 6e 6f 74 20 28 3d 20 | path))).....(cond......((not.(=. |
| 6ec0 | 73 74 61 74 75 73 20 32 30 30 29 29 20 20 20 20 28 68 74 74 70 64 2d 65 72 72 6f 72 20 20 20 20 | status.200))....(httpd-error.... |
| 6ee0 | 20 20 20 20 20 20 70 72 6f 63 20 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 28 28 66 69 6c 65 2d | ......proc.status))......((file- |
| 6f00 | 64 69 72 65 63 74 6f 72 79 2d 70 20 70 61 74 68 29 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 64 69 | directory-p.path).(httpd-send-di |
| 6f20 | 72 65 63 74 6f 72 79 20 70 72 6f 63 20 70 61 74 68 20 75 72 69 2d 70 61 74 68 29 29 0a 20 20 20 | rectory.proc.path.uri-path)).... |
| 6f40 | 20 20 28 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 | ..(t.......................(http |
| 6f60 | 64 2d 73 65 6e 64 2d 66 69 6c 65 20 20 20 20 20 20 70 72 6f 63 20 70 61 74 68 20 72 65 71 75 65 | d-send-file......proc.path.reque |
| 6f80 | 73 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2f 20 28 70 72 6f 63 20 75 72 69 | st)))))..(defun.httpd/.(proc.uri |
| 6fa0 | 2d 70 61 74 68 20 71 75 65 72 79 20 72 65 71 75 65 73 74 29 0a 20 20 22 44 65 66 61 75 6c 74 20 | -path.query.request)..."Default. |
| 6fc0 | 72 6f 6f 74 20 73 65 72 76 6c 65 74 20 77 68 69 63 68 20 73 65 72 76 65 73 20 66 69 6c 65 73 20 | root.servlet.which.serves.files. |
| 6fe0 | 77 68 65 6e 20 68 74 74 70 64 2d 73 65 72 76 65 2d 66 69 6c 65 73 20 69 73 20 54 2e 22 0a 20 20 | when.httpd-serve-files.is.T."... |
| 7000 | 28 69 66 20 28 61 6e 64 20 68 74 74 70 64 2d 73 65 72 76 65 2d 66 69 6c 65 73 20 68 74 74 70 64 | (if.(and.httpd-serve-files.httpd |
| 7020 | 2d 72 6f 6f 74 29 0a 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f 74 20 70 | -root).......(httpd-serve-root.p |
| 7040 | 72 6f 63 20 68 74 74 70 64 2d 72 6f 6f 74 20 75 72 69 2d 70 61 74 68 20 72 65 71 75 65 73 74 29 | roc.httpd-root.uri-path.request) |
| 7060 | 0a 20 20 20 20 28 68 74 74 70 64 2d 65 72 72 6f 72 20 70 72 6f 63 20 34 30 33 29 29 29 0a 0a 28 | .....(httpd-error.proc.403)))..( |
| 7080 | 64 65 66 75 6e 20 68 74 74 70 64 2d 67 65 74 2d 6d 69 6d 65 20 28 65 78 74 29 0a 20 20 22 46 65 | defun.httpd-get-mime.(ext)..."Fe |
| 70a0 | 74 63 68 20 4d 49 4d 45 20 74 79 70 65 20 67 69 76 65 6e 20 74 68 65 20 66 69 6c 65 20 65 78 74 | tch.MIME.type.given.the.file.ext |
| 70c0 | 65 6e 74 69 6f 6e 2e 22 0a 20 20 28 6f 72 20 28 61 6e 64 20 65 78 74 20 28 63 64 72 20 28 61 73 | ention."...(or.(and.ext.(cdr.(as |
| 70e0 | 73 6f 63 20 28 64 6f 77 6e 63 61 73 65 20 65 78 74 29 20 68 74 74 70 64 2d 6d 69 6d 65 2d 74 79 | soc.(downcase.ext).httpd-mime-ty |
| 7100 | 70 65 73 29 29 29 0a 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d | pes)))......."application/octet- |
| 7120 | 73 74 72 65 61 6d 22 29 29 0a 0a 3b 3b 20 44 61 74 61 20 73 65 6e 64 69 6e 67 20 66 75 6e 63 74 | stream"))..;;.Data.sending.funct |
| 7140 | 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 28 | ions..(defun.httpd-send-header.( |
| 7160 | 70 72 6f 63 20 6d 69 6d 65 20 73 74 61 74 75 73 20 26 72 65 73 74 20 68 65 61 64 65 72 2d 6b 65 | proc.mime.status.&rest.header-ke |
| 7180 | 79 73 29 0a 20 20 22 53 65 6e 64 20 61 6e 20 48 54 54 50 20 68 65 61 64 65 72 20 77 69 74 68 20 | ys)..."Send.an.HTTP.header.with. |
| 71a0 | 67 69 76 65 6e 20 4d 49 4d 45 20 74 79 70 65 20 61 6e 64 20 53 54 41 54 55 53 2c 20 66 6f 6c 6c | given.MIME.type.and.STATUS,.foll |
| 71c0 | 6f 77 65 64 0a 62 79 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 20 49 66 20 50 | owed.by.the.current.buffer..If.P |
| 71e0 | 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d | ROC.is.T.use.the.`httpd-current- |
| 7200 | 70 72 6f 63 27 0a 61 73 20 74 68 65 20 70 72 6f 63 65 73 73 2e 0a 0a 45 78 74 72 61 20 68 65 61 | proc'.as.the.process...Extra.hea |
| 7220 | 64 65 72 73 20 63 61 6e 20 62 65 20 73 65 6e 74 20 62 79 20 73 75 70 70 6c 79 69 6e 67 20 74 68 | ders.can.be.sent.by.supplying.th |
| 7240 | 65 6d 20 6c 69 6b 65 20 6b 65 79 77 6f 72 64 73 2c 20 69 2e 65 2e 0a 0a 20 28 68 74 74 70 64 2d | em.like.keywords,.i.e....(httpd- |
| 7260 | 73 65 6e 64 2d 68 65 61 64 65 72 20 74 20 5c 22 74 65 78 74 2f 70 6c 61 69 6e 5c 22 20 32 30 30 | send-header.t.\"text/plain\".200 |
| 7280 | 20 3a 58 2d 50 6f 77 65 72 65 64 2d 42 79 20 5c 22 73 69 6d 70 6c 65 2d 68 74 74 70 64 5c 22 29 | .:X-Powered-By.\"simple-httpd\") |
| 72a0 | 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 74 75 73 2d 73 74 72 20 28 63 64 72 20 28 61 73 73 71 | "...(let.((status-str.(cdr.(assq |
| 72c0 | 20 73 74 61 74 75 73 20 68 74 74 70 64 2d 73 74 61 74 75 73 2d 63 6f 64 65 73 29 29 29 0a 20 20 | .status.httpd-status-codes)))... |
| 72e0 | 20 20 20 20 20 20 28 68 65 61 64 65 72 73 20 60 28 28 22 53 65 72 76 65 72 22 20 2e 20 2c 68 74 | ......(headers.`(("Server"...,ht |
| 7300 | 74 70 64 2d 73 65 72 76 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tpd-server-name)................ |
| 7320 | 20 20 20 20 28 22 44 61 74 65 22 20 2e 20 2c 28 68 74 74 70 64 2d 64 61 74 65 2d 73 74 72 69 6e | ....("Date"...,(httpd-date-strin |
| 7340 | 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 43 6f 6e 6e 65 63 74 | g))....................("Connect |
| 7360 | 69 6f 6e 22 20 2e 20 22 6b 65 65 70 2d 61 6c 69 76 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ion"..."keep-alive")............ |
| 7380 | 20 20 20 20 20 20 20 20 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e 20 2c 28 68 74 74 70 | ........("Content-Type"...,(http |
| 73a0 | 64 2d 2d 73 74 72 69 6e 67 69 66 79 20 6d 69 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | d--stringify.mime))............. |
| 73c0 | 20 20 20 20 20 20 20 28 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 20 2e 20 2c 28 68 74 74 | .......("Content-Length"...,(htt |
| 73e0 | 70 64 2d 2d 62 75 66 66 65 72 2d 73 69 7a 65 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 | pd--buffer-size))))).....(unless |
| 7400 | 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 0a 20 20 20 20 20 20 28 73 65 74 66 20 | .httpd--header-sent.......(setf. |
| 7420 | 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 20 74 29 0a 20 20 20 20 20 20 28 77 69 74 | httpd--header-sent.t).......(wit |
| 7440 | 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 | h-temp-buffer.........(insert.(f |
| 7460 | 6f 72 6d 61 74 20 22 48 54 54 50 2f 31 2e 31 20 25 64 20 25 73 5c 72 5c 6e 22 20 73 74 61 74 75 | ormat."HTTP/1.1.%d.%s\r\n".statu |
| 7480 | 73 20 73 74 61 74 75 73 2d 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 | s.status-str)).........(cl-loop. |
| 74a0 | 66 6f 72 20 28 68 65 61 64 65 72 20 76 61 6c 75 65 29 20 6f 6e 20 68 65 61 64 65 72 2d 6b 65 79 | for.(header.value).on.header-key |
| 74c0 | 73 20 62 79 20 23 27 63 64 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 | s.by.#'cddr..................for |
| 74e0 | 20 68 65 61 64 65 72 2d 6e 61 6d 65 20 3d 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f | .header-name.=.(substring.(symbo |
| 7500 | 6c 2d 6e 61 6d 65 20 68 65 61 64 65 72 29 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | l-name.header).1)............... |
| 7520 | 20 20 20 66 6f 72 20 76 61 6c 75 65 2d 6e 61 6d 65 20 3d 20 28 66 6f 72 6d 61 74 20 22 25 73 22 | ...for.value-name.=.(format."%s" |
| 7540 | 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 | .value)..................collect |
| 7560 | 20 28 63 6f 6e 73 20 68 65 61 64 65 72 2d 6e 61 6d 65 20 76 61 6c 75 65 2d 6e 61 6d 65 29 20 69 | .(cons.header-name.value-name).i |
| 7580 | 6e 74 6f 20 65 78 74 72 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 | nto.extras..................fina |
| 75a0 | 6c 6c 79 20 28 73 65 74 66 20 68 65 61 64 65 72 73 20 28 6e 63 6f 6e 63 20 68 65 61 64 65 72 73 | lly.(setf.headers.(nconc.headers |
| 75c0 | 20 65 78 74 72 61 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 68 65 61 64 | .extras))).........(dolist.(head |
| 75e0 | 65 72 20 68 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 | er.headers)...........(insert.(f |
| 7600 | 6f 72 6d 61 74 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 20 28 63 61 72 20 68 65 61 64 65 72 29 20 | ormat."%s:.%s\r\n".(car.header). |
| 7620 | 28 63 64 72 20 68 65 61 64 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 | (cdr.header)))).........(insert. |
| 7640 | 22 5c 72 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 72 65 | "\r\n").........(process-send-re |
| 7660 | 67 69 6f 6e 20 28 68 74 74 70 64 2d 72 65 73 6f 6c 76 65 2d 70 72 6f 63 20 70 72 6f 63 29 0a 20 | gion.(httpd-resolve-proc.proc).. |
| 7680 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 | ............................(poi |
| 76a0 | 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 28 70 72 6f | nt-min).(point-max))).......(pro |
| 76c0 | 63 65 73 73 2d 73 65 6e 64 2d 72 65 67 69 6f 6e 20 28 68 74 74 70 64 2d 72 65 73 6f 6c 76 65 2d | cess-send-region.(httpd-resolve- |
| 76e0 | 70 72 6f 63 20 70 72 6f 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | proc.proc)...................... |
| 7700 | 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 | ......(point-min).(point-max)))) |
| 7720 | 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 20 28 70 72 6f 63 20 70 | )..(defun.httpd-redirect.(proc.p |
| 7740 | 61 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 64 65 29 0a 20 20 22 52 65 64 69 72 65 63 74 20 | ath.&optional.code)..."Redirect. |
| 7760 | 74 68 65 20 63 6c 69 65 6e 74 20 74 6f 20 50 41 54 48 20 28 64 65 66 61 75 6c 74 20 33 30 31 29 | the.client.to.PATH.(default.301) |
| 7780 | 2e 20 49 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 0a 74 68 65 20 60 68 74 74 70 64 2d 63 75 | ..If.PROC.is.T.use.the.`httpd-cu |
| 77a0 | 72 72 65 6e 74 2d 70 72 6f 63 27 20 61 73 20 74 68 65 20 70 72 6f 63 65 73 73 2e 22 0a 20 20 28 | rrent-proc'.as.the.process."...( |
| 77c0 | 68 74 74 70 64 2d 6c 6f 67 20 28 6c 69 73 74 20 27 72 65 64 69 72 65 63 74 20 70 61 74 68 29 29 | httpd-log.(list.'redirect.path)) |
| 77e0 | 0a 20 20 28 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 28 77 69 74 | ...(httpd-discard-buffer)...(wit |
| 7800 | 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 | h-temp-buffer.....(httpd-send-he |
| 7820 | 61 64 65 72 20 70 72 6f 63 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 28 6f 72 20 63 6f 64 65 20 | ader.proc."text/plain".(or.code. |
| 7840 | 33 30 31 29 20 3a 4c 6f 63 61 74 69 6f 6e 20 70 61 74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 | 301).:Location.path)))..(defun.h |
| 7860 | 74 74 70 64 2d 73 65 6e 64 2d 66 69 6c 65 20 28 70 72 6f 63 20 70 61 74 68 20 26 6f 70 74 69 6f | ttpd-send-file.(proc.path.&optio |
| 7880 | 6e 61 6c 20 72 65 71 29 0a 20 20 22 53 65 72 76 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 67 69 | nal.req)..."Serve.file.to.the.gi |
| 78a0 | 76 65 6e 20 63 6c 69 65 6e 74 2e 20 20 49 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 | ven.client...If.PROC.is.T.use.th |
| 78c0 | 65 0a 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 61 73 20 74 68 65 20 70 72 | e.`httpd-current-proc'.as.the.pr |
| 78e0 | 6f 63 65 73 73 2e 22 0a 20 20 28 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 | ocess."...(httpd-discard-buffer) |
| 7900 | 0a 20 20 28 6c 65 74 20 28 28 72 65 71 2d 65 74 61 67 20 28 63 61 64 72 20 28 61 73 73 6f 63 20 | ...(let.((req-etag.(cadr.(assoc. |
| 7920 | 22 49 66 2d 4e 6f 6e 65 2d 4d 61 74 63 68 22 20 72 65 71 29 29 29 0a 20 20 20 20 20 20 20 20 28 | "If-None-Match".req))).........( |
| 7940 | 65 74 61 67 20 28 68 74 74 70 64 2d 65 74 61 67 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 | etag.(httpd-etag.path))......... |
| 7960 | 28 6d 74 69 6d 65 20 28 68 74 74 70 64 2d 64 61 74 65 2d 73 74 72 69 6e 67 20 28 6e 74 68 20 34 | (mtime.(httpd-date-string.(nth.4 |
| 7980 | 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74 65 73 20 70 61 74 68 29 29 29 29 29 0a 20 20 20 20 | .(file-attributes.path)))))..... |
| 79a0 | 28 69 66 20 28 65 71 75 61 6c 20 72 65 71 2d 65 74 61 67 20 65 74 61 67 29 0a 20 20 20 20 20 20 | (if.(equal.req-etag.etag)....... |
| 79c0 | 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 68 | ..(with-temp-buffer...........(h |
| 79e0 | 74 74 70 64 2d 6c 6f 67 20 60 28 66 69 6c 65 20 2c 70 61 74 68 20 6e 6f 74 2d 6d 6f 64 69 66 69 | ttpd-log.`(file.,path.not-modifi |
| 7a00 | 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 | ed))...........(httpd-send-heade |
| 7a20 | 72 20 70 72 6f 63 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 33 30 34 29 29 0a 20 20 20 20 20 20 | r.proc."text/plain".304))....... |
| 7a40 | 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 66 69 6c 65 20 2c 70 61 74 68 29 29 0a 20 20 20 20 20 20 | (httpd-log.`(file.,path))....... |
| 7a60 | 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 | (with-temp-buffer.........(set-b |
| 7a80 | 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 69 6e | uffer-multibyte.nil).........(in |
| 7aa0 | 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 70 61 74 | sert-file-contents-literally.pat |
| 7ac0 | 68 29 0a 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 70 72 | h).........(httpd-send-header.pr |
| 7ae0 | 6f 63 20 28 68 74 74 70 64 2d 67 65 74 2d 6d 69 6d 65 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 65 78 | oc.(httpd-get-mime.(file-name-ex |
| 7b00 | 74 65 6e 73 69 6f 6e 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tension.path)).................. |
| 7b20 | 20 20 20 20 20 20 20 20 20 20 32 30 30 20 3a 4c 61 73 74 2d 4d 6f 64 69 66 69 65 64 20 6d 74 69 | ..........200.:Last-Modified.mti |
| 7b40 | 6d 65 20 3a 45 54 61 67 20 65 74 61 67 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 | me.:ETag.etag)))))..(defun.httpd |
| 7b60 | 2d 73 65 6e 64 2d 64 69 72 65 63 74 6f 72 79 20 28 70 72 6f 63 20 70 61 74 68 20 75 72 69 2d 70 | -send-directory.(proc.path.uri-p |
| 7b80 | 61 74 68 29 0a 20 20 22 53 65 72 76 65 20 61 20 66 69 6c 65 20 6c 69 73 74 69 6e 67 20 74 6f 20 | ath)..."Serve.a.file.listing.to. |
| 7ba0 | 74 68 65 20 63 6c 69 65 6e 74 2e 20 49 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 | the.client..If.PROC.is.T.use.the |
| 7bc0 | 0a 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 61 73 20 74 68 65 20 70 72 6f | .`httpd-current-proc'.as.the.pro |
| 7be0 | 63 65 73 73 2e 22 0a 20 20 28 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a | cess."...(httpd-discard-buffer). |
| 7c00 | 20 20 28 6c 65 74 20 28 28 74 69 74 6c 65 20 28 63 6f 6e 63 61 74 20 22 44 69 72 65 63 74 6f 72 | ..(let.((title.(concat."Director |
| 7c20 | 79 20 6c 69 73 74 69 6e 67 20 66 6f 72 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | y.listing.for."................. |
| 7c40 | 20 20 20 20 20 20 20 28 75 72 6c 2d 69 6e 73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e 2d 73 | .......(url-insert-entities-in-s |
| 7c60 | 74 72 69 6e 67 20 75 72 69 2d 70 61 74 68 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 | tring.uri-path)))).....(if.(equa |
| 7c80 | 6c 20 22 2f 22 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 2d 70 61 74 68 20 2d 31 29 29 0a 20 | l."/".(substring.uri-path.-1)).. |
| 7ca0 | 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 | .......(with-temp-buffer........ |
| 7cc0 | 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 64 69 72 65 63 74 6f 72 79 20 2c 70 61 74 68 29 | ...(httpd-log.`(directory.,path) |
| 7ce0 | 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 21 44 4f 43 54 59 50 45 20 68 | )...........(insert."<!DOCTYPE.h |
| 7d00 | 74 6d 6c 3e 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 68 74 6d | tml>\n")...........(insert."<htm |
| 7d20 | 6c 3e 5c 6e 3c 68 65 61 64 3e 3c 74 69 74 6c 65 3e 22 20 74 69 74 6c 65 20 22 3c 2f 74 69 74 6c | l>\n<head><title>".title."</titl |
| 7d40 | 65 3e 3c 2f 68 65 61 64 3e 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 | e></head>\n")...........(insert. |
| 7d60 | 22 3c 62 6f 64 79 3e 5c 6e 3c 68 32 3e 22 20 74 69 74 6c 65 20 22 3c 2f 68 32 3e 5c 6e 3c 68 72 | "<body>\n<h2>".title."</h2>\n<hr |
| 7d80 | 2f 3e 5c 6e 3c 75 6c 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 66 69 | />\n<ul>")...........(dolist.(fi |
| 7da0 | 6c 65 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 70 61 74 68 29 29 0a 20 20 20 20 20 | le.(directory-files.path))...... |
| 7dc0 | 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 3f 2e 20 28 61 72 65 66 20 66 69 6c 65 | .......(unless.(eq.?..(aref.file |
| 7de0 | 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 66 75 6c 6c 20 | .0))...............(let*.((full. |
| 7e00 | 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 66 69 6c 65 20 70 61 74 68 29 29 0a 20 20 | (expand-file-name.file.path))... |
| 7e20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 61 69 6c 20 28 69 66 20 28 66 69 | ...................(tail.(if.(fi |
| 7e40 | 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66 75 6c 6c 29 20 22 2f 22 20 22 22 29 29 0a 20 20 | le-directory-p.full)."/".""))... |
| 7e60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 20 28 75 72 6c 2d 69 6e 73 65 72 | ...................(f.(url-inser |
| 7e80 | 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e 2d 73 74 72 69 6e 67 20 66 69 6c 65 29 29 0a 20 20 20 20 | t-entities-in-string.file))..... |
| 7ea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 20 28 75 72 6c 2d 68 65 78 69 66 79 2d | .................(l.(url-hexify- |
| 7ec0 | 73 74 72 69 6e 67 20 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | string.file))).................( |
| 7ee0 | 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 25 73 | insert.(format."<li><a.href=\"%s |
| 7f00 | 25 73 5c 22 3e 25 73 25 73 3c 2f 61 3e 3c 2f 6c 69 3e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 | %s\">%s%s</a></li>\n"........... |
| 7f20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 20 74 61 69 6c 20 66 20 74 | ......................l.tail.f.t |
| 7f40 | 61 69 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 2f 75 6c | ail)))))...........(insert."</ul |
| 7f60 | 3e 5c 6e 3c 68 72 2f 3e 5c 6e 3c 2f 62 6f 64 79 3e 5c 6e 3c 2f 68 74 6d 6c 3e 22 29 0a 20 20 20 | >\n<hr/>\n</body>\n</html>").... |
| 7f80 | 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 70 72 6f 63 20 22 | .......(httpd-send-header.proc." |
| 7fa0 | 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 20 32 30 30 29 29 0a | text/html;.charset=utf-8".200)). |
| 7fc0 | 20 20 20 20 20 20 28 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 20 70 72 6f 63 20 28 63 6f 6e 63 | ......(httpd-redirect.proc.(conc |
| 7fe0 | 61 74 20 75 72 69 2d 70 61 74 68 20 22 2f 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 | at.uri-path."/")))))..(defun.htt |
| 8000 | 70 64 2d 2d 62 75 66 66 65 72 2d 73 69 7a 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 62 75 66 66 65 | pd--buffer-size.(&optional.buffe |
| 8020 | 72 29 0a 20 20 22 47 65 74 20 74 68 65 20 62 75 66 66 65 72 20 73 69 7a 65 20 69 6e 20 62 79 74 | r)..."Get.the.buffer.size.in.byt |
| 8040 | 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 6f 72 69 67 20 65 6e 61 62 6c 65 2d 6d 75 6c 74 69 62 | es."...(let.((orig.enable-multib |
| 8060 | 79 74 65 2d 63 68 61 72 61 63 74 65 72 73 29 0a 20 20 20 20 20 20 20 20 28 73 69 7a 65 20 30 29 | yte-characters).........(size.0) |
| 8080 | 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 20 62 | ).....(with-current-buffer.(or.b |
| 80a0 | 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 73 | uffer.(current-buffer)).......(s |
| 80c0 | 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 | et-buffer-multibyte.nil).......( |
| 80e0 | 73 65 74 66 20 73 69 7a 65 20 28 62 75 66 66 65 72 2d 73 69 7a 65 29 29 0a 20 20 20 20 20 20 28 | setf.size.(buffer-size)).......( |
| 8100 | 69 66 20 6f 72 69 67 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6f 72 | if.orig.(set-buffer-multibyte.or |
| 8120 | 69 67 29 29 29 0a 20 20 20 20 73 69 7a 65 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 65 | ig))).....size))..(defun.httpd-e |
| 8140 | 72 72 6f 72 20 28 70 72 6f 63 20 73 74 61 74 75 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 66 6f | rror.(proc.status.&optional.info |
| 8160 | 29 0a 20 20 22 53 65 6e 64 20 61 6e 20 65 72 72 6f 72 20 70 61 67 65 20 61 70 70 72 6f 70 72 69 | )..."Send.an.error.page.appropri |
| 8180 | 61 74 65 20 66 6f 72 20 53 54 41 54 55 53 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2c 0a 6f 70 | ate.for.STATUS.to.the.client,.op |
| 81a0 | 74 69 6f 6e 61 6c 6c 79 20 69 6e 73 65 72 74 69 6e 67 20 6f 62 6a 65 63 74 20 49 4e 46 4f 20 69 | tionally.inserting.object.INFO.i |
| 81c0 | 6e 74 6f 20 70 61 67 65 2e 20 49 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 0a 60 | nto.page..If.PROC.is.T.use.the.` |
| 81e0 | 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 61 73 20 74 68 65 20 70 72 6f 63 65 | httpd-current-proc'.as.the.proce |
| 8200 | 73 73 2e 22 0a 20 20 28 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 | ss."...(httpd-discard-buffer)... |
| 8220 | 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 65 72 72 6f 72 20 2c 73 74 61 74 75 73 20 2c 69 6e 66 6f | (httpd-log.`(error.,status.,info |
| 8240 | 29 29 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 6c 65 74 20 | ))...(with-temp-buffer.....(let. |
| 8260 | 28 28 68 74 6d 6c 20 28 6f 72 20 28 63 64 72 20 28 61 73 73 71 20 73 74 61 74 75 73 20 68 74 74 | ((html.(or.(cdr.(assq.status.htt |
| 8280 | 70 64 2d 68 74 6d 6c 29 29 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e | pd-html)).""))...........(conten |
| 82a0 | 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 69 6e 66 6f 29 0a 20 20 20 | ts............(if.(not.info).... |
| 82c0 | 20 20 20 20 20 20 20 20 20 20 20 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 | ............""..............(wit |
| 82e0 | 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 | h-temp-buffer................(le |
| 8300 | 74 20 28 28 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 | t.((standard-output.(current-buf |
| 8320 | 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 | fer)))..................(insert. |
| 8340 | 22 65 72 72 6f 72 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 | "error:.")..................(pri |
| 8360 | 6e 63 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 | nc.info)..................(inser |
| 8380 | 74 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 68 | t."\n")..................(when.h |
| 83a0 | 74 74 70 64 2d 73 68 6f 77 2d 62 61 63 6b 74 72 61 63 65 2d 77 68 65 6e 2d 65 72 72 6f 72 0a 20 | ttpd-show-backtrace-when-error.. |
| 83c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 62 61 63 6b 74 | ..................(insert."backt |
| 83e0 | 72 61 63 65 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 | race:.")....................(pri |
| 8400 | 6e 63 20 28 62 61 63 6b 74 72 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nc.(backtrace))................. |
| 8420 | 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(insert."\n"))............... |
| 8440 | 20 20 20 28 68 74 74 70 64 2d 65 73 63 61 70 65 2d 68 74 6d 6c 2d 62 75 66 66 65 72 29 0a 20 20 | ...(httpd-escape-html-buffer)... |
| 8460 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 | ...............(buffer-string))) |
| 8480 | 29 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 68 74 6d 6c 20 63 | ))).......(insert.(format.html.c |
| 84a0 | 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 | ontents))).....(httpd-send-heade |
| 84c0 | 72 20 70 72 6f 63 20 22 74 65 78 74 2f 68 74 6d 6c 22 20 73 74 61 74 75 73 29 29 29 0a 0a 28 64 | r.proc."text/html".status)))..(d |
| 84e0 | 65 66 75 6e 20 68 74 74 70 64 2d 2d 65 72 72 6f 72 2d 73 61 66 65 20 28 26 72 65 73 74 20 61 72 | efun.httpd--error-safe.(&rest.ar |
| 8500 | 67 73 29 0a 20 20 22 43 61 6c 6c 20 68 74 74 70 64 2d 65 72 72 6f 72 20 61 6e 64 20 72 65 70 6f | gs)..."Call.httpd-error.and.repo |
| 8520 | 72 74 20 66 61 69 6c 75 72 65 73 20 74 6f 20 2a 68 74 74 70 64 2a 2e 22 0a 20 20 28 63 6f 6e 64 | rt.failures.to.*httpd*."...(cond |
| 8540 | 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 2d 63 61 73 65 0a 20 20 20 20 20 20 28 61 70 70 | ition-case.error-case.......(app |
| 8560 | 6c 79 20 23 27 68 74 74 70 64 2d 65 72 72 6f 72 20 61 72 67 73 29 0a 20 20 20 20 28 65 72 72 6f | ly.#'httpd-error.args).....(erro |
| 8580 | 72 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 68 61 72 64 2d 65 72 72 6f 72 20 2c 65 72 72 6f 72 | r.(httpd-log.`(hard-error.,error |
| 85a0 | 2d 63 61 73 65 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 73 69 6d 70 6c 65 2d 68 74 74 | -case)))))..(provide.'simple-htt |
| 85c0 | 70 64 29 0a 0a 3b 3b 3b 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 2e 65 6c 20 65 6e 64 73 20 68 65 | pd)..;;;.simple-httpd.el.ends.he |
| 85e0 | 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | re.............................. |
| 8600 | 73 69 6d 70 6c 65 2d 68 74 74 70 64 2d 32 30 32 33 30 38 32 31 2e 31 34 35 38 2f 73 69 6d 70 6c | simple-httpd-20230821.1458/simpl |
| 8620 | 65 2d 68 74 74 70 64 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | e-httpd-pkg.el.................. |
| 8640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8660 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 8680 | 30 30 30 30 37 31 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 37 31 33 37 00 20 30 00 00 00 | 0000710.00000000000.017137..0... |
| 86a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 86c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 86e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8700 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 8720 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 8740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 87a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 87c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 87e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8800 | 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 73 69 6d 70 6c 65 2d 68 74 74 70 64 22 20 22 | (define-package."simple-httpd"." |
| 8820 | 32 30 32 33 30 38 32 31 2e 31 34 35 38 22 20 22 70 75 72 65 20 65 6c 69 73 70 20 48 54 54 50 20 | 20230821.1458"."pure.elisp.HTTP. |
| 8840 | 73 65 72 76 65 72 22 0a 20 20 27 28 28 63 6c 2d 6c 69 62 20 22 30 2e 33 22 29 29 0a 20 20 3a 63 | server"...'((cl-lib."0.3"))...:c |
| 8860 | 6f 6d 6d 69 74 20 22 33 34 37 63 33 30 34 39 34 64 33 62 63 66 63 37 39 64 65 33 35 65 35 34 35 | ommit."347c30494d3bcfc79de35e545 |
| 8880 | 33 38 66 39 32 66 34 65 34 61 34 36 65 63 64 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 | 38f92f4e4a46ecd".:authors...'((" |
| 88a0 | 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 22 77 65 6c 6c 6f 6e 73 40 | Christopher.Wellons"..."wellons@ |
| 88c0 | 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 | nullprogram.com"))...:maintainer |
| 88e0 | 73 0a 20 20 27 28 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 22 | s...'(("Christopher.Wellons"..." |
| 8900 | 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 | wellons@nullprogram.com"))...:ma |
| 8920 | 69 6e 74 61 69 6e 65 72 0a 20 20 27 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e | intainer...'("Christopher.Wellon |
| 8940 | 73 22 20 2e 20 22 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 0a | s"..."wellons@nullprogram.com"). |
| 8960 | 20 20 3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 | ..:url."https://github.com/skeet |
| 8980 | 6f 2f 65 6d 61 63 73 2d 68 74 74 70 2d 73 65 72 76 65 72 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 | o/emacs-http-server").;;.Local.V |
| 89a0 | 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a | ariables:.;;.no-byte-compile:.t. |
| 89c0 | 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ;;.End:......................... |
| 89e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 90a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 90c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 90e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 91a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 91c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 91e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 92a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 92c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 92e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 94a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 94c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 94e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 96a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 96c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 96e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 97a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 97c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 97e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 98a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 98c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 98e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 99a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 99c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 99e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |