| 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 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.................. |
| 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 30 30 30 36 34 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 37 31 34 31 00 20 30 00 00 00 | 0000640.00000000000.017141..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 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63 | ;;.-*-.no-byte-compile:.t;.lexic |
| 0420 | 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b | al-binding:.nil.-*-.(define-pack |
| 0440 | 61 67 65 20 22 73 69 6d 70 6c 65 2d 68 74 74 70 64 22 20 22 32 30 32 33 30 38 32 31 2e 31 34 35 | age."simple-httpd"."20230821.145 |
| 0460 | 38 22 0a 20 20 22 50 75 72 65 20 65 6c 69 73 70 20 48 54 54 50 20 73 65 72 76 65 72 2e 22 0a 20 | 8"..."Pure.elisp.HTTP.server.".. |
| 0480 | 20 27 28 28 63 6c 2d 6c 69 62 20 22 30 2e 33 22 29 29 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73 | .'((cl-lib."0.3"))...:url."https |
| 04a0 | 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 70 2d | ://github.com/skeeto/emacs-http- |
| 04c0 | 73 65 72 76 65 72 22 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 33 34 37 63 33 30 34 39 34 64 33 62 63 | server"...:commit."347c30494d3bc |
| 04e0 | 66 63 37 39 64 65 33 35 65 35 34 35 33 38 66 39 32 66 34 65 34 61 34 36 65 63 64 22 0a 20 20 3a | fc79de35e54538f92f4e4a46ecd"...: |
| 0500 | 72 65 76 64 65 73 63 20 22 33 34 37 63 33 30 34 39 34 64 33 62 22 0a 20 20 3a 61 75 74 68 6f 72 | revdesc."347c30494d3b"...:author |
| 0520 | 73 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 77 65 | s.'(("Christopher.Wellons"..."we |
| 0540 | 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 69 6e | llons@nullprogram.com"))...:main |
| 0560 | 74 61 69 6e 65 72 73 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 | tainers.'(("Christopher.Wellons" |
| 0580 | 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 29 29 0a | ..."wellons@nullprogram.com"))). |
| 05a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0600 | 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 |
| 0620 | 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...................... |
| 0640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0660 | 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 |
| 0680 | 30 31 30 31 30 32 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 33 36 31 00 20 30 00 00 00 | 0101025.00000000000.016361..0... |
| 06a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0700 | 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................... |
| 0720 | 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................... |
| 0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0800 | 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 |
| 0820 | 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. |
| 0840 | 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 |
| 0860 | 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 |
| 0880 | 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 |
| 08a0 | 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 |
| 08c0 | 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 |
| 08e0 | 70 2d 73 65 72 76 65 72 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 | p-server.;;.Package-Version:.202 |
| 0900 | 33 30 38 32 31 2e 31 34 35 38 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 | 30821.1458.;;.Package-Revision:. |
| 0920 | 33 34 37 63 33 30 34 39 34 64 33 62 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 | 347c30494d3b.;;.Package-Requires |
| 0940 | 3a 20 28 28 63 6c 2d 6c 69 62 20 22 30 2e 33 22 29 29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 | :.((cl-lib."0.3"))..;;;.Commenta |
| 0960 | 72 79 3a 0a 0a 3b 3b 20 55 73 65 20 60 68 74 74 70 64 2d 73 74 61 72 74 27 20 74 6f 20 73 74 61 | ry:..;;.Use.`httpd-start'.to.sta |
| 0980 | 72 74 20 74 68 65 20 77 65 62 20 73 65 72 76 65 72 2e 20 46 69 6c 65 73 20 61 72 65 20 73 65 72 | rt.the.web.server..Files.are.ser |
| 09a0 | 76 65 64 20 66 72 6f 6d 0a 3b 3b 20 60 68 74 74 70 64 2d 72 6f 6f 74 27 20 6f 6e 20 70 6f 72 74 | ved.from.;;.`httpd-root'.on.port |
| 09c0 | 20 60 68 74 74 70 64 2d 70 6f 72 74 27 20 75 73 69 6e 67 20 60 68 74 74 70 64 2d 69 70 2d 66 61 | .`httpd-port'.using.`httpd-ip-fa |
| 09e0 | 6d 69 6c 79 27 20 61 74 20 68 6f 73 74 0a 3b 3b 20 60 68 74 74 70 64 2d 68 6f 73 74 27 2e 20 57 | mily'.at.host.;;.`httpd-host'..W |
| 0a00 | 68 69 6c 65 20 74 68 65 20 72 6f 6f 74 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 20 61 74 20 | hile.the.root.can.be.changed.at. |
| 0a20 | 61 6e 79 20 74 69 6d 65 2c 20 74 68 65 20 73 65 72 76 65 72 0a 3b 3b 20 6e 65 65 64 73 20 74 6f | any.time,.the.server.;;.needs.to |
| 0a40 | 20 62 65 20 72 65 73 74 61 72 74 65 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 61 20 70 6f 72 | .be.restarted.in.order.for.a.por |
| 0a60 | 74 20 63 68 61 6e 67 65 20 74 6f 20 74 61 6b 65 20 65 66 66 65 63 74 2e 0a 0a 3b 3b 20 45 76 65 | t.change.to.take.effect...;;.Eve |
| 0a80 | 72 79 74 68 69 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20 73 65 72 76 6c 65 74 73 | rything.is.performed.by.servlets |
| 0aa0 | 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 65 72 76 69 6e 67 0a 3b 3b 20 66 69 6c 65 73 2e 20 53 65 | ,.including.serving.;;.files..Se |
| 0ac0 | 72 76 6c 65 74 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 60 68 | rvlets.are.enabled.by.setting.`h |
| 0ae0 | 74 74 70 64 2d 73 65 72 76 6c 65 74 73 27 20 74 6f 20 74 72 75 65 0a 3b 3b 20 28 64 65 66 61 75 | ttpd-servlets'.to.true.;;.(defau |
| 0b00 | 6c 74 29 2e 20 53 65 72 76 6c 65 74 73 20 61 72 65 20 66 6f 75 72 2d 70 61 72 61 6d 65 74 65 72 | lt)..Servlets.are.four-parameter |
| 0b20 | 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 62 65 67 69 6e 20 77 69 74 68 0a 3b 3b 20 22 68 | .functions.that.begin.with.;;."h |
| 0b40 | 74 74 70 64 2f 22 20 77 68 65 72 65 20 74 68 65 20 74 72 61 69 6c 69 6e 67 20 63 6f 6d 70 6f 6e | ttpd/".where.the.trailing.compon |
| 0b60 | 65 6e 74 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 69 6e 69 74 69 61 6c 20 70 61 74 68 20 6f | ent.specifies.the.initial.path.o |
| 0b80 | 6e 0a 3b 3b 20 74 68 65 20 73 65 72 76 65 72 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 | n.;;.the.server..For.example,.th |
| 0ba0 | 65 20 66 75 6e 63 74 69 6f 6e 20 60 68 74 74 70 64 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 27 20 77 | e.function.`httpd/hello-world'.w |
| 0bc0 | 69 6c 6c 20 62 65 0a 3b 3b 20 63 61 6c 6c 65 64 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 | ill.be.;;.called.for.the.request |
| 0be0 | 20 22 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 22 20 61 6e 64 20 22 2f 68 65 6c 6c 6f 2d 77 6f 72 6c | ."/hello-world".and."/hello-worl |
| 0c00 | 64 2f 66 6f 6f 22 2e 0a 0a 3b 3b 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 72 76 6c 65 74 20 | d/foo"...;;.The.default.servlet. |
| 0c20 | 60 68 74 74 70 64 2f 27 20 69 73 20 74 68 65 20 6f 6e 65 20 74 68 61 74 20 73 65 72 76 65 73 20 | `httpd/'.is.the.one.that.serves. |
| 0c40 | 66 69 6c 65 73 20 66 72 6f 6d 0a 3b 3b 20 60 68 74 74 70 64 2d 72 6f 6f 74 27 20 61 6e 64 20 63 | files.from.;;.`httpd-root'.and.c |
| 0c60 | 61 6e 20 62 65 20 74 75 72 6e 65 64 20 6f 66 66 20 74 68 72 6f 75 67 68 20 72 65 64 65 66 69 6e | an.be.turned.off.through.redefin |
| 0c80 | 69 74 69 6f 6e 20 6f 72 20 73 65 74 74 69 6e 67 0a 3b 3b 20 60 68 74 74 70 64 2d 73 65 72 76 65 | ition.or.setting.;;.`httpd-serve |
| 0ca0 | 2d 66 69 6c 65 73 27 20 74 6f 20 6e 69 6c 2e 20 49 74 20 69 73 20 75 73 65 64 20 65 76 65 6e 20 | -files'.to.nil..It.is.used.even. |
| 0cc0 | 77 68 65 6e 20 60 68 74 74 70 64 2d 73 65 72 76 6c 65 74 73 27 0a 3b 3b 20 69 73 20 6e 69 6c 2e | when.`httpd-servlets'.;;.is.nil. |
| 0ce0 | 0a 0a 3b 3b 20 54 68 65 20 66 6f 75 72 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 61 20 73 | ..;;.The.four.parameters.for.a.s |
| 0d00 | 65 72 76 6c 65 74 20 61 72 65 20 70 72 6f 63 65 73 73 2c 20 55 52 49 20 70 61 74 68 2c 20 47 45 | ervlet.are.process,.URI.path,.GE |
| 0d20 | 54 2f 50 4f 53 54 0a 3b 3b 20 61 72 67 75 6d 65 6e 74 73 20 28 61 6c 69 73 74 29 2c 20 61 6e 64 | T/POST.;;.arguments.(alist),.and |
| 0d40 | 20 74 68 65 20 66 75 6c 6c 20 72 65 71 75 65 73 74 20 6f 62 6a 65 63 74 20 28 68 65 61 64 65 72 | .the.full.request.object.(header |
| 0d60 | 0a 3b 3b 20 61 6c 69 73 74 29 2e 20 54 68 65 73 65 20 61 72 65 20 6f 72 64 65 72 65 64 20 62 79 | .;;.alist)..These.are.ordered.by |
| 0d80 | 20 67 65 6e 65 72 61 6c 20 69 6d 70 6f 72 74 61 6e 63 65 20 73 6f 20 74 68 61 74 20 73 6f 6d 65 | .general.importance.so.that.some |
| 0da0 | 20 63 61 6e 20 62 65 0a 3b 3b 20 69 67 6e 6f 72 65 64 2e 20 54 77 6f 20 6d 61 63 72 6f 73 20 61 | .can.be.;;.ignored..Two.macros.a |
| 0dc0 | 72 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20 68 65 6c 70 20 77 69 74 68 20 77 72 69 74 69 6e 67 | re.provided.to.help.with.writing |
| 0de0 | 20 73 65 72 76 6c 65 74 73 2e 0a 0a 3b 3b 20 20 2a 20 60 77 69 74 68 2d 68 74 74 70 64 2d 62 75 | .servlets...;;..*.`with-httpd-bu |
| 0e00 | 66 66 65 72 27 20 2d 2d 20 43 72 65 61 74 65 73 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 | ffer'.--.Creates.a.temporary.buf |
| 0e20 | 66 65 72 20 74 68 61 74 20 69 73 0a 3b 3b 20 20 20 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 | fer.that.is.;;....automatically. |
| 0e40 | 73 65 72 76 65 64 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 20 61 74 20 74 68 65 20 65 6e 64 20 | served.to.the.client.at.the.end. |
| 0e60 | 6f 66 20 74 68 65 20 62 6f 64 79 2e 0a 3b 3b 20 20 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c | of.the.body..;;....Additionally, |
| 0e80 | 20 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 69 | .`standard-output'.is.set.to.thi |
| 0ea0 | 73 20 6f 75 74 70 75 74 0a 3b 3b 20 20 20 20 62 75 66 66 65 72 2e 20 46 6f 72 20 65 78 61 6d 70 | s.output.;;....buffer..For.examp |
| 0ec0 | 6c 65 2c 20 74 68 69 73 20 73 65 72 76 6c 65 74 20 73 61 79 73 20 68 65 6c 6c 6f 2c 0a 0a 3b 3b | le,.this.servlet.says.hello,..;; |
| 0ee0 | 20 20 20 20 20 28 64 65 66 75 6e 20 68 74 74 70 64 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 20 28 70 | .....(defun.httpd/hello-world.(p |
| 0f00 | 72 6f 63 20 70 61 74 68 20 26 72 65 73 74 20 61 72 67 73 29 0a 3b 3b 20 20 20 20 20 20 20 28 77 | roc.path.&rest.args).;;.......(w |
| 0f20 | 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 20 70 72 6f 63 20 22 74 65 78 74 2f 70 6c 61 69 | ith-httpd-buffer.proc."text/plai |
| 0f40 | 6e 22 0a 3b 3b 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 68 65 6c 6c 6f 2c 20 22 20 | n".;;.........(insert."hello,.". |
| 0f60 | 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 68 29 29 29 29 | (file-name-nondirectory.path)))) |
| 0f80 | 0a 0a 3b 3b 20 54 68 69 73 20 73 65 72 76 6c 65 74 20 62 65 20 76 69 65 77 65 64 20 61 74 20 68 | ..;;.This.servlet.be.viewed.at.h |
| 0fa0 | 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 38 30 38 30 2f 68 65 6c 6c 6f 2d 77 6f 72 6c 64 | ttp://localhost:8080/hello-world |
| 0fc0 | 2f 45 6d 61 63 73 0a 0a 3b 3b 20 2a 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 2d 2d 20 53 69 6d | /Emacs..;;.*.`defservlet'.--.Sim |
| 0fe0 | 69 6c 61 72 20 74 6f 20 74 68 65 20 61 62 6f 76 65 20 6d 61 63 72 6f 20 62 75 74 20 74 6f 74 61 | ilar.to.the.above.macro.but.tota |
| 1000 | 6c 6c 79 20 68 69 64 65 73 20 74 68 65 0a 3b 3b 20 20 20 70 72 6f 63 65 73 73 20 6f 62 6a 65 63 | lly.hides.the.;;...process.objec |
| 1020 | 74 20 66 72 6f 6d 20 74 68 65 20 73 65 72 76 6c 65 74 20 69 74 73 65 6c 66 2e 20 54 68 65 20 61 | t.from.the.servlet.itself..The.a |
| 1040 | 62 6f 76 65 20 73 65 72 76 6c 65 74 20 63 61 6e 20 62 65 0a 3b 3b 20 20 20 72 65 2d 77 72 69 74 | bove.servlet.can.be.;;...re-writ |
| 1060 | 74 65 6e 20 69 64 65 6e 74 69 63 61 6c 6c 79 20 6c 69 6b 65 20 73 6f 2c 0a 0a 3b 3b 20 20 20 20 | ten.identically.like.so,..;;.... |
| 1080 | 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 |
| 10a0 | 61 69 6e 20 28 70 61 74 68 29 0a 3b 3b 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 68 65 6c | ain.(path).;;.......(insert."hel |
| 10c0 | 6c 6f 2c 20 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 | lo,.".(file-name-nondirectory.pa |
| 10e0 | 74 68 29 29 29 0a 0a 3b 3b 20 4e 6f 74 65 20 74 68 61 74 20 60 64 65 66 73 65 72 76 6c 65 74 27 | th)))..;;.Note.that.`defservlet' |
| 1100 | 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 74 73 20 60 68 74 74 70 64 2d 63 75 72 72 65 | .automatically.sets.`httpd-curre |
| 1120 | 6e 74 2d 70 72 6f 63 27 2e 20 53 65 65 0a 3b 3b 20 62 65 6c 6f 77 2e 0a 0a 3b 3b 20 54 68 65 20 | nt-proc'..See.;;.below...;;.The. |
| 1140 | 22 66 75 6e 63 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 22 20 70 61 72 74 20 63 61 6e 20 62 | "function.parameters".part.can.b |
| 1160 | 65 20 6c 65 66 74 20 65 6d 70 74 79 20 6f 72 20 63 6f 6e 74 61 69 6e 20 75 70 20 74 6f 0a 3b 3b | e.left.empty.or.contain.up.to.;; |
| 1180 | 20 74 68 72 65 65 20 70 61 72 61 6d 65 74 65 72 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 | .three.parameters.corresponding. |
| 11a0 | 74 6f 20 74 68 65 20 66 69 6e 61 6c 20 74 68 72 65 65 20 73 65 72 76 6c 65 74 0a 3b 3b 20 70 61 | to.the.final.three.servlet.;;.pa |
| 11c0 | 72 61 6d 65 74 65 72 73 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 20 73 65 72 76 6c 65 74 | rameters..For.example,.a.servlet |
| 11e0 | 20 74 68 61 74 20 73 68 6f 77 73 20 2a 73 63 72 61 74 63 68 2a 20 61 6e 64 20 64 6f 65 73 6e 27 | .that.shows.*scratch*.and.doesn' |
| 1200 | 74 0a 3b 3b 20 6e 65 65 64 20 70 61 72 61 6d 65 74 65 72 73 2c 0a 0a 3b 3b 20 20 20 20 20 28 64 | t.;;.need.parameters,..;;.....(d |
| 1220 | 65 66 73 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 | efservlet.scratch.text/plain.(). |
| 1240 | 3b 3b 20 20 20 20 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 | ;;.......(insert-buffer-substrin |
| 1260 | 67 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 73 63 72 61 74 63 68 2a 22 | g.(get-buffer-create."*scratch*" |
| 1280 | 29 29 29 0a 0a 3b 3b 20 41 20 68 69 67 68 65 72 20 6c 65 76 65 6c 20 6d 61 63 72 6f 20 60 64 65 | )))..;;.A.higher.level.macro.`de |
| 12a0 | 66 73 65 72 76 6c 65 74 2a 27 20 77 72 61 70 73 20 74 68 69 73 20 6c 6f 77 65 72 2d 6c 65 76 65 | fservlet*'.wraps.this.lower-leve |
| 12c0 | 6c 0a 3b 3b 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 6d 61 63 72 6f 2c 20 61 75 74 6f 6d 61 74 | l.;;.`defservlet'.macro,.automat |
| 12e0 | 69 63 61 6c 6c 79 20 62 69 6e 64 69 6e 67 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 63 6f 6d 70 | ically.binding.variables.to.comp |
| 1300 | 6f 6e 65 6e 74 73 0a 3b 3b 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 46 6f 72 20 65 78 | onents.;;.of.the.request..For.ex |
| 1320 | 61 6d 70 6c 65 2c 20 74 68 69 73 20 62 69 6e 64 73 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 72 | ample,.this.binds.parts.of.the.r |
| 1340 | 65 71 75 65 73 74 20 70 61 74 68 0a 3b 3b 20 61 6e 64 20 6f 6e 65 20 71 75 65 72 79 20 70 61 72 | equest.path.;;.and.one.query.par |
| 1360 | 61 6d 65 74 65 72 2e 20 52 65 71 75 65 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6e 6f 74 20 70 | ameter..Request.components.not.p |
| 1380 | 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0a 3b 3b 20 63 6c 69 65 6e 74 20 61 72 65 20 62 6f 75 | rovided.by.the.;;.client.are.bou |
| 13a0 | 6e 64 20 74 6f 20 6e 69 6c 2e 0a 0a 3b 3b 20 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 2a 20 | nd.to.nil...;;.....(defservlet*. |
| 13c0 | 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 6e 20 74 65 78 74 2f | packages/:package/:version.text/ |
| 13e0 | 70 6c 61 69 6e 20 28 76 65 72 62 6f 73 65 29 0a 3b 3b 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 | plain.(verbose).;;.......(insert |
| 1400 | 20 28 66 6f 72 6d 61 74 20 22 25 73 5c 6e 25 73 5c 6e 22 20 70 61 63 6b 61 67 65 20 76 65 72 73 | .(format."%s\n%s\n".package.vers |
| 1420 | 69 6f 6e 29 29 0a 3b 3b 20 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 67 65 74 2d 64 65 73 63 72 | ion)).;;.......(princ.(get-descr |
| 1440 | 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 3b 3b 20 20 20 20 20 | iption.package.version)).;;..... |
| 1460 | 20 20 28 77 68 65 6e 20 76 65 72 62 6f 73 65 0a 3b 3b 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 | ..(when.verbose.;;.........(inse |
| 1480 | 72 74 20 28 66 6f 72 6d 61 74 20 22 25 53 22 20 28 67 65 74 2d 64 65 70 65 6e 64 65 6e 63 69 65 | rt.(format."%S".(get-dependencie |
| 14a0 | 73 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 29 29 29 0a 0a 3b 3b 20 49 74 20 77 6f | s.package.version)))))..;;.It.wo |
| 14c0 | 75 6c 64 20 62 65 20 61 63 63 65 73 73 65 64 20 6c 69 6b 65 20 73 6f 2c 0a 0a 3b 3b 20 20 20 20 | uld.be.accessed.like.so,..;;.... |
| 14e0 | 20 68 74 74 70 3a 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 | .http://example.com/packages/foo |
| 1500 | 62 61 72 2f 31 2e 30 3f 76 65 72 62 6f 73 65 3d 31 0a 0a 3b 3b 20 53 6f 6d 65 20 73 75 70 70 6f | bar/1.0?verbose=1..;;.Some.suppo |
| 1520 | 72 74 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 73 | rt.functions.are.available.for.s |
| 1540 | 65 72 76 6c 65 74 73 20 66 6f 72 20 6d 6f 72 65 0a 3b 3b 20 63 75 73 74 6f 6d 69 7a 65 64 20 72 | ervlets.for.more.;;.customized.r |
| 1560 | 65 73 70 6f 6e 73 65 73 2e 0a 0a 3b 3b 20 20 20 2a 20 60 68 74 74 70 64 2d 73 65 6e 64 2d 66 69 | esponses...;;...*.`httpd-send-fi |
| 1580 | 6c 65 27 20 20 20 2d 2d 20 73 65 72 76 65 20 61 20 66 69 6c 65 20 77 69 74 68 20 70 72 6f 70 65 | le'...--.serve.a.file.with.prope |
| 15a0 | 72 20 63 61 63 68 69 6e 67 0a 3b 3b 20 20 20 2a 20 60 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 | r.caching.;;...*.`httpd-redirect |
| 15c0 | 27 20 20 20 20 2d 2d 20 72 65 64 69 72 65 63 74 20 74 68 65 20 62 72 6f 77 73 65 72 20 74 6f 20 | '....--.redirect.the.browser.to. |
| 15e0 | 61 6e 6f 74 68 65 72 20 75 72 6c 0a 3b 3b 20 20 20 2a 20 60 68 74 74 70 64 2d 73 65 6e 64 2d 68 | another.url.;;...*.`httpd-send-h |
| 1600 | 65 61 64 65 72 27 20 2d 2d 20 73 65 6e 64 20 63 75 73 74 6f 6d 20 68 65 61 64 65 72 73 0a 3b 3b | eader'.--.send.custom.headers.;; |
| 1620 | 20 20 20 2a 20 60 68 74 74 70 64 2d 65 72 72 6f 72 27 20 20 20 20 20 20 20 2d 2d 20 72 65 70 6f | ...*.`httpd-error'.......--.repo |
| 1640 | 72 74 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 0a 3b 3b 20 20 20 2a | rt.an.error.to.the.client.;;...* |
| 1660 | 20 60 68 74 74 70 64 2d 6c 6f 67 27 20 20 20 20 20 20 20 20 20 2d 2d 20 6c 6f 67 20 61 6e 20 6f | .`httpd-log'.........--.log.an.o |
| 1680 | 62 6a 65 63 74 20 74 6f 20 2a 68 74 74 70 64 2a 0a 0a 3b 3b 20 53 6f 6d 65 20 6f 66 20 74 68 65 | bject.to.*httpd*..;;.Some.of.the |
| 16a0 | 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 71 75 69 72 65 20 61 20 70 72 6f 63 65 73 73 20 6f | se.functions.require.a.process.o |
| 16c0 | 62 6a 65 63 74 2c 20 77 68 69 63 68 20 69 73 6e 27 74 0a 3b 3b 20 70 61 73 73 65 64 20 74 6f 20 | bject,.which.isn't.;;.passed.to. |
| 16e0 | 60 64 65 66 73 65 72 76 6c 65 74 27 20 73 65 72 76 6c 65 74 73 2e 20 55 73 65 20 74 20 69 6e 20 | `defservlet'.servlets..Use.t.in. |
| 1700 | 70 6c 61 63 65 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 0a 3b 3b 20 61 72 67 75 6d 65 6e 74 | place.of.the.process.;;.argument |
| 1720 | 20 74 6f 20 75 73 65 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 28 6c 69 | .to.use.`httpd-current-proc'.(li |
| 1740 | 6b 65 20 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 27 29 2e 0a 0a 3b 3b 20 49 66 20 79 6f | ke.`standard-output')...;;.If.yo |
| 1760 | 75 20 6a 75 73 74 20 6e 65 65 64 20 74 6f 20 73 65 72 76 65 20 73 74 61 74 69 63 20 66 72 6f 6d | u.just.need.to.serve.static.from |
| 1780 | 20 73 6f 6d 65 20 6c 6f 63 61 74 69 6f 6e 20 75 6e 64 65 72 20 73 6f 6d 65 0a 3b 3b 20 72 6f 75 | .some.location.under.some.;;.rou |
| 17a0 | 74 65 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 2c 20 75 73 65 20 60 68 74 74 70 64 2d 64 65 66 | te.on.the.server,.use.`httpd-def |
| 17c0 | 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 27 2e 20 49 74 20 65 78 70 61 6e 64 73 20 69 6e 74 6f 0a | -file-servlet'..It.expands.into. |
| 17e0 | 3b 3b 20 61 20 60 64 65 66 73 65 72 76 6c 65 74 27 20 74 68 61 74 20 73 65 72 76 65 73 20 66 69 | ;;.a.`defservlet'.that.serves.fi |
| 1800 | 6c 65 73 2e 0a 0a 3b 3b 3b 20 48 69 73 74 6f 72 79 3a 0a 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 | les...;;;.History:..;;.Version.1 |
| 1820 | 2e 35 2e 31 3a 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 0a 3b 3b 20 20 20 2a 20 41 64 64 20 60 68 | .5.1:.improvements.;;...*.Add.`h |
| 1840 | 74 74 70 64 2d 72 75 6e 6e 69 6e 67 2d 70 27 0a 3b 3b 20 20 20 2a 20 50 72 6f 70 65 72 6c 79 20 | ttpd-running-p'.;;...*.Properly. |
| 1860 | 68 61 6e 64 6c 65 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 22 20 61 6e 64 20 48 | handle."Connection:.close".and.H |
| 1880 | 54 54 50 2f 31 2e 30 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 35 2e 30 3a 20 69 6d 70 72 6f 76 | TTP/1.0.;;.Version.1.5.0:.improv |
| 18a0 | 65 6d 65 6e 74 73 0a 3b 3b 20 20 20 2a 20 44 72 61 73 74 69 63 61 6c 6c 79 20 69 6d 70 72 6f 76 | ements.;;...*.Drastically.improv |
| 18c0 | 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 66 6f 72 20 6c 61 72 67 65 20 72 65 71 75 65 73 74 | ed.performance.for.large.request |
| 18e0 | 73 0a 3b 3b 20 20 20 2a 20 4d 6f 72 65 20 48 54 54 50 20 73 74 61 74 75 73 20 63 6f 64 65 73 0a | s.;;...*.More.HTTP.status.codes. |
| 1900 | 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 36 3a 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 41 | ;;.Version.1.4.6:.fixes.;;...*.A |
| 1920 | 64 64 65 64 20 68 74 74 70 64 2d 73 65 72 76 65 2d 64 69 72 65 63 74 6f 72 79 0a 3b 3b 20 20 20 | dded.httpd-serve-directory.;;... |
| 1940 | 2a 20 46 69 78 20 73 6f 6d 65 20 65 6e 63 6f 64 69 6e 67 20 69 73 73 75 65 73 0a 3b 3b 20 56 65 | *.Fix.some.encoding.issues.;;.Ve |
| 1960 | 72 73 69 6f 6e 20 31 2e 34 2e 35 3a 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 55 70 64 61 74 65 | rsion.1.4.5:.fixes.;;...*.Update |
| 1980 | 20 74 6f 20 63 6c 2d 6c 69 62 20 66 72 6f 6d 20 63 6c 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e | .to.cl-lib.from.cl.;;.Version.1. |
| 19a0 | 34 2e 34 3a 20 66 65 61 74 75 72 65 73 0a 3b 3b 20 20 20 2a 20 43 6f 6d 6d 6f 6e 20 4c 69 73 70 | 4.4:.features.;;...*.Common.Lisp |
| 19c0 | 20 26 6b 65 79 2d 6c 69 6b 65 20 64 65 66 73 65 72 76 6c 65 74 2a 20 61 72 67 75 6d 65 6e 74 20 | .&key-like.defservlet*.argument. |
| 19e0 | 73 75 70 70 6f 72 74 0a 3b 3b 20 20 20 2a 20 46 69 78 20 75 70 20 73 6f 6d 65 20 64 65 66 73 65 | support.;;...*.Fix.up.some.defse |
| 1a00 | 72 76 6c 65 74 2a 20 75 73 61 67 65 20 77 61 72 6e 69 6e 67 73 2e 0a 3b 3b 20 56 65 72 73 69 6f | rvlet*.usage.warnings..;;.Versio |
| 1a20 | 6e 20 31 2e 34 2e 33 3a 20 66 65 61 74 75 72 65 73 0a 3b 3b 20 20 20 2a 20 41 64 64 20 60 68 74 | n.1.4.3:.features.;;...*.Add.`ht |
| 1a40 | 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 27 0a 3b 3b 20 20 20 2a 20 41 64 64 20 60 | tpd-discard-buffer'.;;...*.Add.` |
| 1a60 | 68 74 74 70 64 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 27 0a 3b 3b 20 20 20 2a 20 42 | httpd-def-file-servlet'.;;...*.B |
| 1a80 | 65 20 6d 6f 72 65 20 63 61 72 65 66 75 6c 20 61 62 6f 75 74 20 6e 6f 74 20 73 65 6e 64 69 6e 67 | e.more.careful.about.not.sending |
| 1aa0 | 20 65 78 74 72 61 20 68 65 61 64 65 72 73 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 32 3a | .extra.headers.;;.Version.1.4.2: |
| 1ac0 | 20 66 65 61 74 75 72 65 73 2c 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 60 64 65 66 73 65 72 76 | .features,.fixes.;;...*.`defserv |
| 1ae0 | 6c 65 74 2a 27 20 6d 61 63 72 6f 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 34 2e 31 3a 20 73 6d | let*'.macro.;;.Version.1.4.1:.sm |
| 1b00 | 61 6c 6c 20 62 75 67 20 66 69 78 65 73 2c 20 6f 6e 65 20 66 65 61 74 75 72 65 0a 3b 3b 20 20 20 | all.bug.fixes,.one.feature.;;... |
| 1b20 | 2a 20 41 6c 6c 20 6d 69 6d 65 2d 74 79 70 65 20 70 61 72 61 6d 65 74 65 72 73 20 6e 6f 77 20 61 | *.All.mime-type.parameters.now.a |
| 1b40 | 63 63 65 70 74 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 61 74 6f 72 73 0a 3b 3b 20 20 20 2a 20 | ccept.string.designators.;;...*. |
| 1b60 | 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 75 70 64 61 74 65 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 | Documentation.update.;;.Version. |
| 1b80 | 31 2e 34 2e 30 3a 20 66 65 61 74 75 72 65 73 2c 20 41 50 49 20 63 68 61 6e 67 65 2c 20 61 6e 64 | 1.4.0:.features,.API.change,.and |
| 1ba0 | 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 52 65 6d 6f 76 65 64 20 68 74 74 70 64 2d 73 65 6e 64 | .fixes.;;...*.Removed.httpd-send |
| 1bc0 | 2d 62 75 66 66 65 72 3b 20 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 6e 6f 77 20 64 | -buffer;.httpd-send-header.now.d |
| 1be0 | 6f 65 73 20 74 68 69 73 20 69 6d 70 6c 69 63 69 74 6c 79 0a 3b 3b 20 20 20 2a 20 68 74 74 70 64 | oes.this.implicitly.;;...*.httpd |
| 1c00 | 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 6e 6f 77 20 61 63 63 65 70 74 73 20 6b 65 79 77 6f 72 64 | -send-header.now.accepts.keyword |
| 1c20 | 73 20 69 6e 73 74 65 61 64 0a 3b 3b 20 20 20 2a 20 46 69 78 20 68 74 74 70 64 2d 63 6c 65 61 6e | s.instead.;;...*.Fix.httpd-clean |
| 1c40 | 2d 70 61 74 68 20 69 6e 20 57 69 6e 64 6f 77 73 0a 3b 3b 20 20 20 2a 20 46 69 78 20 61 20 63 6f | -path.in.Windows.;;...*.Fix.a.co |
| 1c60 | 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 62 75 67 0a 3b 3b 20 20 20 2a 20 64 65 66 73 65 72 76 6c | ntent-length.bug.;;...*.defservl |
| 1c80 | 65 74 20 66 6f 6e 74 69 66 69 63 61 74 69 6f 6e 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 33 2e | et.fontification.;;.Version.1.3. |
| 1ca0 | 31 3a 20 66 65 61 74 75 72 65 73 20 61 6e 64 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 53 65 74 | 1:.features.and.fixes.;;...*.Set |
| 1cc0 | 20 60 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 27 20 69 6e 20 60 77 69 74 68 2d 68 74 74 70 | .`standard-output'.in.`with-http |
| 1ce0 | 64 2d 62 75 66 66 65 72 27 0a 3b 3b 20 56 65 72 73 69 6f 6e 20 31 2e 33 2e 30 3a 20 73 65 63 75 | d-buffer'.;;.Version.1.3.0:.secu |
| 1d00 | 72 69 74 79 20 66 69 78 0a 3b 3b 20 20 20 2a 20 46 69 78 20 70 61 74 68 20 65 78 70 61 6e 73 69 | rity.fix.;;...*.Fix.path.expansi |
| 1d20 | 6f 6e 20 73 65 63 75 72 69 74 79 20 69 73 73 75 65 0a 3b 3b 20 20 20 2a 20 46 69 78 20 63 6f 64 | on.security.issue.;;...*.Fix.cod |
| 1d40 | 69 6e 67 20 73 79 73 74 65 6d 20 28 64 6f 6e 27 74 20 64 65 66 61 75 6c 74 29 0a 3b 3b 20 56 65 | ing.system.(don't.default).;;.Ve |
| 1d60 | 72 73 69 6f 6e 20 31 2e 32 2e 34 3a 20 66 69 78 65 73 0a 3b 3b 20 20 20 2a 20 48 61 6e 64 6c 65 | rsion.1.2.4:.fixes.;;...*.Handle |
| 1d80 | 20 6c 61 72 67 65 20 50 4f 53 54 73 0a 3b 3b 20 20 20 2a 20 46 69 78 20 64 61 74 65 20 73 74 72 | .large.POSTs.;;...*.Fix.date.str |
| 1da0 | 69 6e 67 73 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 | ings..;;;.Code:..(require.'cl-li |
| 1dc0 | 62 29 0a 28 72 65 71 75 69 72 65 20 27 70 70 29 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 2d 75 | b).(require.'pp).(require.'url-u |
| 1de0 | 74 69 6c 29 0a 0a 28 64 65 66 67 72 6f 75 70 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 20 6e 69 6c | til)..(defgroup.simple-httpd.nil |
| 1e00 | 0a 20 20 22 41 20 73 69 6d 70 6c 65 20 77 65 62 20 73 65 72 76 65 72 2e 22 0a 20 20 3a 67 72 6f | ..."A.simple.web.server."...:gro |
| 1e20 | 75 70 20 27 63 6f 6d 6d 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 69 70 2d 66 | up.'comm)..(defcustom.httpd-ip-f |
| 1e40 | 61 6d 69 6c 79 20 27 69 70 76 34 0a 20 20 22 57 65 62 20 73 65 72 76 65 72 20 49 50 20 66 61 6d | amily.'ipv4..."Web.server.IP.fam |
| 1e60 | 69 6c 79 20 75 73 65 64 20 62 79 20 60 6d 61 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 | ily.used.by.`make-network-proces |
| 1e80 | 73 27 2e 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 | s'."...:group.'simple-httpd...:t |
| 1ea0 | 79 70 65 20 27 73 79 6d 62 6f 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 68 | ype.'symbol)..(defcustom.httpd-h |
| 1ec0 | 6f 73 74 20 6e 69 6c 0a 20 20 22 57 65 62 20 73 65 72 76 65 72 20 68 6f 73 74 20 6e 61 6d 65 20 | ost.nil..."Web.server.host.name. |
| 1ee0 | 75 73 65 64 20 62 79 20 60 6d 61 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 27 2e 22 | used.by.`make-network-process'." |
| 1f00 | 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 20 | ...:group.'simple-httpd...:type. |
| 1f20 | 27 28 63 68 6f 69 63 65 20 28 63 6f 6e 73 74 20 6e 69 6c 29 20 28 63 6f 6e 73 74 20 6c 6f 63 61 | '(choice.(const.nil).(const.loca |
| 1f40 | 6c 29 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 70 6f | l).string))..(defcustom.httpd-po |
| 1f60 | 72 74 20 38 30 38 30 0a 20 20 22 57 65 62 20 73 65 72 76 65 72 20 70 6f 72 74 2e 22 0a 20 20 3a | rt.8080..."Web.server.port."...: |
| 1f80 | 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 20 27 69 6e 74 | group.'simple-httpd...:type.'int |
| 1fa0 | 65 67 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 72 6f 6f 74 20 22 7e 2f | eger)..(defcustom.httpd-root."~/ |
| 1fc0 | 70 75 62 6c 69 63 5f 68 74 6d 6c 22 0a 20 20 22 57 65 62 20 73 65 72 76 65 72 20 66 69 6c 65 20 | public_html"..."Web.server.file. |
| 1fe0 | 72 6f 6f 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 64 0a 20 20 | root."...:group.'simple-httpd... |
| 2000 | 3a 74 79 70 65 20 27 64 69 72 65 63 74 6f 72 79 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 | :type.'directory)..(defcustom.ht |
| 2020 | 74 70 64 2d 73 65 72 76 65 2d 66 69 6c 65 73 20 74 0a 20 20 22 45 6e 61 62 6c 65 20 73 65 72 76 | tpd-serve-files.t..."Enable.serv |
| 2040 | 69 6e 67 20 66 69 6c 65 73 20 66 72 6f 6d 20 60 68 74 74 70 64 2d 72 6f 6f 74 27 2e 22 0a 20 20 | ing.files.from.`httpd-root'."... |
| 2060 | 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 20 27 62 6f | :group.'simple-httpd...:type.'bo |
| 2080 | 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 6c 69 73 74 69 6e 67 | olean)..(defcustom.httpd-listing |
| 20a0 | 73 20 74 0a 20 20 22 49 66 20 74 72 75 65 2c 20 73 65 72 76 65 20 64 69 72 65 63 74 6f 72 79 20 | s.t..."If.true,.serve.directory. |
| 20c0 | 6c 69 73 74 69 6e 67 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 | listings."...:group.'simple-http |
| 20e0 | 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 20 | d...:type.'boolean)..(defcustom. |
| 2100 | 68 74 74 70 64 2d 73 65 72 76 6c 65 74 73 20 74 0a 20 20 22 45 6e 61 62 6c 65 20 73 65 72 76 6c | httpd-servlets.t..."Enable.servl |
| 2120 | 65 74 73 2e 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 | ets."...:group.'simple-httpd...: |
| 2140 | 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 20 68 74 74 70 64 | type.'boolean)..(defcustom.httpd |
| 2160 | 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 20 6e 69 6c 0a 20 | -show-backtrace-when-error.nil.. |
| 2180 | 20 22 49 66 20 74 72 75 65 2c 20 73 68 6f 77 20 62 61 63 6b 74 72 61 63 65 20 6f 6e 20 65 72 72 | ."If.true,.show.backtrace.on.err |
| 21a0 | 6f 72 20 70 61 67 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 64 | or.page."...:group.'simple-httpd |
| 21c0 | 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 20 68 | ...:type.'boolean)..(defcustom.h |
| 21e0 | 74 74 70 64 2d 73 74 61 72 74 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 74 6f 20 72 | ttpd-start-hook.nil..."Hook.to.r |
| 2200 | 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 61 72 74 65 64 2e 22 | un.when.the.server.has.started." |
| 2220 | 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 20 | ...:group.'simple-httpd...:type. |
| 2240 | 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 68 74 74 70 64 2d 73 74 6f 70 2d 68 6f | 'hook)..(defcustom.httpd-stop-ho |
| 2260 | 6f 6b 20 6e 69 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 | ok.nil..."Hook.to.run.when.the.s |
| 2280 | 65 72 76 65 72 20 68 61 73 20 73 74 6f 70 70 65 64 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 73 69 | erver.has.stopped."...:group.'si |
| 22a0 | 6d 70 6c 65 2d 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 76 | mple-httpd...:type.'hook)..(defv |
| 22c0 | 61 72 20 68 74 74 70 64 2d 73 65 72 76 65 72 2d 6e 61 6d 65 20 28 66 6f 72 6d 61 74 20 22 73 69 | ar.httpd-server-name.(format."si |
| 22e0 | 6d 70 6c 65 2d 68 74 74 70 64 20 28 45 6d 61 63 73 20 25 73 29 22 20 65 6d 61 63 73 2d 76 65 72 | mple-httpd.(Emacs.%s)".emacs-ver |
| 2300 | 73 69 6f 6e 29 0a 20 20 22 53 74 72 69 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 74 68 65 20 53 65 | sion)..."String.to.use.in.the.Se |
| 2320 | 72 76 65 72 20 68 65 61 64 65 72 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 6d 69 | rver.header.")..(defvar.httpd-mi |
| 2340 | 6d 65 2d 74 79 70 65 73 0a 20 20 27 28 28 22 70 6e 67 22 20 20 2e 20 22 69 6d 61 67 65 2f 70 6e | me-types...'(("png"...."image/pn |
| 2360 | 67 22 29 0a 20 20 20 20 28 22 67 69 66 22 20 20 2e 20 22 69 6d 61 67 65 2f 67 69 66 22 29 0a 20 | g").....("gif"...."image/gif").. |
| 2380 | 20 20 20 28 22 6a 70 67 22 20 20 2e 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 29 0a 20 20 20 20 28 | ...("jpg"...."image/jpeg").....( |
| 23a0 | 22 6a 70 65 67 22 20 2e 20 22 69 6d 61 67 65 2f 6a 70 65 67 22 29 0a 20 20 20 20 28 22 74 69 66 | "jpeg"..."image/jpeg").....("tif |
| 23c0 | 22 20 20 2e 20 22 69 6d 61 67 65 2f 74 69 66 22 29 0a 20 20 20 20 28 22 74 69 66 66 22 20 2e 20 | "...."image/tif").....("tiff"... |
| 23e0 | 22 69 6d 61 67 65 2f 74 69 66 66 22 29 0a 20 20 20 20 28 22 69 63 6f 22 20 20 2e 20 22 69 6d 61 | "image/tiff").....("ico"...."ima |
| 2400 | 67 65 2f 78 2d 69 63 6f 6e 22 29 0a 20 20 20 20 28 22 73 76 67 22 20 20 2e 20 22 69 6d 61 67 65 | ge/x-icon").....("svg"...."image |
| 2420 | 2f 73 76 67 2b 78 6d 6c 22 29 0a 20 20 20 20 28 22 63 73 73 22 20 20 2e 20 22 74 65 78 74 2f 63 | /svg+xml").....("css"...."text/c |
| 2440 | 73 73 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 68 74 6d 22 20 20 | ss;.charset=utf-8").....("htm".. |
| 2460 | 2e 20 22 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 29 0a 20 20 | .."text/html;.charset=utf-8")... |
| 2480 | 20 20 28 22 68 74 6d 6c 22 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d | ..("html"..."text/html;.charset= |
| 24a0 | 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 78 6d 6c 22 20 20 2e 20 22 74 65 78 74 2f 78 6d 6c 3b | utf-8").....("xml"...."text/xml; |
| 24c0 | 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 72 73 73 22 20 20 2e 20 22 | .charset=utf-8").....("rss"...." |
| 24e0 | 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 20 20 20 28 22 | text/xml;.charset=utf-8").....(" |
| 2500 | 61 74 6f 6d 22 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 | atom"..."text/xml;.charset=utf-8 |
| 2520 | 22 29 0a 20 20 20 20 28 22 74 78 74 22 20 20 2e 20 22 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 | ").....("txt"...."text/plain;.ch |
| 2540 | 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 65 6c 22 20 20 20 2e 20 22 74 65 78 | arset=utf-8").....("el"....."tex |
| 2560 | 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 28 22 6a | t/plain;.charset=utf-8").....("j |
| 2580 | 73 22 20 20 20 2e 20 22 74 65 78 74 2f 6a 61 76 61 73 63 72 69 70 74 3b 20 63 68 61 72 73 65 74 | s"....."text/javascript;.charset |
| 25a0 | 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 6d 64 22 20 20 20 2e 20 22 74 65 78 74 2f 78 2d 6d | =utf-8").....("md"....."text/x-m |
| 25c0 | 61 72 6b 64 6f 77 6e 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 29 0a 20 20 20 20 28 22 67 | arkdown;.charset=utf-8").....("g |
| 25e0 | 7a 22 20 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d | z"....."application/octet-stream |
| 2600 | 22 29 0a 20 20 20 20 28 22 70 73 22 20 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 6f | ").....("ps"....."application/po |
| 2620 | 73 74 73 63 72 69 70 74 22 29 0a 20 20 20 20 28 22 65 70 73 22 20 20 2e 20 22 61 70 70 6c 69 63 | stscript").....("eps"...."applic |
| 2640 | 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 70 64 66 22 20 20 2e | ation/postscript").....("pdf"... |
| 2660 | 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 64 66 22 29 0a 20 20 20 20 28 22 74 61 72 22 20 20 | ."application/pdf").....("tar".. |
| 2680 | 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 74 61 72 22 29 0a 20 20 20 20 28 22 7a 69 70 | .."application/x-tar").....("zip |
| 26a0 | 22 20 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 7a 69 70 22 29 0a 20 20 20 20 28 22 77 61 | "...."application/zip").....("wa |
| 26c0 | 73 6d 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 77 61 73 6d 22 29 0a 20 20 20 20 28 22 | sm"..."application/wasm").....(" |
| 26e0 | 6d 70 33 22 20 20 2e 20 22 61 75 64 69 6f 2f 6d 70 65 67 22 29 0a 20 20 20 20 28 22 77 61 76 22 | mp3"...."audio/mpeg").....("wav" |
| 2700 | 20 20 2e 20 22 61 75 64 69 6f 2f 78 2d 77 61 76 22 29 0a 20 20 20 20 28 22 66 6c 61 63 22 20 2e | ...."audio/x-wav").....("flac".. |
| 2720 | 20 22 61 75 64 69 6f 2f 66 6c 61 63 22 29 0a 20 20 20 20 28 22 73 70 78 22 20 20 2e 20 22 61 75 | ."audio/flac").....("spx"...."au |
| 2740 | 64 69 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 22 6f 67 61 22 20 20 2e 20 22 61 75 64 69 6f 2f 6f | dio/ogg").....("oga"...."audio/o |
| 2760 | 67 67 22 29 0a 20 20 20 20 28 22 6f 67 67 22 20 20 2e 20 22 61 75 64 69 6f 2f 6f 67 67 22 29 0a | gg").....("ogg"...."audio/ogg"). |
| 2780 | 20 20 20 20 28 22 6f 67 76 22 20 20 2e 20 22 76 69 64 65 6f 2f 6f 67 67 22 29 0a 20 20 20 20 28 | ....("ogv"...."video/ogg").....( |
| 27a0 | 22 6d 70 34 22 20 20 2e 20 22 76 69 64 65 6f 2f 6d 70 34 22 29 0a 20 20 20 20 28 22 6d 6b 76 22 | "mp4"...."video/mp4").....("mkv" |
| 27c0 | 20 20 2e 20 22 76 69 64 65 6f 2f 78 2d 6d 61 74 72 6f 73 6b 61 22 29 0a 20 20 20 20 28 22 77 65 | ...."video/x-matroska").....("we |
| 27e0 | 62 6d 22 20 2e 20 22 76 69 64 65 6f 2f 77 65 62 6d 22 29 29 0a 20 20 22 4d 49 4d 45 20 74 79 70 | bm"..."video/webm"))..."MIME.typ |
| 2800 | 65 73 20 66 6f 72 20 68 65 61 64 65 72 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 | es.for.headers.")..(defvar.httpd |
| 2820 | 2d 69 6e 64 65 78 65 73 0a 20 20 27 28 22 69 6e 64 65 78 2e 68 74 6d 6c 22 0a 20 20 20 20 22 69 | -indexes...'("index.html"....."i |
| 2840 | 6e 64 65 78 2e 68 74 6d 22 0a 20 20 20 20 22 69 6e 64 65 78 2e 78 6d 6c 22 29 0a 20 20 22 46 69 | ndex.htm"....."index.xml")..."Fi |
| 2860 | 6c 65 20 73 65 72 76 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 77 68 65 6e 20 61 63 63 65 73 73 | le.served.by.default.when.access |
| 2880 | 69 6e 67 20 61 20 64 69 72 65 63 74 6f 72 79 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 | ing.a.directory.")..(defvar.http |
| 28a0 | 64 2d 73 74 61 74 75 73 2d 63 6f 64 65 73 0a 20 20 27 28 28 31 30 30 20 2e 20 22 43 6f 6e 74 69 | d-status-codes...'((100..."Conti |
| 28c0 | 6e 75 65 22 29 0a 20 20 20 20 28 31 30 31 20 2e 20 22 53 77 69 74 63 68 69 6e 67 20 50 72 6f 74 | nue").....(101..."Switching.Prot |
| 28e0 | 6f 63 6f 6c 73 22 29 0a 20 20 20 20 28 31 30 32 20 2e 20 22 50 72 6f 63 65 73 73 69 6e 67 22 29 | ocols").....(102..."Processing") |
| 2900 | 0a 20 20 20 20 28 32 30 30 20 2e 20 22 4f 4b 22 29 0a 20 20 20 20 28 32 30 31 20 2e 20 22 43 72 | .....(200..."OK").....(201..."Cr |
| 2920 | 65 61 74 65 64 22 29 0a 20 20 20 20 28 32 30 32 20 2e 20 22 41 63 63 65 70 74 65 64 22 29 0a 20 | eated").....(202..."Accepted").. |
| 2940 | 20 20 20 28 32 30 33 20 2e 20 22 4e 6f 6e 2d 61 75 74 68 6f 72 69 74 61 74 69 76 65 20 49 6e 66 | ...(203..."Non-authoritative.Inf |
| 2960 | 6f 72 6d 61 74 69 6f 6e 22 29 0a 20 20 20 20 28 32 30 34 20 2e 20 22 4e 6f 20 43 6f 6e 74 65 6e | ormation").....(204..."No.Conten |
| 2980 | 74 22 29 0a 20 20 20 20 28 32 30 35 20 2e 20 22 52 65 73 65 74 20 43 6f 6e 74 65 6e 74 22 29 0a | t").....(205..."Reset.Content"). |
| 29a0 | 20 20 20 20 28 32 30 36 20 2e 20 22 50 61 72 74 69 61 6c 20 43 6f 6e 74 65 6e 74 22 29 0a 20 20 | ....(206..."Partial.Content")... |
| 29c0 | 20 20 28 32 30 37 20 2e 20 22 4d 75 6c 74 69 2d 53 74 61 74 75 73 22 29 0a 20 20 20 20 28 32 30 | ..(207..."Multi-Status").....(20 |
| 29e0 | 38 20 2e 20 22 41 6c 72 65 61 64 79 20 52 65 70 6f 72 74 65 64 22 29 0a 20 20 20 20 28 32 32 36 | 8..."Already.Reported").....(226 |
| 2a00 | 20 2e 20 22 49 4d 20 55 73 65 64 22 29 0a 20 20 20 20 28 33 30 30 20 2e 20 22 4d 75 6c 74 69 70 | ..."IM.Used").....(300..."Multip |
| 2a20 | 6c 65 20 43 68 6f 69 63 65 73 22 29 0a 20 20 20 20 28 33 30 31 20 2e 20 22 4d 6f 76 65 64 20 50 | le.Choices").....(301..."Moved.P |
| 2a40 | 65 72 6d 61 6e 65 6e 74 6c 79 22 29 0a 20 20 20 20 28 33 30 32 20 2e 20 22 46 6f 75 6e 64 22 29 | ermanently").....(302..."Found") |
| 2a60 | 0a 20 20 20 20 28 33 30 33 20 2e 20 22 53 65 65 20 4f 74 68 65 72 22 29 0a 20 20 20 20 28 33 30 | .....(303..."See.Other").....(30 |
| 2a80 | 34 20 2e 20 22 4e 6f 74 20 4d 6f 64 69 66 69 65 64 22 29 0a 20 20 20 20 28 33 30 35 20 2e 20 22 | 4..."Not.Modified").....(305..." |
| 2aa0 | 55 73 65 20 50 72 6f 78 79 22 29 0a 20 20 20 20 28 33 30 37 20 2e 20 22 54 65 6d 70 6f 72 61 72 | Use.Proxy").....(307..."Temporar |
| 2ac0 | 79 20 52 65 64 69 72 65 63 74 22 29 0a 20 20 20 20 28 33 30 38 20 2e 20 22 50 65 72 6d 61 6e 65 | y.Redirect").....(308..."Permane |
| 2ae0 | 6e 74 20 52 65 64 69 72 65 63 74 22 29 0a 20 20 20 20 28 34 30 30 20 2e 20 22 42 61 64 20 52 65 | nt.Redirect").....(400..."Bad.Re |
| 2b00 | 71 75 65 73 74 22 29 0a 20 20 20 20 28 34 30 31 20 2e 20 22 55 6e 61 75 74 68 6f 72 69 7a 65 64 | quest").....(401..."Unauthorized |
| 2b20 | 22 29 0a 20 20 20 20 28 34 30 32 20 2e 20 22 50 61 79 6d 65 6e 74 20 52 65 71 75 69 72 65 64 22 | ").....(402..."Payment.Required" |
| 2b40 | 29 0a 20 20 20 20 28 34 30 33 20 2e 20 22 46 6f 72 62 69 64 64 65 6e 22 29 0a 20 20 20 20 28 34 | ).....(403..."Forbidden").....(4 |
| 2b60 | 30 34 20 2e 20 22 4e 6f 74 20 46 6f 75 6e 64 22 29 0a 20 20 20 20 28 34 30 35 20 2e 20 22 4d 65 | 04..."Not.Found").....(405..."Me |
| 2b80 | 74 68 6f 64 20 4e 6f 74 20 41 6c 6c 6f 77 65 64 22 29 0a 20 20 20 20 28 34 30 36 20 2e 20 22 4e | thod.Not.Allowed").....(406..."N |
| 2ba0 | 6f 74 20 41 63 63 65 70 74 61 62 6c 65 22 29 0a 20 20 20 20 28 34 30 37 20 2e 20 22 50 72 6f 78 | ot.Acceptable").....(407..."Prox |
| 2bc0 | 79 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 | y.Authentication.Required")..... |
| 2be0 | 28 34 30 38 20 2e 20 22 52 65 71 75 65 73 74 20 54 69 6d 65 6f 75 74 22 29 0a 20 20 20 20 28 34 | (408..."Request.Timeout").....(4 |
| 2c00 | 30 39 20 2e 20 22 43 6f 6e 66 6c 69 63 74 22 29 0a 20 20 20 20 28 34 31 30 20 2e 20 22 47 6f 6e | 09..."Conflict").....(410..."Gon |
| 2c20 | 65 22 29 0a 20 20 20 20 28 34 31 31 20 2e 20 22 4c 65 6e 67 74 68 20 52 65 71 75 69 72 65 64 22 | e").....(411..."Length.Required" |
| 2c40 | 29 0a 20 20 20 20 28 34 31 32 20 2e 20 22 50 72 65 63 6f 6e 64 69 74 69 6f 6e 20 46 61 69 6c 65 | ).....(412..."Precondition.Faile |
| 2c60 | 64 22 29 0a 20 20 20 20 28 34 31 33 20 2e 20 22 50 61 79 6c 6f 61 64 20 54 6f 6f 20 4c 61 72 67 | d").....(413..."Payload.Too.Larg |
| 2c80 | 65 22 29 0a 20 20 20 20 28 34 31 34 20 2e 20 22 52 65 71 75 65 73 74 2d 55 52 49 20 54 6f 6f 20 | e").....(414..."Request-URI.Too. |
| 2ca0 | 4c 6f 6e 67 22 29 0a 20 20 20 20 28 34 31 35 20 2e 20 22 55 6e 73 75 70 70 6f 72 74 65 64 20 4d | Long").....(415..."Unsupported.M |
| 2cc0 | 65 64 69 61 20 54 79 70 65 22 29 0a 20 20 20 20 28 34 31 36 20 2e 20 22 52 65 71 75 65 73 74 65 | edia.Type").....(416..."Requeste |
| 2ce0 | 64 20 52 61 6e 67 65 20 4e 6f 74 20 53 61 74 69 73 66 69 61 62 6c 65 22 29 0a 20 20 20 20 28 34 | d.Range.Not.Satisfiable").....(4 |
| 2d00 | 31 37 20 2e 20 22 45 78 70 65 63 74 61 74 69 6f 6e 20 46 61 69 6c 65 64 22 29 0a 20 20 20 20 28 | 17..."Expectation.Failed").....( |
| 2d20 | 34 31 38 20 2e 20 22 49 27 6d 20 61 20 74 65 61 70 6f 74 22 29 0a 20 20 20 20 28 34 32 31 20 2e | 418..."I'm.a.teapot").....(421.. |
| 2d40 | 20 22 4d 69 73 64 69 72 65 63 74 65 64 20 52 65 71 75 65 73 74 22 29 0a 20 20 20 20 28 34 32 32 | ."Misdirected.Request").....(422 |
| 2d60 | 20 2e 20 22 55 6e 70 72 6f 63 65 73 73 61 62 6c 65 20 45 6e 74 69 74 79 22 29 0a 20 20 20 20 28 | ..."Unprocessable.Entity").....( |
| 2d80 | 34 32 33 20 2e 20 22 4c 6f 63 6b 65 64 22 29 0a 20 20 20 20 28 34 32 34 20 2e 20 22 46 61 69 6c | 423..."Locked").....(424..."Fail |
| 2da0 | 65 64 20 44 65 70 65 6e 64 65 6e 63 79 22 29 0a 20 20 20 20 28 34 32 36 20 2e 20 22 55 70 67 72 | ed.Dependency").....(426..."Upgr |
| 2dc0 | 61 64 65 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 34 32 38 20 2e 20 22 50 72 65 63 6f | ade.Required").....(428..."Preco |
| 2de0 | 6e 64 69 74 69 6f 6e 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 34 32 39 20 2e 20 22 54 | ndition.Required").....(429..."T |
| 2e00 | 6f 6f 20 4d 61 6e 79 20 52 65 71 75 65 73 74 73 22 29 0a 20 20 20 20 28 34 33 31 20 2e 20 22 52 | oo.Many.Requests").....(431..."R |
| 2e20 | 65 71 75 65 73 74 20 48 65 61 64 65 72 20 46 69 65 6c 64 73 20 54 6f 6f 20 4c 61 72 67 65 22 29 | equest.Header.Fields.Too.Large") |
| 2e40 | 0a 20 20 20 20 28 34 34 34 20 2e 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 20 43 6c 6f 73 65 64 20 57 | .....(444..."Connection.Closed.W |
| 2e60 | 69 74 68 6f 75 74 20 52 65 73 70 6f 6e 73 65 22 29 0a 20 20 20 20 28 34 35 31 20 2e 20 22 55 6e | ithout.Response").....(451..."Un |
| 2e80 | 61 76 61 69 6c 61 62 6c 65 20 46 6f 72 20 4c 65 67 61 6c 20 52 65 61 73 6f 6e 73 22 29 0a 20 20 | available.For.Legal.Reasons")... |
| 2ea0 | 20 20 28 34 39 39 20 2e 20 22 43 6c 69 65 6e 74 20 43 6c 6f 73 65 64 20 52 65 71 75 65 73 74 22 | ..(499..."Client.Closed.Request" |
| 2ec0 | 29 0a 20 20 20 20 28 35 30 30 20 2e 20 22 49 6e 74 65 72 6e 61 6c 20 53 65 72 76 65 72 20 45 72 | ).....(500..."Internal.Server.Er |
| 2ee0 | 72 6f 72 22 29 0a 20 20 20 20 28 35 30 31 20 2e 20 22 4e 6f 74 20 49 6d 70 6c 65 6d 65 6e 74 65 | ror").....(501..."Not.Implemente |
| 2f00 | 64 22 29 0a 20 20 20 20 28 35 30 32 20 2e 20 22 42 61 64 20 47 61 74 65 77 61 79 22 29 0a 20 20 | d").....(502..."Bad.Gateway")... |
| 2f20 | 20 20 28 35 30 33 20 2e 20 22 53 65 72 76 69 63 65 20 55 6e 61 76 61 69 6c 61 62 6c 65 22 29 0a | ..(503..."Service.Unavailable"). |
| 2f40 | 20 20 20 20 28 35 30 34 20 2e 20 22 47 61 74 65 77 61 79 20 54 69 6d 65 6f 75 74 22 29 0a 20 20 | ....(504..."Gateway.Timeout")... |
| 2f60 | 20 20 28 35 30 35 20 2e 20 22 48 54 54 50 20 56 65 72 73 69 6f 6e 20 4e 6f 74 20 53 75 70 70 6f | ..(505..."HTTP.Version.Not.Suppo |
| 2f80 | 72 74 65 64 22 29 0a 20 20 20 20 28 35 30 36 20 2e 20 22 56 61 72 69 61 6e 74 20 41 6c 73 6f 20 | rted").....(506..."Variant.Also. |
| 2fa0 | 4e 65 67 6f 74 69 61 74 65 73 22 29 0a 20 20 20 20 28 35 30 37 20 2e 20 22 49 6e 73 75 66 66 69 | Negotiates").....(507..."Insuffi |
| 2fc0 | 63 69 65 6e 74 20 53 74 6f 72 61 67 65 22 29 0a 20 20 20 20 28 35 30 38 20 2e 20 22 4c 6f 6f 70 | cient.Storage").....(508..."Loop |
| 2fe0 | 20 44 65 74 65 63 74 65 64 22 29 0a 20 20 20 20 28 35 31 30 20 2e 20 22 4e 6f 74 20 45 78 74 65 | .Detected").....(510..."Not.Exte |
| 3000 | 6e 64 65 64 22 29 0a 20 20 20 20 28 35 31 31 20 2e 20 22 4e 65 74 77 6f 72 6b 20 41 75 74 68 65 | nded").....(511..."Network.Authe |
| 3020 | 6e 74 69 63 61 74 69 6f 6e 20 52 65 71 75 69 72 65 64 22 29 0a 20 20 20 20 28 35 39 39 20 2e 20 | ntication.Required").....(599... |
| 3040 | 22 4e 65 74 77 6f 72 6b 20 43 6f 6e 6e 65 63 74 20 54 69 6d 65 6f 75 74 20 45 72 72 6f 72 22 29 | "Network.Connect.Timeout.Error") |
| 3060 | 29 0a 20 20 22 48 54 54 50 20 73 74 61 74 75 73 20 63 6f 64 65 73 2e 22 29 0a 0a 28 64 65 66 76 | )..."HTTP.status.codes.")..(defv |
| 3080 | 61 72 20 68 74 74 70 64 2d 68 74 6d 6c 0a 20 20 27 28 28 34 30 33 20 2e 20 22 3c 21 44 4f 43 54 | ar.httpd-html...'((403..."<!DOCT |
| 30a0 | 59 50 45 20 68 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 | YPE.html>.<html><head>.<title>40 |
| 30c0 | 33 20 46 6f 72 62 69 64 64 65 6e 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 | 3.Forbidden</title>.</head><body |
| 30e0 | 3e 0a 3c 68 31 3e 46 6f 72 62 69 64 64 65 6e 3c 2f 68 31 3e 0a 3c 70 3e 54 68 65 20 72 65 71 75 | >.<h1>Forbidden</h1>.<p>The.requ |
| 3100 | 65 73 74 65 64 20 55 52 4c 20 69 73 20 66 6f 72 62 69 64 64 65 6e 2e 3c 2f 70 3e 0a 3c 70 72 65 | ested.URL.is.forbidden.</p>.<pre |
| 3120 | 3e 25 73 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 22 29 0a 20 20 20 20 28 | >%s</pre>.</body></html>").....( |
| 3140 | 34 30 34 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 65 | 404..."<!DOCTYPE.html>.<html><he |
| 3160 | 61 64 3e 0a 3c 74 69 74 6c 65 3e 34 30 34 20 4e 6f 74 20 46 6f 75 6e 64 3c 2f 74 69 74 6c 65 3e | ad>.<title>404.Not.Found</title> |
| 3180 | 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0a 3c 68 31 3e 4e 6f 74 20 46 6f 75 6e 64 3c 2f 68 31 | .</head><body>.<h1>Not.Found</h1 |
| 31a0 | 3e 0a 3c 70 3e 54 68 65 20 72 65 71 75 65 73 74 65 64 20 55 52 4c 20 77 61 73 20 6e 6f 74 20 66 | >.<p>The.requested.URL.was.not.f |
| 31c0 | 6f 75 6e 64 20 6f 6e 20 74 68 69 73 20 73 65 72 76 65 72 2e 3c 2f 70 3e 0a 3c 70 72 65 3e 25 73 | ound.on.this.server.</p>.<pre>%s |
| 31e0 | 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 22 29 0a 20 20 20 20 28 35 30 30 | </pre>.</body></html>").....(500 |
| 3200 | 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 65 61 64 3e | ..."<!DOCTYPE.html>.<html><head> |
| 3220 | 0a 3c 74 69 74 6c 65 3e 35 30 30 20 49 6e 74 65 72 6e 61 6c 20 45 72 72 6f 72 3c 2f 74 69 74 6c | .<title>500.Internal.Error</titl |
| 3240 | 65 3e 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 3e 0a 3c 68 31 3e 35 30 30 20 49 6e 74 65 72 6e 61 | e>.</head><body>.<h1>500.Interna |
| 3260 | 6c 20 45 72 72 6f 72 3c 2f 68 31 3e 0a 3c 70 3e 49 6e 74 65 72 6e 61 6c 20 65 72 72 6f 72 20 77 | l.Error</h1>.<p>Internal.error.w |
| 3280 | 68 65 6e 20 68 61 6e 64 6c 69 6e 67 20 74 68 69 73 20 72 65 71 75 65 73 74 2e 3c 2f 70 3e 0a 3c | hen.handling.this.request.</p>.< |
| 32a0 | 70 72 65 3e 25 73 3c 2f 70 72 65 3e 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 22 29 29 0a 20 | pre>%s</pre>.</body></html>")).. |
| 32c0 | 20 22 48 54 4d 4c 20 66 6f 72 20 76 61 72 69 6f 75 73 20 65 72 72 6f 72 73 2e 22 29 0a 0a 3b 3b | ."HTML.for.various.errors.")..;; |
| 32e0 | 20 55 73 65 72 20 69 6e 74 65 72 66 61 63 65 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a | .User.interface..;;;###autoload. |
| 3300 | 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 74 61 72 74 20 28 29 0a 20 20 22 53 74 61 72 74 20 74 | (defun.httpd-start.()..."Start.t |
| 3320 | 68 65 20 77 65 62 20 73 65 72 76 65 72 20 70 72 6f 63 65 73 73 2e 20 49 66 20 74 68 65 20 73 65 | he.web.server.process..If.the.se |
| 3340 | 72 76 65 72 20 69 73 20 61 6c 72 65 61 64 79 0a 72 75 6e 6e 69 6e 67 2c 20 74 68 69 73 20 77 69 | rver.is.already.running,.this.wi |
| 3360 | 6c 6c 20 72 65 73 74 61 72 74 20 74 68 65 20 73 65 72 76 65 72 2e 20 54 68 65 72 65 20 69 73 20 | ll.restart.the.server..There.is. |
| 3380 | 6f 6e 6c 79 20 6f 6e 65 20 73 65 72 76 65 72 0a 69 6e 73 74 61 6e 63 65 20 70 65 72 20 45 6d 61 | only.one.server.instance.per.Ema |
| 33a0 | 63 73 20 69 6e 73 74 61 6e 63 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 | cs.instance."...(interactive)... |
| 33c0 | 28 68 74 74 70 64 2d 73 74 6f 70 29 0a 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 73 74 61 72 | (httpd-stop)...(httpd-log.`(star |
| 33e0 | 74 20 2c 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 28 6d 61 | t.,(current-time-string)))...(ma |
| 3400 | 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 0a 20 20 20 3a 6e 61 6d 65 20 20 20 20 20 | ke-network-process....:name..... |
| 3420 | 22 68 74 74 70 64 22 0a 20 20 20 3a 73 65 72 76 69 63 65 20 20 68 74 74 70 64 2d 70 6f 72 74 0a | "httpd"....:service..httpd-port. |
| 3440 | 20 20 20 3a 73 65 72 76 65 72 20 20 20 74 0a 20 20 20 3a 68 6f 73 74 20 20 20 20 20 68 74 74 70 | ...:server...t....:host.....http |
| 3460 | 64 2d 68 6f 73 74 0a 20 20 20 3a 66 61 6d 69 6c 79 20 20 20 68 74 74 70 64 2d 69 70 2d 66 61 6d | d-host....:family...httpd-ip-fam |
| 3480 | 69 6c 79 0a 20 20 20 3a 66 69 6c 74 65 72 20 20 20 27 68 74 74 70 64 2d 2d 66 69 6c 74 65 72 0a | ily....:filter...'httpd--filter. |
| 34a0 | 20 20 20 3a 63 6f 64 69 6e 67 20 20 20 27 62 69 6e 61 72 79 0a 20 20 20 3a 6c 6f 67 20 20 20 20 | ...:coding...'binary....:log.... |
| 34c0 | 20 20 27 68 74 74 70 64 2d 2d 6c 6f 67 29 0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 68 74 74 | ..'httpd--log)...(run-hooks.'htt |
| 34e0 | 70 64 2d 73 74 61 72 74 2d 68 6f 6f 6b 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a | pd-start-hook))..;;;###autoload. |
| 3500 | 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 74 6f 70 20 28 29 0a 20 20 22 53 74 6f 70 20 74 68 65 | (defun.httpd-stop.()..."Stop.the |
| 3520 | 20 77 65 62 20 73 65 72 76 65 72 20 69 66 20 69 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 72 | .web.server.if.it.is.currently.r |
| 3540 | 75 6e 6e 69 6e 67 2c 20 6f 74 68 65 72 77 69 73 65 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 22 0a 20 | unning,.otherwise.do.nothing.".. |
| 3560 | 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 28 70 72 6f 63 65 73 73 2d | .(interactive)...(when.(process- |
| 3580 | 73 74 61 74 75 73 20 22 68 74 74 70 64 22 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 | status."httpd").....(delete-proc |
| 35a0 | 65 73 73 20 22 68 74 74 70 64 22 29 0a 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 73 74 | ess."httpd").....(httpd-log.`(st |
| 35c0 | 6f 70 20 2c 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 | op.,(current-time-string)))..... |
| 35e0 | 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 68 74 74 70 64 2d 73 74 6f 70 2d 68 6f 6f 6b 29 29 29 0a 0a | (run-hooks.'httpd-stop-hook))).. |
| 3600 | 3b 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 72 75 6e 6e | ;;;###autoload.(defun.httpd-runn |
| 3620 | 69 6e 67 2d 70 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 74 68 | ing-p.()..."Return.non-nil.if.th |
| 3640 | 65 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 20 73 65 72 76 65 72 20 69 73 20 72 75 6e 6e 69 6e 67 | e.simple-httpd.server.is.running |
| 3660 | 2e 22 0a 20 20 28 6e 6f 74 20 28 6e 75 6c 6c 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 | ."...(not.(null.(process-status. |
| 3680 | 22 68 74 74 70 64 22 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 | "httpd"))))..;;;###autoload.(def |
| 36a0 | 75 6e 20 68 74 74 70 64 2d 73 65 72 76 65 2d 64 69 72 65 63 74 6f 72 79 20 28 64 69 72 65 63 74 | un.httpd-serve-directory.(direct |
| 36c0 | 6f 72 79 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 77 69 74 | ory)..."Start.the.web.server.wit |
| 36e0 | 68 20 67 69 76 65 6e 20 60 64 69 72 65 63 74 6f 72 79 27 20 61 73 20 60 68 74 74 70 64 2d 72 6f | h.given.`directory'.as.`httpd-ro |
| 3700 | 6f 74 27 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 44 53 65 72 76 65 20 64 69 72 | ot'."...(interactive."DServe.dir |
| 3720 | 65 63 74 6f 72 79 3a 20 5c 6e 22 29 0a 20 20 28 73 65 74 66 20 68 74 74 70 64 2d 72 6f 6f 74 20 | ectory:.\n")...(setf.httpd-root. |
| 3740 | 64 69 72 65 63 74 6f 72 79 29 0a 20 20 28 68 74 74 70 64 2d 73 74 61 72 74 29 0a 20 20 28 6d 65 | directory)...(httpd-start)...(me |
| 3760 | 73 73 61 67 65 20 22 53 74 61 72 74 65 64 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 20 6f 6e 20 25 | ssage."Started.simple-httpd.on.% |
| 3780 | 73 3a 25 64 2c 20 73 65 72 76 69 6e 67 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 | s:%d,.serving:.%s"............(c |
| 37a0 | 6c 2d 63 61 73 65 20 68 74 74 70 64 2d 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | l-case.httpd-host..............( |
| 37c0 | 28 6e 69 6c 29 20 22 30 2e 30 2e 30 2e 30 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 | (nil)."0.0.0.0")..............(( |
| 37e0 | 6c 6f 63 61 6c 29 20 22 6c 6f 63 61 6c 68 6f 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | local)."localhost")............. |
| 3800 | 20 28 6f 74 68 65 72 77 69 73 65 20 68 74 74 70 64 2d 68 6f 73 74 29 29 20 68 74 74 70 64 2d 70 | .(otherwise.httpd-host)).httpd-p |
| 3820 | 6f 72 74 20 64 69 72 65 63 74 6f 72 79 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 62 61 | ort.directory))..(defun.httpd-ba |
| 3840 | 74 63 68 2d 73 74 61 72 74 20 28 29 0a 20 20 22 4e 65 76 65 72 20 72 65 74 75 72 6e 73 2c 20 68 | tch-start.()..."Never.returns,.h |
| 3860 | 6f 6c 64 69 6e 67 20 74 68 65 20 73 65 72 76 65 72 20 6f 70 65 6e 20 69 6e 64 65 66 69 6e 69 74 | olding.the.server.open.indefinit |
| 3880 | 65 6c 79 20 66 6f 72 20 62 61 74 63 68 20 6d 6f 64 65 2e 0a 4c 6f 67 73 20 61 72 65 20 72 65 64 | ely.for.batch.mode..Logs.are.red |
| 38a0 | 69 72 65 63 74 65 64 20 74 6f 20 73 74 64 6f 75 74 2e 20 54 6f 20 75 73 65 2c 20 69 6e 76 6f 6b | irected.to.stdout..To.use,.invok |
| 38c0 | 65 20 45 6d 61 63 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a 65 6d 61 63 73 20 2d 51 20 2d 62 61 74 | e.Emacs.like.this:.emacs.-Q.-bat |
| 38e0 | 63 68 20 2d 6c 20 73 69 6d 70 6c 65 2d 68 74 74 70 64 2e 65 6c 63 20 2d 66 20 68 74 74 70 64 2d | ch.-l.simple-httpd.elc.-f.httpd- |
| 3900 | 62 61 74 63 68 2d 73 74 61 72 74 22 0a 20 20 28 69 66 20 28 6e 6f 74 20 6e 6f 6e 69 6e 74 65 72 | batch-start"...(if.(not.noninter |
| 3920 | 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4f 6e 6c 79 20 75 73 65 20 60 | active).......(error."Only.use.` |
| 3940 | 68 74 74 70 64 2d 62 61 74 63 68 2d 73 74 61 72 74 27 20 69 6e 20 62 61 74 63 68 20 6d 6f 64 65 | httpd-batch-start'.in.batch.mode |
| 3960 | 21 22 29 0a 20 20 20 20 28 68 74 74 70 64 2d 73 74 61 72 74 29 0a 20 20 20 20 28 64 65 66 61 6c | !").....(httpd-start).....(defal |
| 3980 | 69 61 73 20 27 68 74 74 70 64 2d 6c 6f 67 20 27 70 70 29 0a 20 20 20 20 28 77 68 69 6c 65 20 74 | ias.'httpd-log.'pp).....(while.t |
| 39a0 | 20 28 73 6c 65 65 70 2d 66 6f 72 20 36 30 29 29 29 29 0a 0a 3b 3b 20 55 74 69 6c 69 74 79 0a 0a | .(sleep-for.60))))..;;.Utility.. |
| 39c0 | 28 64 65 66 75 6e 20 68 74 74 70 64 2d 64 61 74 65 2d 73 74 72 69 6e 67 20 28 26 6f 70 74 69 6f | (defun.httpd-date-string.(&optio |
| 39e0 | 6e 61 6c 20 64 61 74 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 6e 20 48 54 54 50 20 64 61 74 65 | nal.date)..."Return.an.HTTP.date |
| 3a00 | 20 73 74 72 69 6e 67 20 28 52 46 43 20 31 31 32 33 29 2e 22 0a 20 20 28 66 6f 72 6d 61 74 2d 74 | .string.(RFC.1123)."...(format-t |
| 3a20 | 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 61 2c 20 25 65 20 25 62 20 25 59 20 25 54 20 47 4d 54 22 | ime-string."%a,.%e.%b.%Y.%T.GMT" |
| 3a40 | 20 64 61 74 65 20 74 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 65 74 61 67 20 28 66 69 | .date.t))..(defun.httpd-etag.(fi |
| 3a60 | 6c 65 29 0a 20 20 22 43 6f 6d 70 75 74 65 20 74 68 65 20 45 54 61 67 20 66 6f 72 20 46 49 4c 45 | le)..."Compute.the.ETag.for.FILE |
| 3a80 | 2e 22 0a 20 20 28 63 6f 6e 63 61 74 20 22 5c 22 22 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 68 | ."...(concat."\"".(substring.(sh |
| 3aa0 | 61 31 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 66 69 6c 65 2d 61 74 74 72 69 62 | a1.(prin1-to-string.(file-attrib |
| 3ac0 | 75 74 65 73 20 66 69 6c 65 29 29 29 20 2d 31 36 29 0a 20 20 20 20 20 20 20 20 20 20 22 5c 22 22 | utes.file))).-16)..........."\"" |
| 3ae0 | 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 73 74 72 69 6e 67 69 66 79 20 28 64 65 73 | ))..(defun.httpd--stringify.(des |
| 3b00 | 69 67 6e 61 74 6f 72 29 0a 20 20 22 54 75 72 6e 20 61 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e | ignator)..."Turn.a.string.design |
| 3b20 | 61 74 6f 72 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 | ator.into.a.string."...(let.((st |
| 3b40 | 72 69 6e 67 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 64 65 73 69 67 6e 61 74 6f 72 29 29 29 0a | ring.(format."%s".designator))). |
| 3b60 | 20 20 20 20 28 69 66 20 28 6b 65 79 77 6f 72 64 70 20 64 65 73 69 67 6e 61 74 6f 72 29 0a 20 20 | ....(if.(keywordp.designator)... |
| 3b80 | 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 74 72 69 6e 67 20 31 29 0a 20 20 20 20 20 | ......(substring.string.1)...... |
| 3ba0 | 20 73 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 20 4e 65 74 77 6f 72 6b 69 6e 67 20 63 6f 64 65 0a 0a | .string)))..;;.Networking.code.. |
| 3bc0 | 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e 2d 63 6c 6f 73 65 2d 70 | (defun.httpd--connection-close-p |
| 3be0 | 20 28 72 65 71 75 65 73 74 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 | .(request)..."Return.non-nil.if. |
| 3c00 | 74 68 65 20 63 6c 69 65 6e 74 20 72 65 71 75 65 73 74 65 64 20 5c 22 63 6f 6e 6e 65 63 74 69 6f | the.client.requested.\"connectio |
| 3c20 | 6e 3a 20 63 6c 6f 73 65 5c 22 2e 22 0a 20 20 28 6f 72 20 28 65 71 75 61 6c 20 27 28 22 63 6c 6f | n:.close\"."...(or.(equal.'("clo |
| 3c40 | 73 65 22 29 20 28 63 64 72 20 28 61 73 73 6f 63 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 72 65 | se").(cdr.(assoc."Connection".re |
| 3c60 | 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 65 71 75 61 6c 20 27 28 22 48 54 54 50 2f 31 2e | quest))).......(equal.'("HTTP/1. |
| 3c80 | 30 22 29 20 28 63 64 64 72 20 28 61 73 73 6f 63 20 22 47 45 54 22 20 72 65 71 75 65 73 74 29 29 | 0").(cddr.(assoc."GET".request)) |
| 3ca0 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 20 | )))..(defun.httpd--filter.(proc. |
| 3cc0 | 63 68 75 6e 6b 29 0a 20 20 22 52 75 6e 73 20 65 61 63 68 20 74 69 6d 65 20 63 6c 69 65 6e 74 20 | chunk)..."Runs.each.time.client. |
| 3ce0 | 6d 61 6b 65 73 20 61 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e | makes.a.request."...(with-curren |
| 3d00 | 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 20 3a 72 65 71 75 | t-buffer.(process-get.proc.:requ |
| 3d20 | 65 73 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e | est-buffer).....(goto-char.(poin |
| 3d40 | 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 69 6e 73 65 72 74 20 63 68 75 6e 6b 29 0a 20 20 20 20 28 | t-max)).....(insert.chunk).....( |
| 3d60 | 6c 65 74 20 28 28 72 65 71 75 65 73 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 20 | let.((request.(process-get.proc. |
| 3d80 | 3a 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 71 75 65 73 | :request))).......(unless.reques |
| 3da0 | 74 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 74 66 20 72 65 71 75 65 73 74 20 28 68 | t.........(when.(setf.request.(h |
| 3dc0 | 74 74 70 64 2d 70 61 72 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 | ttpd-parse))...........(delete-r |
| 3de0 | 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 | egion.(point-min).(point))...... |
| 3e00 | 20 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 20 | .....(process-put.proc.:request. |
| 3e20 | 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 72 65 71 75 65 73 74 0a 20 | request))).......(when.request.. |
| 3e40 | 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 28 63 61 | .......(let.((content-length.(ca |
| 3e60 | 64 72 20 28 61 73 73 6f 63 20 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 20 72 65 71 75 65 | dr.(assoc."Content-Length".reque |
| 3e80 | 73 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28 6e 75 6c 6c | st))))...........(when.(or.(null |
| 3ea0 | 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .content-length)................ |
| 3ec0 | 20 20 20 20 20 28 3d 20 28 62 75 66 66 65 72 2d 73 69 7a 65 29 20 28 73 74 72 69 6e 67 2d 74 6f | .....(=.(buffer-size).(string-to |
| 3ee0 | 2d 6e 75 6d 62 65 72 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 29 29 29 0a 20 20 20 20 20 20 | -number.content-length)))....... |
| 3f00 | 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28 62 75 66 66 65 72 2d 73 74 | ......(let*.((content.(buffer-st |
| 3f20 | 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 28 75 72 69 20 28 | ring))....................(uri.( |
| 3f40 | 63 6c 2d 63 61 64 61 72 20 72 65 71 75 65 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | cl-cadar.request)).............. |
| 3f60 | 20 20 20 20 20 20 28 70 61 72 73 65 64 2d 75 72 69 20 28 68 74 74 70 64 2d 70 61 72 73 65 2d 75 | ......(parsed-uri.(httpd-parse-u |
| 3f80 | 72 69 20 28 63 6f 6e 63 61 74 20 75 72 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ri.(concat.uri)))............... |
| 3fa0 | 20 20 20 20 20 28 75 72 69 2d 70 61 74 68 20 28 68 74 74 70 64 2d 75 6e 68 65 78 20 28 6e 74 68 | .....(uri-path.(httpd-unhex.(nth |
| 3fc0 | 20 30 20 70 61 72 73 65 64 2d 75 72 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .0.parsed-uri)))................ |
| 3fe0 | 20 20 20 20 28 75 72 69 2d 71 75 65 72 79 20 28 61 70 70 65 6e 64 20 28 6e 74 68 20 31 20 70 61 | ....(uri-query.(append.(nth.1.pa |
| 4000 | 72 73 65 64 2d 75 72 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rsed-uri)....................... |
| 4020 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 70 61 72 73 65 2d 61 72 67 | ................(httpd-parse-arg |
| 4040 | 73 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s.content))).................... |
| 4060 | 28 73 65 72 76 6c 65 74 20 28 68 74 74 70 64 2d 67 65 74 2d 73 65 72 76 6c 65 74 20 75 72 69 2d | (servlet.(httpd-get-servlet.uri- |
| 4080 | 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 | path)))...............(erase-buf |
| 40a0 | 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 | fer)...............(process-put. |
| 40c0 | 70 72 6f 63 20 3a 72 65 71 75 65 73 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | proc.:request.nil).............. |
| 40e0 | 20 28 73 65 74 66 20 72 65 71 75 65 73 74 20 28 6e 72 65 76 65 72 73 65 20 28 63 6f 6e 73 20 28 | .(setf.request.(nreverse.(cons.( |
| 4100 | 6c 69 73 74 20 22 43 6f 6e 74 65 6e 74 22 20 63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 20 20 20 20 | list."Content".content)......... |
| 4120 | 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 | ................................ |
| 4140 | 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 71 75 65 73 74 29 29 29 29 0a 20 20 20 20 20 20 | ....(nreverse.request))))....... |
| 4160 | 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 72 65 71 75 65 73 74 20 28 64 61 | ........(httpd-log.`(request.(da |
| 4180 | 74 65 20 2c 28 68 74 74 70 64 2d 64 61 74 65 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 | te.,(httpd-date-string))........ |
| 41a0 | 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 61 64 64 | ............................(add |
| 41c0 | 72 65 73 73 20 2c 28 63 61 72 20 28 70 72 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 | ress.,(car.(process-contact.proc |
| 41e0 | 29 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 20 20 20 | )))............................. |
| 4200 | 20 20 20 20 20 20 20 28 67 65 74 20 2c 75 72 69 2d 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 | .......(get.,uri-path).......... |
| 4220 | 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 2c 28 63 6f 6e 73 | ..........................,(cons |
| 4240 | 20 27 68 65 61 64 65 72 73 20 72 65 71 75 65 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | .'headers.request)))............ |
| 4260 | 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 73 65 72 76 6c 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 | ...(if.(null.servlet)........... |
| 4280 | 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 2d 65 72 72 6f 72 2d 73 61 66 65 20 70 72 6f 63 20 | ........(httpd--error-safe.proc. |
| 42a0 | 34 30 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d | 404).................(condition- |
| 42c0 | 63 61 73 65 20 65 72 72 6f 72 2d 63 61 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | case.error-case................. |
| 42e0 | 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 72 76 6c 65 74 20 70 72 6f 63 20 75 72 69 2d 70 61 | ....(funcall.servlet.proc.uri-pa |
| 4300 | 74 68 20 75 72 69 2d 71 75 65 72 79 20 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 | th.uri-query.request)........... |
| 4320 | 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 68 74 74 70 64 2d 2d 65 72 72 6f 72 2d 73 61 66 | ........(error.(httpd--error-saf |
| 4340 | 65 20 70 72 6f 63 20 35 30 30 20 65 72 72 6f 72 2d 63 61 73 65 29 29 29 29 0a 20 20 20 20 20 20 | e.proc.500.error-case))))....... |
| 4360 | 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 68 74 74 70 64 2d 2d 63 6f 6e 6e 65 63 74 69 6f 6e | ........(when.(httpd--connection |
| 4380 | 2d 63 6c 6f 73 65 2d 70 20 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -close-p.request)............... |
| 43a0 | 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 70 72 6f 63 29 29 29 29 29 29 29 29 | ..(process-send-eof.proc)))))))) |
| 43c0 | 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 6c 6f 67 20 28 73 65 72 76 65 72 20 70 72 6f | )..(defun.httpd--log.(server.pro |
| 43e0 | 63 20 6d 65 73 73 61 67 65 29 0a 20 20 22 52 75 6e 73 20 65 61 63 68 20 74 69 6d 65 20 61 20 6e | c.message)..."Runs.each.time.a.n |
| 4400 | 65 77 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 73 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 | ew.client.connects."...(with-cur |
| 4420 | 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 | rent-buffer.(generate-new-buffer |
| 4440 | 20 22 20 2a 68 74 74 70 64 2d 63 6c 69 65 6e 74 2a 22 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 | .".*httpd-client*").....(process |
| 4460 | 2d 70 75 74 20 70 72 6f 63 20 3a 72 65 71 75 65 73 74 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 | -put.proc.:request-buffer.(curre |
| 4480 | 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 | nt-buffer)))...(set-process-sent |
| 44a0 | 69 6e 65 6c 20 70 72 6f 63 20 23 27 68 74 74 70 64 2d 2d 73 65 6e 74 69 6e 65 6c 29 0a 20 20 28 | inel.proc.#'httpd--sentinel)...( |
| 44c0 | 68 74 74 70 64 2d 6c 6f 67 20 28 6c 69 73 74 20 27 63 6f 6e 6e 65 63 74 69 6f 6e 20 28 63 61 72 | httpd-log.(list.'connection.(car |
| 44e0 | 20 28 70 72 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 29 29 29 29 29 0a 0a 28 64 65 | .(process-contact.proc)))))..(de |
| 4500 | 66 75 6e 20 68 74 74 70 64 2d 2d 73 65 6e 74 69 6e 65 6c 20 28 70 72 6f 63 20 6d 65 73 73 61 67 | fun.httpd--sentinel.(proc.messag |
| 4520 | 65 29 0a 20 20 22 52 75 6e 73 20 77 68 65 6e 20 61 20 63 6c 69 65 6e 74 20 63 6c 6f 73 65 73 20 | e)..."Runs.when.a.client.closes. |
| 4540 | 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 | the.connection."...(unless.(stri |
| 4560 | 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 6f 70 65 6e 20 22 20 6d 65 73 73 61 67 65 29 0a 20 20 20 | ng-match-p."^open.".message).... |
| 4580 | 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 | .(let.((buffer.(process-get.proc |
| 45a0 | 20 3a 72 65 71 75 65 73 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 | .:request-buffer))).......(when. |
| 45c0 | 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 62 75 66 66 | buffer.........(kill-buffer.buff |
| 45e0 | 65 72 29 29 29 29 29 0a 0a 3b 3b 20 4c 6f 67 67 69 6e 67 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 | er)))))..;;.Logging..(defun.http |
| 4600 | 64 2d 6c 6f 67 20 28 69 74 65 6d 29 0a 20 20 22 50 72 65 74 74 79 20 70 72 69 6e 74 20 61 20 6c | d-log.(item)..."Pretty.print.a.l |
| 4620 | 69 73 70 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 6c 6f 67 2e 22 0a 20 20 28 77 69 74 68 2d | isp.object.to.the.log."...(with- |
| 4640 | 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 | current-buffer.(get-buffer-creat |
| 4660 | 65 20 22 2a 68 74 74 70 64 2a 22 29 0a 20 20 20 20 28 73 65 74 66 20 62 75 66 66 65 72 2d 72 65 | e."*httpd*").....(setf.buffer-re |
| 4680 | 61 64 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 20 20 20 20 28 6c 65 74 20 28 28 66 6f 6c 6c 6f 77 20 28 | ad-only.nil).....(let.((follow.( |
| 46a0 | 3d 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 | =.(point).(point-max)))).......( |
| 46c0 | 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 | save-excursion.........(goto-cha |
| 46e0 | 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 28 70 70 20 69 74 65 6d 20 | r.(point-max)).........(pp.item. |
| 4700 | 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 66 6f 6c | (current-buffer))).......(if.fol |
| 4720 | 6c 6f 77 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 | low.(goto-char.(point-max))))... |
| 4740 | 20 20 28 73 65 74 66 20 74 72 75 6e 63 61 74 65 2d 6c 69 6e 65 73 20 74 0a 20 20 20 20 20 20 20 | ..(setf.truncate-lines.t........ |
| 4760 | 20 20 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 0a 20 20 20 20 28 73 65 74 2d | ...buffer-read-only.t).....(set- |
| 4780 | 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 20 6e 69 6c 29 29 29 0a 0a 3b 3b 20 53 65 72 | buffer-modified-p.nil)))..;;.Ser |
| 47a0 | 76 6c 65 74 73 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f | vlets..(defvar.httpd-current-pro |
| 47c0 | 63 20 6e 69 6c 0a 20 20 22 54 68 65 20 70 72 6f 63 65 73 73 20 6f 62 6a 65 63 74 20 63 75 72 72 | c.nil..."The.process.object.curr |
| 47e0 | 65 6e 74 6c 79 20 69 6e 20 75 73 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 2d | ently.in.use.")..(defvar.httpd-- |
| 4800 | 68 65 61 64 65 72 2d 73 65 6e 74 20 6e 69 6c 0a 20 20 22 42 75 66 66 65 72 2d 6c 6f 63 61 6c 20 | header-sent.nil..."Buffer-local. |
| 4820 | 76 61 72 69 61 62 6c 65 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 20 74 68 65 20 68 65 61 64 65 | variable.indicating.if.the.heade |
| 4840 | 72 20 68 61 73 20 62 65 65 6e 20 73 65 6e 74 2e 22 29 0a 28 6d 61 6b 65 2d 76 61 72 69 61 62 6c | r.has.been.sent.").(make-variabl |
| 4860 | 65 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 27 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 | e-buffer-local.'httpd--header-se |
| 4880 | 6e 74 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 72 65 73 6f 6c 76 65 2d 70 72 6f 63 20 28 | nt)..(defun.httpd-resolve-proc.( |
| 48a0 | 70 72 6f 63 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 72 72 65 63 74 20 70 72 6f 63 | proc)..."Return.the.correct.proc |
| 48c0 | 65 73 73 20 74 6f 20 75 73 65 2e 20 54 68 69 73 20 68 61 6e 64 6c 65 73 20 60 68 74 74 70 64 2d | ess.to.use..This.handles.`httpd- |
| 48e0 | 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 2e 22 0a 20 20 28 69 66 20 28 65 71 20 74 20 70 72 6f 63 | current-proc'."...(if.(eq.t.proc |
| 4900 | 29 20 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 20 70 72 6f 63 29 29 0a 0a 28 64 65 | ).httpd-current-proc.proc))..(de |
| 4920 | 66 6d 61 63 72 6f 20 77 69 74 68 2d 68 74 74 70 64 2d 62 75 66 66 65 72 20 28 70 72 6f 63 20 6d | fmacro.with-httpd-buffer.(proc.m |
| 4940 | 69 6d 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 74 65 6d 70 | ime.&rest.body)..."Create.a.temp |
| 4960 | 6f 72 61 72 79 20 62 75 66 66 65 72 2c 20 73 65 74 20 69 74 20 61 73 20 74 68 65 20 63 75 72 72 | orary.buffer,.set.it.as.the.curr |
| 4980 | 65 6e 74 20 62 75 66 66 65 72 2c 20 61 6e 64 2c 0a 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 62 | ent.buffer,.and,.at.the.end.of.b |
| 49a0 | 6f 64 79 2c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72 76 65 20 69 74 20 74 6f 20 61 | ody,.automatically.serve.it.to.a |
| 49c0 | 6e 20 48 54 54 50 20 63 6c 69 65 6e 74 20 77 69 74 68 0a 61 6e 20 48 54 54 50 20 68 65 61 64 65 | n.HTTP.client.with.an.HTTP.heade |
| 49e0 | 72 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 4d 49 4d 45 20 | r.indicating.the.specified.MIME. |
| 4a00 | 74 79 70 65 2e 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 0a 60 73 74 61 6e 64 61 72 64 2d 6f 75 | type..Additionally,.`standard-ou |
| 4a20 | 74 70 75 74 27 20 69 73 20 73 65 74 20 74 6f 20 74 68 69 73 20 6f 75 74 70 75 74 20 62 75 66 66 | tput'.is.set.to.this.output.buff |
| 4a40 | 65 72 20 61 6e 64 0a 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 69 73 20 73 | er.and.`httpd-current-proc'.is.s |
| 4a60 | 65 74 20 74 6f 20 50 52 4f 43 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 | et.to.PROC."...(declare.(indent. |
| 4a80 | 64 65 66 75 6e 29 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 | defun))...(let.((proc-sym.(make- |
| 4aa0 | 73 79 6d 62 6f 6c 20 22 2d 2d 70 72 6f 63 2d 2d 22 29 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 | symbol."--proc--"))).....`(let.( |
| 4ac0 | 28 2c 70 72 6f 63 2d 73 79 6d 20 2c 70 72 6f 63 29 29 0a 20 20 20 20 20 20 20 28 77 69 74 68 2d | (,proc-sym.,proc))........(with- |
| 4ae0 | 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 6d 61 6a 6f 72 | temp-buffer..........(setf.major |
| 4b00 | 2d 6d 6f 64 65 20 27 68 74 74 70 64 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 28 6c | -mode.'httpd-buffer)..........(l |
| 4b20 | 65 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 | et.((standard-output.(current-bu |
| 4b40 | 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 63 75 72 | ffer))................(httpd-cur |
| 4b60 | 72 65 6e 74 2d 70 72 6f 63 20 2c 70 72 6f 63 2d 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 | rent-proc.,proc-sym))........... |
| 4b80 | 20 2c 40 62 6f 64 79 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 68 74 74 70 64 2d | .,@body)..........(unless.httpd- |
| 4ba0 | 2d 68 65 61 64 65 72 2d 73 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 | -header-sent............(httpd-s |
| 4bc0 | 65 6e 64 2d 68 65 61 64 65 72 20 2c 70 72 6f 63 2d 73 79 6d 20 2c 6d 69 6d 65 20 32 30 30 29 29 | end-header.,proc-sym.,mime.200)) |
| 4be0 | 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 | ))))..(defun.httpd-discard-buffe |
| 4c00 | 72 20 28 29 0a 20 20 22 44 6f 6e 27 74 20 72 65 73 70 6f 6e 64 20 75 73 69 6e 67 20 63 75 72 72 | r.()..."Don't.respond.using.curr |
| 4c20 | 65 6e 74 20 73 65 72 76 65 72 20 62 75 66 66 65 72 20 28 60 77 69 74 68 2d 68 74 74 70 64 2d 62 | ent.server.buffer.(`with-httpd-b |
| 4c40 | 75 66 66 65 72 27 29 2e 0a 52 65 74 75 72 6e 73 20 61 20 70 72 6f 63 65 73 73 20 66 6f 72 20 66 | uffer')..Returns.a.process.for.f |
| 4c60 | 75 74 75 72 65 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 65 71 20 6d 61 6a | uture.response."...(when.(eq.maj |
| 4c80 | 6f 72 2d 6d 6f 64 65 20 27 68 74 74 70 64 2d 62 75 66 66 65 72 29 20 28 73 65 74 66 20 68 74 74 | or-mode.'httpd-buffer).(setf.htt |
| 4ca0 | 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 20 74 29 29 0a 20 20 68 74 74 70 64 2d 63 75 72 72 | pd--header-sent.t))...httpd-curr |
| 4cc0 | 65 6e 74 2d 70 72 6f 63 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 64 65 66 73 65 72 76 6c 65 74 20 | ent-proc)..(defmacro.defservlet. |
| 4ce0 | 28 6e 61 6d 65 20 6d 69 6d 65 20 70 61 74 68 2d 71 75 65 72 79 2d 72 65 71 75 65 73 74 20 26 72 | (name.mime.path-query-request.&r |
| 4d00 | 65 73 74 20 62 6f 64 79 29 0a 20 20 22 44 65 66 69 6e 65 73 20 61 20 73 69 6d 70 6c 65 20 68 74 | est.body)..."Defines.a.simple.ht |
| 4d20 | 74 70 64 20 73 65 72 76 65 6c 65 74 2e 20 54 68 65 20 73 65 72 76 6c 65 74 20 72 75 6e 73 20 69 | tpd.servelet..The.servlet.runs.i |
| 4d40 | 6e 20 61 0a 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 77 68 69 63 68 20 69 73 20 61 75 | n.a.temporary.buffer.which.is.au |
| 4d60 | 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 6e 74 | tomatically.served.to.the.client |
| 4d80 | 0a 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 68 65 61 64 65 72 2e 0a 0a 41 20 73 65 72 76 6c 65 74 | .along.with.a.header...A.servlet |
| 4da0 | 20 74 68 61 74 20 73 65 72 76 65 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 2a 73 63 | .that.serves.the.contents.of.*sc |
| 4dc0 | 72 61 74 63 68 2a 2c 0a 0a 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 20 73 63 72 61 74 63 68 | ratch*,......(defservlet.scratch |
| 4de0 | 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 62 75 66 | .text/plain.().......(insert-buf |
| 4e00 | 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 74 65 | fer-substring.(get-buffer-create |
| 4e20 | 20 5c 22 2a 73 63 72 61 74 63 68 2a 5c 22 29 29 29 0a 0a 41 20 73 65 72 76 6c 65 74 20 74 68 61 | .\"*scratch*\")))..A.servlet.tha |
| 4e40 | 74 20 73 61 79 73 20 68 65 6c 6c 6f 2c 0a 0a 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 20 68 | t.says.hello,......(defservlet.h |
| 4e60 | 65 6c 6c 6f 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 20 20 20 | ello-world.text/plain.(path).... |
| 4e80 | 20 20 20 28 69 6e 73 65 72 74 20 5c 22 68 65 6c 6c 6f 2c 20 5c 22 20 28 66 69 6c 65 2d 6e 61 6d | ...(insert.\"hello,.\".(file-nam |
| 4ea0 | 65 2d 6e 6f 6e 64 69 72 65 63 74 6f 72 79 20 70 61 74 68 29 29 29 29 22 0a 20 20 28 64 65 63 6c | e-nondirectory.path))))"...(decl |
| 4ec0 | 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 72 6f | are.(indent.defun))...(let.((pro |
| 4ee0 | 63 2d 73 79 6d 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 70 72 6f 63 22 29 29 0a 20 20 20 20 | c-sym.(make-symbol."proc"))..... |
| 4f00 | 20 20 20 20 28 66 6e 61 6d 65 20 28 69 6e 74 65 72 6e 20 28 63 6f 6e 63 61 74 20 22 68 74 74 70 | ....(fname.(intern.(concat."http |
| 4f20 | 64 2f 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 60 | d/".(symbol-name.name))))).....` |
| 4f40 | 28 64 65 66 75 6e 20 2c 66 6e 61 6d 65 20 28 2c 70 72 6f 63 2d 73 79 6d 20 2c 40 70 61 74 68 2d | (defun.,fname.(,proc-sym.,@path- |
| 4f60 | 71 75 65 72 79 2d 72 65 71 75 65 73 74 20 26 72 65 73 74 20 2c 28 63 6c 2d 67 65 6e 73 79 6d 29 | query-request.&rest.,(cl-gensym) |
| 4f80 | 29 0a 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 2c 70 72 6f | )........(with-httpd-buffer.,pro |
| 4fa0 | 63 2d 73 79 6d 20 2c 28 68 74 74 70 64 2d 2d 73 74 72 69 6e 67 69 66 79 20 6d 69 6d 65 29 0a 20 | c-sym.,(httpd--stringify.mime).. |
| 4fc0 | 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 | ........,@body))))..(defun.httpd |
| 4fe0 | 2d 70 61 72 73 65 2d 65 6e 64 70 6f 69 6e 74 20 28 73 79 6d 62 6f 6c 29 0a 20 20 22 50 61 72 73 | -parse-endpoint.(symbol)..."Pars |
| 5000 | 65 20 61 6e 20 65 6e 64 70 6f 69 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e 20 74 65 6d 70 6c 61 74 | e.an.endpoint.definition.templat |
| 5020 | 65 20 66 6f 72 20 75 73 65 20 77 69 74 68 20 60 64 65 66 73 65 72 76 6c 65 74 2a 27 2e 22 0a 20 | e.for.use.with.`defservlet*'.".. |
| 5040 | 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 69 74 65 6d 20 69 6e 20 28 73 70 6c 69 74 2d 73 74 72 | .(cl-loop.for.item.in.(split-str |
| 5060 | 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 73 79 6d 62 6f 6c 29 20 22 2f 22 29 0a 20 20 | ing.(symbol-name.symbol)."/")... |
| 5080 | 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 30 0a 20 20 20 20 20 20 20 20 | .........for.n.upfrom.0......... |
| 50a0 | 20 20 20 77 68 65 6e 20 28 61 6e 64 20 28 3e 20 28 6c 65 6e 67 74 68 20 69 74 65 6d 29 20 30 29 | ...when.(and.(>.(length.item).0) |
| 50c0 | 20 28 65 71 6c 20 28 61 72 65 66 20 69 74 65 6d 20 30 29 20 3f 3a 29 29 0a 20 20 20 20 20 20 20 | .(eql.(aref.item.0).?:))........ |
| 50e0 | 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 63 6f 6e 73 20 28 69 6e 74 65 72 6e 20 28 73 75 62 73 74 | ....collect.(cons.(intern.(subst |
| 5100 | 72 69 6e 67 20 69 74 65 6d 20 31 29 29 20 6e 29 20 69 6e 74 6f 20 76 61 72 73 0a 20 20 20 20 20 | ring.item.1)).n).into.vars...... |
| 5120 | 20 20 20 20 20 20 65 6c 73 65 20 63 6f 6c 6c 65 63 74 20 69 74 65 6d 20 69 6e 74 6f 20 70 61 74 | ......else.collect.item.into.pat |
| 5140 | 68 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 | h............finally............ |
| 5160 | 28 63 6c 2d 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 76 61 6c 75 65 | (cl-return.............(cl-value |
| 5180 | 73 20 28 69 6e 74 65 72 6e 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 | s.(intern.(mapconcat.#'identity. |
| 51a0 | 70 61 74 68 20 22 2f 22 29 29 20 76 61 72 73 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 68 74 74 | path."/")).vars))))..(defvar.htt |
| 51c0 | 70 64 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 6c | pd-path.nil..."Anaphoric.variabl |
| 51e0 | 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 76 61 72 20 | e.for.`defservlet*'.")..(defvar. |
| 5200 | 68 74 74 70 64 2d 71 75 65 72 79 20 6e 69 6c 0a 20 20 22 41 6e 61 70 68 6f 72 69 63 20 76 61 72 | httpd-query.nil..."Anaphoric.var |
| 5220 | 69 61 62 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 | iable.for.`defservlet*'.")..(def |
| 5240 | 76 61 72 20 68 74 74 70 64 2d 72 65 71 75 65 73 74 20 6e 69 6c 0a 20 20 22 41 6e 61 70 68 6f 72 | var.httpd-request.nil..."Anaphor |
| 5260 | 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 27 2e 22 29 | ic.variable.for.`defservlet*'.") |
| 5280 | 0a 0a 28 64 65 66 76 61 72 20 68 74 74 70 64 2d 73 70 6c 69 74 2d 70 61 74 68 20 6e 69 6c 0a 20 | ..(defvar.httpd-split-path.nil.. |
| 52a0 | 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 65 66 73 65 72 | ."Anaphoric.variable.for.`defser |
| 52c0 | 76 6c 65 74 2a 27 2e 22 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 64 65 66 73 65 72 76 6c 65 74 2a | vlet*'.")..(defmacro.defservlet* |
| 52e0 | 20 28 65 6e 64 70 6f 69 6e 74 20 6d 69 6d 65 20 61 72 67 73 20 26 72 65 73 74 20 62 6f 64 79 29 | .(endpoint.mime.args.&rest.body) |
| 5300 | 0a 20 20 22 4c 69 6b 65 20 60 64 65 66 73 65 72 76 6c 65 74 27 2c 20 62 75 74 20 61 75 74 6f 6d | ..."Like.`defservlet',.but.autom |
| 5320 | 61 74 69 63 61 6c 6c 79 20 62 69 6e 64 20 76 61 72 69 61 62 6c 65 73 2f 61 72 67 75 6d 65 6e 74 | atically.bind.variables/argument |
| 5340 | 73 0a 74 6f 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 54 72 61 69 6c 69 6e 67 20 63 6f 6d 70 6f | s.to.the.request..Trailing.compo |
| 5360 | 6e 65 6e 74 73 20 6f 66 20 74 68 65 20 45 4e 44 50 4f 49 4e 54 20 63 61 6e 20 62 65 20 62 6f 75 | nents.of.the.ENDPOINT.can.be.bou |
| 5380 | 6e 64 0a 62 79 20 70 72 65 66 69 78 69 6e 67 20 74 68 65 73 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 | nd.by.prefixing.these.components |
| 53a0 | 20 77 69 74 68 20 61 20 63 6f 6c 6f 6e 2c 20 61 63 74 69 6e 67 20 6c 69 6b 65 20 61 20 74 65 6d | .with.a.colon,.acting.like.a.tem |
| 53c0 | 70 6c 61 74 65 2e 0a 0a 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 2a 20 70 61 63 6b 61 67 65 | plate.......(defservlet*.package |
| 53e0 | 73 2f 3a 70 61 63 6b 61 67 65 2f 3a 76 65 72 73 69 6f 6e 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 | s/:package/:version.text/plain.( |
| 5400 | 76 65 72 62 6f 73 65 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 5c | verbose).......(insert.(format.\ |
| 5420 | 22 25 73 5c 5c 6e 25 73 5c 5c 6e 5c 22 20 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 0a | "%s\\n%s\\n\".package.version)). |
| 5440 | 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 67 65 74 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 70 61 | ......(princ.(get-description.pa |
| 5460 | 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 76 65 72 62 | ckage.version)).......(when.verb |
| 5480 | 6f 73 65 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 5c 22 25 53 | ose.........(insert.(format.\"%S |
| 54a0 | 5c 22 20 28 67 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 | \".(get-dependencies.package.ver |
| 54c0 | 73 69 6f 6e 29 29 29 29 29 0a 0a 57 68 65 6e 20 61 63 63 65 73 73 65 64 20 66 72 6f 6d 20 74 68 | sion)))))..When.accessed.from.th |
| 54e0 | 69 73 20 55 52 4c 2c 0a 0a 20 20 20 20 68 74 74 70 3a 2f 2f 65 78 61 6d 70 6c 65 2e 63 6f 6d 2f | is.URL,......http://example.com/ |
| 5500 | 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 0a 74 | packages/foobar/1.0?verbose=1..t |
| 5520 | 68 65 20 76 61 72 69 61 62 6c 65 73 20 70 61 63 6b 61 67 65 2c 20 76 65 72 73 69 6f 6e 2c 20 61 | he.variables.package,.version,.a |
| 5540 | 6e 64 20 76 65 72 62 6f 73 65 20 77 69 6c 6c 20 62 65 20 62 6f 75 6e 64 20 74 6f 20 74 68 65 0a | nd.verbose.will.be.bound.to.the. |
| 5560 | 61 73 73 6f 63 69 61 74 65 64 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 74 68 65 20 55 52 4c | associated.components.of.the.URL |
| 5580 | 2e 20 43 6f 6d 70 6f 6e 65 6e 74 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 64 20 61 72 65 0a 62 6f | ..Components.not.provided.are.bo |
| 55a0 | 75 6e 64 20 74 6f 20 6e 69 6c 2e 20 54 68 65 20 71 75 65 72 79 20 61 72 67 75 6d 65 6e 74 73 20 | und.to.nil..The.query.arguments. |
| 55c0 | 63 61 6e 20 75 73 65 20 74 68 65 20 43 6f 6d 6d 6f 6e 20 4c 69 73 70 20 26 6b 65 79 0a 66 6f 72 | can.use.the.Common.Lisp.&key.for |
| 55e0 | 6d 20 28 76 61 72 69 61 62 6c 65 20 64 65 66 61 75 6c 74 20 70 72 6f 76 69 64 65 64 2d 70 29 2e | m.(variable.default.provided-p). |
| 5600 | 0a 0a 20 20 20 20 28 64 65 66 73 65 72 76 6c 65 74 2a 20 67 72 65 65 74 69 6e 67 2f 3a 6e 61 6d | ......(defservlet*.greeting/:nam |
| 5620 | 65 20 74 65 78 74 2f 70 6c 61 69 6e 20 28 28 67 72 65 65 74 69 6e 67 20 5c 22 68 69 5c 22 20 67 | e.text/plain.((greeting.\"hi\".g |
| 5640 | 72 65 65 74 69 6e 67 2d 70 29 29 0a 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 66 6f 72 6d 61 74 | reeting-p)).......(princ.(format |
| 5660 | 20 5c 22 25 73 2c 20 25 73 20 28 70 72 6f 76 69 64 65 64 3a 20 25 73 29 5c 22 20 67 72 65 65 74 | .\"%s,.%s.(provided:.%s)\".greet |
| 5680 | 69 6e 67 20 6e 61 6d 65 20 67 72 65 65 74 69 6e 67 2d 70 29 29 29 0a 0a 54 68 65 20 6f 72 69 67 | ing.name.greeting-p)))..The.orig |
| 56a0 | 69 6e 61 6c 20 70 61 74 68 2c 20 71 75 65 72 79 2c 20 61 6e 64 20 72 65 71 75 65 73 74 20 63 61 | inal.path,.query,.and.request.ca |
| 56c0 | 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 62 79 20 74 68 65 0a 61 6e 61 70 68 6f 72 69 63 20 73 | n.be.accessed.by.the.anaphoric.s |
| 56e0 | 70 65 63 69 61 6c 20 76 61 72 69 61 62 6c 65 73 20 60 68 74 74 70 64 2d 70 61 74 68 27 2c 20 60 | pecial.variables.`httpd-path',.` |
| 5700 | 68 74 74 70 64 2d 71 75 65 72 79 27 2c 20 61 6e 64 0a 60 68 74 74 70 64 2d 72 65 71 75 65 73 74 | httpd-query',.and.`httpd-request |
| 5720 | 27 2e 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 29 0a 20 | '."...(declare.(indent.defun)).. |
| 5740 | 20 28 6c 65 74 20 28 28 70 61 74 68 2d 6c 65 78 69 63 61 6c 20 28 63 6c 2d 67 65 6e 73 79 6d 29 | .(let.((path-lexical.(cl-gensym) |
| 5760 | 29 0a 20 20 20 20 20 20 20 20 28 71 75 65 72 79 2d 6c 65 78 69 63 61 6c 20 28 63 6c 2d 67 65 6e | ).........(query-lexical.(cl-gen |
| 5780 | 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 71 75 65 73 74 2d 6c 65 78 69 63 61 6c 20 28 | sym)).........(request-lexical.( |
| 57a0 | 63 6c 2d 67 65 6e 73 79 6d 29 29 29 0a 20 20 20 20 28 63 6c 2d 6d 75 6c 74 69 70 6c 65 2d 76 61 | cl-gensym))).....(cl-multiple-va |
| 57c0 | 6c 75 65 2d 62 69 6e 64 20 28 70 61 74 68 20 76 61 72 73 29 20 28 68 74 74 70 64 2d 70 61 72 73 | lue-bind.(path.vars).(httpd-pars |
| 57e0 | 65 2d 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 60 28 64 65 66 | e-endpoint.endpoint).......`(def |
| 5800 | 73 65 72 76 6c 65 74 20 2c 70 61 74 68 20 2c 6d 69 6d 65 20 28 2c 70 61 74 68 2d 6c 65 78 69 63 | servlet.,path.,mime.(,path-lexic |
| 5820 | 61 6c 20 2c 71 75 65 72 79 2d 6c 65 78 69 63 61 6c 20 2c 72 65 71 75 65 73 74 2d 6c 65 78 69 63 | al.,query-lexical.,request-lexic |
| 5840 | 61 6c 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 74 74 70 64 2d 70 61 74 68 20 2c | al)..........(let.((httpd-path., |
| 5860 | 70 61 74 68 2d 6c 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 | path-lexical)................(ht |
| 5880 | 74 70 64 2d 71 75 65 72 79 20 2c 71 75 65 72 79 2d 6c 65 78 69 63 61 6c 29 0a 20 20 20 20 20 20 | tpd-query.,query-lexical)....... |
| 58a0 | 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 72 65 71 75 65 73 74 20 2c 72 65 71 75 65 73 74 | .........(httpd-request.,request |
| 58c0 | 2d 6c 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 | -lexical)................(httpd- |
| 58e0 | 73 70 6c 69 74 2d 70 61 74 68 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 | split-path.(split-string........ |
| 5900 | 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 73 75 62 73 | ...........................(subs |
| 5920 | 74 72 69 6e 67 20 2c 70 61 74 68 2d 6c 65 78 69 63 61 6c 20 31 29 20 22 2f 22 29 29 29 0a 20 20 | tring.,path-lexical.1)."/")))... |
| 5940 | 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 20 28 76 61 72 | .........(let.,(cl-loop.for.(var |
| 5960 | 20 2e 20 70 6f 73 29 20 69 6e 20 76 61 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...pos).in.vars................. |
| 5980 | 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 78 74 72 61 63 74 20 3d 0a 20 20 20 20 20 20 20 20 | ..........for.extract.=......... |
| 59a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 68 74 74 70 64 2d 75 6e 68 65 78 20 | ..................`(httpd-unhex. |
| 59c0 | 28 6e 74 68 20 2c 70 6f 73 20 68 74 74 70 64 2d 73 70 6c 69 74 2d 70 61 74 68 29 29 0a 20 20 20 | (nth.,pos.httpd-split-path)).... |
| 59e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 | .......................collect.( |
| 5a00 | 6c 69 73 74 20 76 61 72 20 65 78 74 72 61 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | list.var.extract)).............. |
| 5a20 | 28 6c 65 74 20 2c 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 61 72 67 20 69 6e 20 61 72 67 73 0a 20 | (let.,(cl-loop.for.arg.in.args.. |
| 5a40 | 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 66 6f 72 20 68 | ...........................for.h |
| 5a60 | 61 73 2d 64 65 66 61 75 6c 74 20 3d 20 28 6c 69 73 74 70 20 61 72 67 29 0a 20 20 20 20 20 20 20 | as-default.=.(listp.arg)........ |
| 5a80 | 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 68 61 73 2d 64 65 66 | .....................for.has-def |
| 5aa0 | 61 75 6c 74 2d 70 20 3d 20 28 61 6e 64 20 68 61 73 2d 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 | ault-p.=.(and.has-default....... |
| 5ac0 | 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 | ................................ |
| 5ae0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d 20 33 20 28 6c 65 6e 67 74 68 20 61 72 67 29 | ...............(=.3.(length.arg) |
| 5b00 | 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 20 20 20 66 | )).............................f |
| 5b20 | 6f 72 20 61 72 67 2d 6e 61 6d 65 20 3d 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 0a 20 20 20 20 20 | or.arg-name.=.(symbol-name...... |
| 5b40 | 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 | ................................ |
| 5b60 | 20 20 20 20 20 20 20 28 69 66 20 68 61 73 2d 64 65 66 61 75 6c 74 20 28 63 6c 2d 66 69 72 73 74 | .......(if.has-default.(cl-first |
| 5b80 | 20 61 72 67 29 20 61 72 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .arg).arg))..................... |
| 5ba0 | 20 20 20 20 20 20 20 20 77 68 65 6e 20 68 61 73 2d 64 65 66 61 75 6c 74 20 63 6f 6c 6c 65 63 74 | ........when.has-default.collect |
| 5bc0 | 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 20 28 6c 69 | .............................(li |
| 5be0 | 73 74 20 28 63 6c 2d 66 69 72 73 74 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | st.(cl-first.arg)............... |
| 5c00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6c 65 74 20 28 28 76 61 6c 75 | ....................`(let.((valu |
| 5c20 | 65 20 28 61 73 73 6f 63 20 2c 61 72 67 2d 6e 61 6d 65 20 68 74 74 70 64 2d 71 75 65 72 79 29 29 | e.(assoc.,arg-name.httpd-query)) |
| 5c40 | 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 20 20 20 | )............................... |
| 5c60 | 20 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......(if.value................ |
| 5c80 | 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 63 6c 2d 73 65 | ..........................(cl-se |
| 5ca0 | 63 6f 6e 64 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 20 20 20 | cond.value)..................... |
| 5cc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 28 63 6c 2d 73 65 63 6f 6e 64 20 61 | ...................,(cl-second.a |
| 5ce0 | 72 67 29 29 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 | rg)))).......................... |
| 5d00 | 20 20 20 65 6c 73 65 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 | ...else.collect................. |
| 5d20 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 61 72 67 20 60 28 63 6c 2d 73 65 63 6f 6e | ............(list.arg.`(cl-secon |
| 5d40 | 64 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 20 20 20 | d............................... |
| 5d60 | 20 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 20 2c 61 72 67 2d 6e 61 6d 65 20 68 74 74 70 64 | ..........(assoc.,arg-name.httpd |
| 5d80 | 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 20 20 20 20 20 20 | -query)))....................... |
| 5da0 | 20 20 20 20 20 20 77 68 65 6e 20 68 61 73 2d 64 65 66 61 75 6c 74 2d 70 20 63 6f 6c 6c 65 63 74 | ......when.has-default-p.collect |
| 5dc0 | 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 20 28 6c 69 | .............................(li |
| 5de0 | 73 74 20 28 63 6c 2d 74 68 69 72 64 20 61 72 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | st.(cl-third.arg)............... |
| 5e00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6e 6f 74 20 28 6e 75 6c 6c 20 | ....................`(not.(null. |
| 5e20 | 28 61 73 73 6f 63 20 2c 61 72 67 2d 6e 61 6d 65 20 68 74 74 70 64 2d 71 75 65 72 79 29 29 29 29 | (assoc.,arg-name.httpd-query)))) |
| 5e40 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 29 29 29 29 0a 0a | )................,@body))))))).. |
| 5e60 | 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 61 64 64 2d 6b 65 79 77 6f 72 64 73 0a 20 27 65 6d 61 63 73 2d | (font-lock-add-keywords..'emacs- |
| 5e80 | 6c 69 73 70 2d 6d 6f 64 65 0a 20 27 28 28 22 28 5c 5c 3c 5c 5c 28 64 65 66 73 65 72 76 6c 65 74 | lisp-mode..'(("(\\<\\(defservlet |
| 5ea0 | 5c 5c 2a 3f 5c 5c 29 5c 5c 3e 20 2b 5c 5c 28 5b 5e 20 28 29 5d 2b 5c 5c 29 20 2b 5c 5c 28 5b 5e | \\*?\\)\\>.+\\([^.()]+\\).+\\([^ |
| 5ec0 | 20 28 29 5d 2b 5c 5c 29 22 0a 20 20 20 20 28 31 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 | .()]+\\)".....(1.'font-lock-keyw |
| 5ee0 | 6f 72 64 2d 66 61 63 65 29 0a 20 20 20 20 28 32 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 75 6e 63 | ord-face).....(2.'font-lock-func |
| 5f00 | 74 69 6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 29 0a 20 20 20 20 28 33 20 27 66 6f 6e 74 2d 6c 6f 63 | tion-name-face).....(3.'font-loc |
| 5f20 | 6b 2d 74 79 70 65 2d 66 61 63 65 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 68 74 74 70 64 | k-type-face))))..(defmacro.httpd |
| 5f40 | 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 74 20 28 6e 61 6d 65 20 72 6f 6f 74 29 0a 20 20 | -def-file-servlet.(name.root)... |
| 5f60 | 22 44 65 66 69 6e 65 73 20 61 20 73 65 72 76 6c 65 74 20 74 68 61 74 20 73 65 72 76 65 73 20 66 | "Defines.a.servlet.that.serves.f |
| 5f80 | 69 6c 65 73 20 66 72 6f 6d 20 52 4f 4f 54 20 75 6e 64 65 72 20 74 68 65 20 72 6f 75 74 65 20 4e | iles.from.ROOT.under.the.route.N |
| 5fa0 | 41 4d 45 2e 0a 0a 20 20 20 20 28 68 74 74 70 64 2d 64 65 66 2d 66 69 6c 65 2d 73 65 72 76 6c 65 | AME.......(httpd-def-file-servle |
| 5fc0 | 74 20 6d 79 2f 77 77 77 20 5c 22 2f 76 61 72 2f 77 77 77 2f 5c 22 29 0a 0a 41 75 74 6f 6d 61 74 | t.my/www.\"/var/www/\")..Automat |
| 5fe0 | 69 63 61 6c 6c 79 20 68 61 6e 64 6c 65 73 20 72 65 64 69 72 65 63 74 73 20 61 6e 64 20 75 73 65 | ically.handles.redirects.and.use |
| 6000 | 73 20 60 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f 74 27 20 74 6f 0a 61 63 74 75 61 6c 6c 79 | s.`httpd-serve-root'.to.actually |
| 6020 | 20 73 65 72 76 65 20 75 70 20 66 69 6c 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 68 6f 72 | .serve.up.files."...(let*.((shor |
| 6040 | 74 2d 72 6f 6f 74 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 73 79 6d | t-root.(directory-file-name.(sym |
| 6060 | 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 74 68 2d | bol-name.name)))..........(path- |
| 6080 | 72 6f 6f 74 20 28 63 6f 6e 63 61 74 20 73 68 6f 72 74 2d 72 6f 6f 74 20 22 2f 22 29 29 0a 20 20 | root.(concat.short-root."/"))... |
| 60a0 | 20 20 20 20 20 20 20 28 63 68 6f 70 20 28 6c 65 6e 67 74 68 20 70 61 74 68 2d 72 6f 6f 74 29 29 | .......(chop.(length.path-root)) |
| 60c0 | 29 0a 20 20 20 20 60 28 64 65 66 73 65 72 76 6c 65 74 20 2c 6e 61 6d 65 20 6e 69 6c 20 28 75 72 | ).....`(defservlet.,name.nil.(ur |
| 60e0 | 69 2d 70 61 74 68 20 71 75 65 72 79 20 72 65 71 75 65 73 74 29 0a 20 20 20 20 20 20 20 28 73 65 | i-path.query.request)........(se |
| 6100 | 74 66 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 2d 73 65 6e 74 20 74 29 20 3b 20 44 6f 6e 27 74 | tf.httpd--header-sent.t).;.Don't |
| 6120 | 20 61 63 74 75 61 6c 6c 79 20 75 73 65 20 74 68 69 73 20 74 65 6d 70 20 62 75 66 66 65 72 0a 20 | .actually.use.this.temp.buffer.. |
| 6140 | 20 20 20 20 20 20 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 75 72 69 2d 70 61 74 68 29 20 2c | ......(if.(=.(length.uri-path)., |
| 6160 | 63 68 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 72 65 64 69 72 65 63 74 | chop)............(httpd-redirect |
| 6180 | 20 74 20 2c 70 61 74 68 2d 72 6f 6f 74 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 | .t.,path-root)..........(let.((p |
| 61a0 | 61 74 68 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 2d 70 61 74 68 20 2c 63 68 6f 70 29 29 29 | ath.(substring.uri-path.,chop))) |
| 61c0 | 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f 74 20 74 20 | ............(httpd-serve-root.t. |
| 61e0 | 2c 72 6f 6f 74 20 70 61 74 68 20 72 65 71 75 65 73 74 29 29 29 29 29 29 0a 0a 3b 3b 20 52 65 71 | ,root.path.request))))))..;;.Req |
| 6200 | 75 65 73 74 20 70 61 72 73 69 6e 67 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 6e 6f 72 6d | uest.parsing..(defun.httpd--norm |
| 6220 | 61 6c 69 7a 65 2d 68 65 61 64 65 72 20 28 68 65 61 64 65 72 29 0a 20 20 22 44 65 73 74 72 75 63 | alize-header.(header)..."Destruc |
| 6240 | 74 69 76 65 6c 79 20 63 61 70 69 74 61 6c 69 7a 65 20 74 68 65 20 63 6f 6d 70 6f 6e 65 6e 74 73 | tively.capitalize.the.components |
| 6260 | 20 6f 66 20 48 45 41 44 45 52 2e 22 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 63 61 70 69 | .of.HEADER."...(mapconcat.#'capi |
| 6280 | 74 61 6c 69 7a 65 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 68 65 61 64 65 72 20 22 2d 22 29 | talize.(split-string.header."-") |
| 62a0 | 20 22 2d 22 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 70 61 72 73 65 20 28 29 0a 20 20 | ."-"))..(defun.httpd-parse.()... |
| 62c0 | 22 50 61 72 73 65 20 48 54 54 50 20 68 65 61 64 65 72 20 69 6e 20 63 75 72 72 65 6e 74 20 62 75 | "Parse.HTTP.header.in.current.bu |
| 62e0 | 66 66 65 72 20 69 6e 74 6f 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 2e 0a 4c 65 61 76 | ffer.into.association.list..Leav |
| 6300 | 65 73 20 74 68 65 20 70 6f 69 6e 74 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 | es.the.point.at.the.start.of.the |
| 6320 | 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 6e 74 2e 20 52 65 74 75 72 6e 73 20 6e 69 6c 0a 69 66 | .request.content..Returns.nil.if |
| 6340 | 20 69 74 20 66 61 69 6c 65 64 20 74 6f 20 70 61 72 73 65 20 61 20 63 6f 6d 70 6c 65 74 65 20 48 | .it.failed.to.parse.a.complete.H |
| 6360 | 54 54 50 20 68 65 61 64 65 72 2e 22 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 | TTP.header."...(goto-char.(point |
| 6380 | 2d 6d 69 6e 29 29 0a 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 5b | -min))...(when.(looking-at."\\([ |
| 63a0 | 5e 20 5d 2b 5c 5c 29 20 2b 5c 5c 28 5b 5e 20 5d 2b 5c 5c 29 20 2b 5c 5c 28 5b 5e 5c 72 5d 2b 5c | ^.]+\\).+\\([^.]+\\).+\\([^\r]+\ |
| 63c0 | 5c 29 5c 72 5c 6e 22 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64 20 28 6d 61 74 63 | \)\r\n").....(let.((method.(matc |
| 63e0 | 68 2d 73 74 72 69 6e 67 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 64 65 | h-string.1))...........(path.(de |
| 6400 | 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 | code-coding-string.(match-string |
| 6420 | 20 32 29 20 27 69 73 6f 2d 38 38 35 39 2d 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 76 65 72 | .2).'iso-8859-1))...........(ver |
| 6440 | 73 69 6f 6e 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 33 29 29 0a 20 20 20 20 20 20 20 20 20 | sion.(match-string.3)).......... |
| 6460 | 20 28 68 65 61 64 65 72 73 20 28 29 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 | .(headers.())).......(goto-char. |
| 6480 | 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6c 6f 6f | (match-end.0)).......(while.(loo |
| 64a0 | 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 5b 2d 21 23 2d 27 2a 2b 2e 30 2d 39 41 2d 5a 5e 5f 60 61 2d | king-at."\\([-!#-'*+.0-9A-Z^_`a- |
| 64c0 | 7a 7c 7e 5d 2b 5c 5c 29 3a 20 2a 5c 5c 28 5b 5e 5c 72 5d 2b 5c 5c 29 5c 72 5c 6e 22 29 0a 20 20 | z|~]+\\):.*\\([^\r]+\\)\r\n")... |
| 64e0 | 20 20 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 | ......(goto-char.(match-end.0)). |
| 6500 | 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e | ........(let.((name.(match-strin |
| 6520 | 67 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 6d 61 74 63 | g.1))...............(value.(matc |
| 6540 | 68 2d 73 74 72 69 6e 67 20 32 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 6c | h-string.2)))...........(push.(l |
| 6560 | 69 73 74 20 28 68 74 74 70 64 2d 2d 6e 6f 72 6d 61 6c 69 7a 65 2d 68 65 61 64 65 72 20 6e 61 6d | ist.(httpd--normalize-header.nam |
| 6580 | 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 63 6f 64 65 | e).......................(decode |
| 65a0 | 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 76 61 6c 75 65 20 27 69 73 6f 2d 38 38 35 39 2d 31 | -coding-string.value.'iso-8859-1 |
| 65c0 | 29 29 20 68 65 61 64 65 72 73 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 | )).headers))).......(when.(looki |
| 65e0 | 6e 67 2d 61 74 20 22 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 | ng-at."\r\n").........(goto-char |
| 6600 | 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6c | .(match-end.0)).........(cons.(l |
| 6620 | 69 73 74 20 6d 65 74 68 6f 64 20 70 61 74 68 20 76 65 72 73 69 6f 6e 29 20 28 6e 72 65 76 65 72 | ist.method.path.version).(nrever |
| 6640 | 73 65 20 68 65 61 64 65 72 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 75 | se.headers))))))..(defun.httpd-u |
| 6660 | 6e 68 65 78 20 28 73 74 72 29 0a 20 20 22 46 75 6c 6c 79 20 64 65 63 6f 64 65 20 74 68 65 20 55 | nhex.(str)..."Fully.decode.the.U |
| 6680 | 52 4c 20 65 6e 63 6f 64 69 6e 67 20 69 6e 20 53 54 52 20 28 69 6e 63 6c 75 64 69 6e 67 20 2b 27 | RL.encoding.in.STR.(including.+' |
| 66a0 | 73 29 2e 22 0a 20 20 28 77 68 65 6e 20 73 74 72 0a 20 20 20 20 28 6c 65 74 20 28 28 6e 6f 6e 70 | s)."...(when.str.....(let.((nonp |
| 66c0 | 6c 75 73 73 65 64 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 | lussed.(replace-regexp-in-string |
| 66e0 | 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 22 2b 22 29 20 22 20 22 20 73 74 72 29 29 29 0a 20 | .(regexp-quote."+").".".str))).. |
| 6700 | 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 28 75 72 6c 2d | .....(decode-coding-string.(url- |
| 6720 | 75 6e 68 65 78 2d 73 74 72 69 6e 67 20 6e 6f 6e 70 6c 75 73 73 65 64 20 74 29 20 27 75 74 66 2d | unhex-string.nonplussed.t).'utf- |
| 6740 | 38 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 61 72 67 73 20 28 | 8))))..(defun.httpd-parse-args.( |
| 6760 | 61 72 67 73 74 72 29 0a 20 20 22 50 61 72 73 65 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 | argstr)..."Parse.a.string.contai |
| 6780 | 6e 69 6e 67 20 55 52 4c 20 65 6e 63 6f 64 65 64 20 61 72 67 75 6d 65 6e 74 73 2e 22 0a 20 20 28 | ning.URL.encoded.arguments."...( |
| 67a0 | 75 6e 6c 65 73 73 20 28 7a 65 72 6f 70 20 28 6c 65 6e 67 74 68 20 61 72 67 73 74 72 29 29 0a 20 | unless.(zerop.(length.argstr)).. |
| 67c0 | 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 74 72 29 0a 20 20 20 20 20 20 20 | ...(mapcar.(lambda.(str)........ |
| 67e0 | 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 27 68 74 74 70 64 2d 75 6e 68 65 78 20 28 73 70 6c | .......(mapcar.'httpd-unhex.(spl |
| 6800 | 69 74 2d 73 74 72 69 6e 67 20 73 74 72 20 22 3d 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | it-string.str."=")))............ |
| 6820 | 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 61 72 67 73 74 72 20 22 26 22 29 29 29 29 0a 0a 28 | .(split-string.argstr."&"))))..( |
| 6840 | 64 65 66 75 6e 20 68 74 74 70 64 2d 70 61 72 73 65 2d 75 72 69 20 28 75 72 69 29 0a 20 20 22 53 | defun.httpd-parse-uri.(uri)..."S |
| 6860 | 70 6c 69 74 20 61 20 55 52 49 20 69 6e 74 6f 20 69 74 73 20 63 6f 6d 70 6f 6e 65 6e 74 73 2e 0a | plit.a.URI.into.its.components.. |
| 6880 | 54 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 72 65 74 75 72 6e 20 | The.first.element.of.the.return. |
| 68a0 | 76 61 6c 75 65 20 69 73 20 74 68 65 20 73 63 72 69 70 74 20 70 61 74 68 2c 20 74 68 65 0a 73 65 | value.is.the.script.path,.the.se |
| 68c0 | 63 6f 6e 64 20 65 6c 65 6d 65 6e 74 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 76 61 72 69 | cond.element.is.an.alist.of.vari |
| 68e0 | 61 62 6c 65 2f 76 61 6c 75 65 20 70 61 69 72 73 2c 20 61 6e 64 20 74 68 65 20 74 68 69 72 64 0a | able/value.pairs,.and.the.third. |
| 6900 | 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 66 72 61 67 6d 65 6e 74 2e 22 0a 20 20 28 6c 65 74 | element.is.the.fragment."...(let |
| 6920 | 20 28 28 70 31 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 74 | .((p1.(string-match.(regexp-quot |
| 6940 | 65 20 22 3f 22 29 20 75 72 69 29 29 0a 20 20 20 20 20 20 20 20 28 70 32 20 28 73 74 72 69 6e 67 | e."?").uri)).........(p2.(string |
| 6960 | 2d 6d 61 74 63 68 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 22 23 22 29 20 75 72 69 29 29 0a | -match.(regexp-quote."#").uri)). |
| 6980 | 20 20 20 20 20 20 20 20 72 65 74 76 61 6c 29 0a 20 20 20 20 28 70 75 73 68 20 28 69 66 20 70 32 | ........retval).....(push.(if.p2 |
| 69a0 | 20 28 68 74 74 70 64 2d 75 6e 68 65 78 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 20 28 31 2b | .(httpd-unhex.(substring.uri.(1+ |
| 69c0 | 20 70 32 29 29 29 29 20 72 65 74 76 61 6c 29 0a 20 20 20 20 28 70 75 73 68 20 28 69 66 20 70 31 | .p2)))).retval).....(push.(if.p1 |
| 69e0 | 20 28 68 74 74 70 64 2d 70 61 72 73 65 2d 61 72 67 73 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 | .(httpd-parse-args.(substring.ur |
| 6a00 | 69 20 28 31 2b 20 70 31 29 20 70 32 29 29 29 20 72 65 74 76 61 6c 29 0a 20 20 20 20 28 70 75 73 | i.(1+.p1).p2))).retval).....(pus |
| 6a20 | 68 20 28 73 75 62 73 74 72 69 6e 67 20 75 72 69 20 30 20 28 6f 72 20 70 31 20 70 32 29 29 20 72 | h.(substring.uri.0.(or.p1.p2)).r |
| 6a40 | 65 74 76 61 6c 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 | etval)))..(defun.httpd-escape-ht |
| 6a60 | 6d 6c 2d 62 75 66 66 65 72 20 28 29 0a 20 20 22 45 73 63 61 70 65 20 63 75 72 72 65 6e 74 20 62 | ml-buffer.()..."Escape.current.b |
| 6a80 | 75 66 66 65 72 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 62 65 20 73 61 66 65 20 66 6f 72 20 69 6e | uffer.contents.to.be.safe.for.in |
| 6aa0 | 73 65 72 74 69 6e 67 20 69 6e 74 6f 20 48 54 4d 4c 2e 22 0a 20 20 28 67 6f 74 6f 2d 63 68 61 72 | serting.into.HTML."...(goto-char |
| 6ac0 | 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 28 77 68 69 6c 65 20 28 73 65 61 72 63 68 2d 66 | .(point-min))...(while.(search-f |
| 6ae0 | 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5b 3c 3e 26 5d 22 20 6e 69 6c 20 74 29 0a 20 20 20 | orward-regexp."[<>&]".nil.t).... |
| 6b00 | 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 0a 20 20 20 20 20 28 63 6c 2d 63 61 73 65 20 28 61 | .(replace-match......(cl-case.(a |
| 6b20 | 72 65 66 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 20 30 29 0a 20 20 20 20 20 20 20 28 | ref.(match-string.0).0)........( |
| 6b40 | 3f 3c 20 22 26 6c 74 3b 22 29 0a 20 20 20 20 20 20 20 28 3f 3e 20 22 26 67 74 3b 22 29 0a 20 20 | ?<."<")........(?>.">")... |
| 6b60 | 20 20 20 20 20 28 3f 26 20 22 26 61 6d 70 3b 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 | .....(?&."&")))))..(defun.ht |
| 6b80 | 74 70 64 2d 65 73 63 61 70 65 2d 68 74 6d 6c 20 28 73 74 72 69 6e 67 29 0a 20 20 22 45 73 63 61 | tpd-escape-html.(string)..."Esca |
| 6ba0 | 70 65 20 53 54 52 49 4e 47 20 73 6f 20 74 68 61 74 20 69 74 27 73 20 73 61 66 65 20 74 6f 20 69 | pe.STRING.so.that.it's.safe.to.i |
| 6bc0 | 6e 73 65 72 74 20 69 6e 74 6f 20 61 6e 20 48 54 4d 4c 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20 | nsert.into.an.HTML.document."... |
| 6be0 | 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 | (with-temp-buffer.....(insert.st |
| 6c00 | 72 69 6e 67 29 0a 20 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 | ring).....(httpd-escape-html-buf |
| 6c20 | 66 65 72 29 0a 20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 3b 3b 20 50 | fer).....(buffer-string)))..;;.P |
| 6c40 | 61 74 68 20 68 61 6e 64 6c 69 6e 67 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 74 61 74 75 | ath.handling..(defun.httpd-statu |
| 6c60 | 73 20 28 70 61 74 68 29 0a 20 20 22 44 65 74 65 72 6d 69 6e 65 20 73 74 61 74 75 73 20 63 6f 64 | s.(path)..."Determine.status.cod |
| 6c80 | 65 20 66 6f 72 20 50 41 54 48 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 6e 6f 74 20 28 66 | e.for.PATH."...(cond....((not.(f |
| 6ca0 | 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 70 61 74 68 29 29 20 20 20 34 30 34 29 0a 20 20 20 28 28 | ile-exists-p.path))...404)....(( |
| 6cc0 | 6e 6f 74 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 70 61 74 68 29 29 20 34 30 33 29 | not.(file-readable-p.path)).403) |
| 6ce0 | 0a 20 20 20 28 28 61 6e 64 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 70 61 74 68 | ....((and.(file-directory-p.path |
| 6d00 | 29 20 28 6e 6f 74 20 68 74 74 70 64 2d 6c 69 73 74 69 6e 67 73 29 29 20 34 30 33 29 0a 20 20 20 | ).(not.httpd-listings)).403).... |
| 6d20 | 28 32 30 30 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 63 6c 65 61 6e 2d 70 61 74 68 | (200)))..(defun.httpd-clean-path |
| 6d40 | 20 28 70 61 74 68 29 0a 20 20 22 43 6c 65 61 6e 20 64 61 6e 67 65 72 6f 75 73 20 2e 2e 20 66 72 | .(path)..."Clean.dangerous....fr |
| 6d60 | 6f 6d 20 50 41 54 48 20 61 6e 64 20 72 65 6d 6f 76 65 20 74 68 65 20 6c 65 61 64 69 6e 67 20 73 | om.PATH.and.remove.the.leading.s |
| 6d80 | 6c 61 73 68 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 65 70 20 28 69 66 20 28 6d 65 6d 62 65 72 | lash."...(let*.((sep.(if.(member |
| 6da0 | 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 20 6d 73 2d 64 6f 73 | .system-type.'(windows-nt.ms-dos |
| 6dc0 | 29 29 20 22 5b 2f 5c 5c 5d 22 20 22 2f 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 | ))."[/\\]"."/"))..........(split |
| 6de0 | 20 28 64 65 6c 65 74 65 20 22 2e 2e 22 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 70 61 74 68 | .(delete."..".(split-string.path |
| 6e00 | 20 73 65 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 73 70 6c 69 74 20 28 6d 61 70 63 6f | .sep)))..........(unsplit.(mapco |
| 6e20 | 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 28 64 65 6c 65 74 65 20 22 22 20 73 70 6c 69 74 29 | ncat.'identity.(delete."".split) |
| 6e40 | 20 22 2f 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 22 2e 2f 22 20 75 6e 73 70 6c 69 74 | ."/"))).....(concat."./".unsplit |
| 6e60 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 67 65 6e 2d 70 61 74 68 20 28 70 61 74 68 | )))..(defun.httpd-gen-path.(path |
| 6e80 | 20 26 6f 70 74 69 6f 6e 61 6c 20 72 6f 6f 74 29 0a 20 20 22 54 72 61 6e 73 6c 61 74 65 20 47 45 | .&optional.root)..."Translate.GE |
| 6ea0 | 54 20 74 6f 20 73 65 63 75 72 65 20 70 61 74 68 20 69 6e 20 52 4f 4f 54 20 28 60 68 74 74 70 64 | T.to.secure.path.in.ROOT.(`httpd |
| 6ec0 | 2d 72 6f 6f 74 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 63 6c 65 61 6e 20 28 65 78 70 61 6e 64 | -root')."...(let.((clean.(expand |
| 6ee0 | 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 68 74 74 70 64 2d 63 6c 65 61 6e 2d 70 61 74 68 20 70 61 74 | -file-name.(httpd-clean-path.pat |
| 6f00 | 68 29 20 28 6f 72 20 72 6f 6f 74 20 68 74 74 70 64 2d 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 28 | h).(or.root.httpd-root)))).....( |
| 6f20 | 69 66 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 63 6c 65 61 6e 29 0a 20 20 20 20 | if.(file-directory-p.clean)..... |
| 6f40 | 20 20 20 20 28 6c 65 74 2a 20 28 28 64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 61 73 2d 64 69 | ....(let*.((dir.(file-name-as-di |
| 6f60 | 72 65 63 74 6f 72 79 20 63 6c 65 61 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | rectory.clean))................( |
| 6f80 | 69 6e 64 65 78 65 73 20 28 63 6c 2d 6d 61 70 63 61 72 20 28 61 70 70 6c 79 2d 70 61 72 74 69 61 | indexes.(cl-mapcar.(apply-partia |
| 6fa0 | 6c 6c 79 20 27 63 6f 6e 63 61 74 20 64 69 72 29 20 68 74 74 70 64 2d 69 6e 64 65 78 65 73 29 29 | lly.'concat.dir).httpd-indexes)) |
| 6fc0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 78 69 73 74 69 6e 67 20 28 63 6c 2d 72 65 | ................(existing.(cl-re |
| 6fe0 | 6d 6f 76 65 2d 69 66 2d 6e 6f 74 20 27 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 69 6e 64 65 78 | move-if-not.'file-exists-p.index |
| 7000 | 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 72 20 65 78 69 73 74 69 6e | es)))...........(or.(car.existin |
| 7020 | 67 29 20 64 69 72 29 29 0a 20 20 20 20 20 20 63 6c 65 61 6e 29 29 29 0a 0a 28 64 65 66 75 6e 20 | g).dir)).......clean)))..(defun. |
| 7040 | 68 74 74 70 64 2d 67 65 74 2d 73 65 72 76 6c 65 74 20 28 75 72 69 2d 70 61 74 68 29 0a 20 20 22 | httpd-get-servlet.(uri-path)..." |
| 7060 | 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 65 72 76 6c 65 74 20 74 6f 20 62 65 20 65 78 65 63 | Determine.the.servlet.to.be.exec |
| 7080 | 75 74 65 64 20 66 6f 72 20 55 52 49 2d 50 41 54 48 2e 22 0a 20 20 28 69 66 20 28 6e 6f 74 20 68 | uted.for.URI-PATH."...(if.(not.h |
| 70a0 | 74 74 70 64 2d 73 65 72 76 6c 65 74 73 29 0a 20 20 20 20 20 20 27 68 74 74 70 64 2f 0a 20 20 20 | ttpd-servlets).......'httpd/.... |
| 70c0 | 20 28 63 6c 2d 6c 61 62 65 6c 73 20 28 28 63 61 74 20 28 78 29 0a 20 20 20 20 20 20 20 20 20 20 | .(cl-labels.((cat.(x)........... |
| 70e0 | 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 68 74 74 70 64 2f 22 20 28 6d 61 70 63 6f 6e | ........(concat."httpd/".(mapcon |
| 7100 | 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 28 72 65 76 65 72 73 65 20 78 29 20 22 2f 22 29 29 29 | cat.'identity.(reverse.x)."/"))) |
| 7120 | 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 72 74 73 20 28 63 64 72 20 28 73 70 6c 69 74 | ).......(let.((parts.(cdr.(split |
| 7140 | 2d 73 74 72 69 6e 67 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 2d 6e 61 6d 65 20 75 72 69 | -string.(directory-file-name.uri |
| 7160 | 2d 70 61 74 68 29 20 22 2f 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 | -path)."/")))).........(or...... |
| 7180 | 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 66 20 27 66 62 6f 75 6e 64 70 20 28 6d 61 70 63 61 72 | ....(cl-find-if.'fboundp.(mapcar |
| 71a0 | 20 27 69 6e 74 65 72 6e 2d 73 6f 66 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .'intern-soft................... |
| 71c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6d 61 70 6c 69 73 74 20 | ....................(cl-maplist. |
| 71e0 | 23 27 63 61 74 20 28 72 65 76 65 72 73 65 20 70 61 72 74 73 29 29 29 29 0a 20 20 20 20 20 20 20 | #'cat.(reverse.parts))))........ |
| 7200 | 20 20 27 68 74 74 70 64 2f 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 65 72 | ..'httpd/)))))..(defun.httpd-ser |
| 7220 | 76 65 2d 72 6f 6f 74 20 28 70 72 6f 63 20 72 6f 6f 74 20 75 72 69 2d 70 61 74 68 20 26 6f 70 74 | ve-root.(proc.root.uri-path.&opt |
| 7240 | 69 6f 6e 61 6c 20 72 65 71 75 65 73 74 29 0a 20 20 22 53 65 63 75 72 65 6c 79 20 73 65 72 76 65 | ional.request)..."Securely.serve |
| 7260 | 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 52 4f 4f 54 20 66 72 6f 6d 20 75 6e 64 65 72 20 50 41 54 | .a.file.from.ROOT.from.under.PAT |
| 7280 | 48 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 61 74 68 20 28 68 74 74 70 64 2d 67 65 6e 2d 70 61 | H."...(let*.((path.(httpd-gen-pa |
| 72a0 | 74 68 20 75 72 69 2d 70 61 74 68 20 72 6f 6f 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 | th.uri-path.root))..........(sta |
| 72c0 | 74 75 73 20 28 68 74 74 70 64 2d 73 74 61 74 75 73 20 70 61 74 68 29 29 29 0a 20 20 20 20 28 63 | tus.(httpd-status.path))).....(c |
| 72e0 | 6f 6e 64 0a 20 20 20 20 20 28 28 6e 6f 74 20 28 3d 20 73 74 61 74 75 73 20 32 30 30 29 29 20 20 | ond......((not.(=.status.200)).. |
| 7300 | 20 20 28 68 74 74 70 64 2d 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 20 73 74 61 | ..(httpd-error..........proc.sta |
| 7320 | 74 75 73 29 29 0a 20 20 20 20 20 28 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 70 61 | tus))......((file-directory-p.pa |
| 7340 | 74 68 29 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 64 69 72 65 63 74 6f 72 79 20 70 72 6f 63 20 70 | th).(httpd-send-directory.proc.p |
| 7360 | 61 74 68 20 75 72 69 2d 70 61 74 68 29 29 0a 20 20 20 20 20 28 74 20 20 20 20 20 20 20 20 20 20 | ath.uri-path))......(t.......... |
| 7380 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 66 69 6c 65 20 20 20 | .............(httpd-send-file... |
| 73a0 | 20 20 20 70 72 6f 63 20 70 61 74 68 20 72 65 71 75 65 73 74 29 29 29 29 29 0a 0a 28 64 65 66 75 | ...proc.path.request)))))..(defu |
| 73c0 | 6e 20 68 74 74 70 64 2f 20 28 70 72 6f 63 20 75 72 69 2d 70 61 74 68 20 71 75 65 72 79 20 72 65 | n.httpd/.(proc.uri-path.query.re |
| 73e0 | 71 75 65 73 74 29 0a 20 20 22 44 65 66 61 75 6c 74 20 72 6f 6f 74 20 73 65 72 76 6c 65 74 20 77 | quest)..."Default.root.servlet.w |
| 7400 | 68 69 63 68 20 73 65 72 76 65 73 20 66 69 6c 65 73 20 77 68 65 6e 20 68 74 74 70 64 2d 73 65 72 | hich.serves.files.when.httpd-ser |
| 7420 | 76 65 2d 66 69 6c 65 73 20 69 73 20 54 2e 22 0a 20 20 28 69 66 20 28 61 6e 64 20 68 74 74 70 64 | ve-files.is.T."...(if.(and.httpd |
| 7440 | 2d 73 65 72 76 65 2d 66 69 6c 65 73 20 68 74 74 70 64 2d 72 6f 6f 74 29 0a 20 20 20 20 20 20 28 | -serve-files.httpd-root).......( |
| 7460 | 68 74 74 70 64 2d 73 65 72 76 65 2d 72 6f 6f 74 20 70 72 6f 63 20 68 74 74 70 64 2d 72 6f 6f 74 | httpd-serve-root.proc.httpd-root |
| 7480 | 20 75 72 69 2d 70 61 74 68 20 72 65 71 75 65 73 74 29 0a 20 20 20 20 28 68 74 74 70 64 2d 65 72 | .uri-path.request).....(httpd-er |
| 74a0 | 72 6f 72 20 70 72 6f 63 20 34 30 33 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 67 65 | ror.proc.403)))..(defun.httpd-ge |
| 74c0 | 74 2d 6d 69 6d 65 20 28 65 78 74 29 0a 20 20 22 46 65 74 63 68 20 4d 49 4d 45 20 74 79 70 65 20 | t-mime.(ext)..."Fetch.MIME.type. |
| 74e0 | 67 69 76 65 6e 20 74 68 65 20 66 69 6c 65 20 65 78 74 65 6e 74 69 6f 6e 2e 22 0a 20 20 28 6f 72 | given.the.file.extention."...(or |
| 7500 | 20 28 61 6e 64 20 65 78 74 20 28 63 64 72 20 28 61 73 73 6f 63 20 28 64 6f 77 6e 63 61 73 65 20 | .(and.ext.(cdr.(assoc.(downcase. |
| 7520 | 65 78 74 29 20 68 74 74 70 64 2d 6d 69 6d 65 2d 74 79 70 65 73 29 29 29 0a 20 20 20 20 20 20 22 | ext).httpd-mime-types)))......." |
| 7540 | 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 22 29 29 0a 0a 3b 3b 20 | application/octet-stream"))..;;. |
| 7560 | 44 61 74 61 20 73 65 6e 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 68 | Data.sending.functions..(defun.h |
| 7580 | 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 28 70 72 6f 63 20 6d 69 6d 65 20 73 74 61 74 | ttpd-send-header.(proc.mime.stat |
| 75a0 | 75 73 20 26 72 65 73 74 20 68 65 61 64 65 72 2d 6b 65 79 73 29 0a 20 20 22 53 65 6e 64 20 61 6e | us.&rest.header-keys)..."Send.an |
| 75c0 | 20 48 54 54 50 20 68 65 61 64 65 72 20 77 69 74 68 20 67 69 76 65 6e 20 4d 49 4d 45 20 74 79 70 | .HTTP.header.with.given.MIME.typ |
| 75e0 | 65 20 61 6e 64 20 53 54 41 54 55 53 2c 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 63 75 | e.and.STATUS,.followed.by.the.cu |
| 7600 | 72 72 65 6e 74 20 62 75 66 66 65 72 2e 20 49 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 | rrent.buffer..If.PROC.is.T.use.t |
| 7620 | 68 65 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 0a 61 73 20 74 68 65 20 70 | he.`httpd-current-proc'.as.the.p |
| 7640 | 72 6f 63 65 73 73 2e 0a 0a 45 78 74 72 61 20 68 65 61 64 65 72 73 20 63 61 6e 20 62 65 20 73 65 | rocess...Extra.headers.can.be.se |
| 7660 | 6e 74 20 62 79 20 73 75 70 70 6c 79 69 6e 67 20 74 68 65 6d 20 6c 69 6b 65 20 6b 65 79 77 6f 72 | nt.by.supplying.them.like.keywor |
| 7680 | 64 73 2c 20 69 2e 65 2e 0a 0a 20 28 68 74 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 74 20 | ds,.i.e....(httpd-send-header.t. |
| 76a0 | 5c 22 74 65 78 74 2f 70 6c 61 69 6e 5c 22 20 32 30 30 20 3a 58 2d 50 6f 77 65 72 65 64 2d 42 79 | \"text/plain\".200.:X-Powered-By |
| 76c0 | 20 5c 22 73 69 6d 70 6c 65 2d 68 74 74 70 64 5c 22 29 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 | .\"simple-httpd\")"...(let.((sta |
| 76e0 | 74 75 73 2d 73 74 72 20 28 63 64 72 20 28 61 73 73 71 20 73 74 61 74 75 73 20 68 74 74 70 64 2d | tus-str.(cdr.(assq.status.httpd- |
| 7700 | 73 74 61 74 75 73 2d 63 6f 64 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 73 | status-codes))).........(headers |
| 7720 | 20 60 28 28 22 53 65 72 76 65 72 22 20 2e 20 2c 68 74 74 70 64 2d 73 65 72 76 65 72 2d 6e 61 6d | .`(("Server"...,httpd-server-nam |
| 7740 | 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 44 61 74 65 22 20 2e 20 | e)....................("Date"... |
| 7760 | 2c 28 68 74 74 70 64 2d 64 61 74 65 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 | ,(httpd-date-string))........... |
| 7780 | 20 20 20 20 20 20 20 20 20 28 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2e 20 22 6b 65 65 70 2d 61 | .........("Connection"..."keep-a |
| 77a0 | 6c 69 76 65 22 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 74 | live")....................("Cont |
| 77c0 | 65 6e 74 2d 54 79 70 65 22 20 2e 20 2c 28 68 74 74 70 64 2d 2d 73 74 72 69 6e 67 69 66 79 20 6d | ent-Type"...,(httpd--stringify.m |
| 77e0 | 69 6d 65 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 74 65 | ime))....................("Conte |
| 7800 | 6e 74 2d 4c 65 6e 67 74 68 22 20 2e 20 2c 28 68 74 74 70 64 2d 2d 62 75 66 66 65 72 2d 73 69 7a | nt-Length"...,(httpd--buffer-siz |
| 7820 | 65 29 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 68 74 74 70 64 2d 2d 68 65 61 64 65 72 | e))))).....(unless.httpd--header |
| 7840 | 2d 73 65 6e 74 0a 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 | -sent.......(setf.httpd--header- |
| 7860 | 73 65 6e 74 20 74 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a | sent.t).......(with-temp-buffer. |
| 7880 | 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 48 54 54 50 2f 31 2e | ........(insert.(format."HTTP/1. |
| 78a0 | 31 20 25 64 20 25 73 5c 72 5c 6e 22 20 73 74 61 74 75 73 20 73 74 61 74 75 73 2d 73 74 72 29 29 | 1.%d.%s\r\n".status.status-str)) |
| 78c0 | 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 68 65 61 64 65 72 20 76 61 | .........(cl-loop.for.(header.va |
| 78e0 | 6c 75 65 29 20 6f 6e 20 68 65 61 64 65 72 2d 6b 65 79 73 20 62 79 20 23 27 63 64 64 72 0a 20 20 | lue).on.header-keys.by.#'cddr... |
| 7900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 68 65 61 64 65 72 2d 6e 61 6d 65 20 3d | ...............for.header-name.= |
| 7920 | 20 28 73 75 62 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 68 65 61 64 65 72 29 | .(substring.(symbol-name.header) |
| 7940 | 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 76 61 6c 75 65 2d 6e | .1)..................for.value-n |
| 7960 | 61 6d 65 20 3d 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 | ame.=.(format."%s".value)....... |
| 7980 | 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 68 65 61 64 65 72 2d | ...........collect.(cons.header- |
| 79a0 | 6e 61 6d 65 20 76 61 6c 75 65 2d 6e 61 6d 65 29 20 69 6e 74 6f 20 65 78 74 72 61 73 0a 20 20 20 | name.value-name).into.extras.... |
| 79c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 73 65 74 66 20 68 65 61 64 | ..............finally.(setf.head |
| 79e0 | 65 72 73 20 28 6e 63 6f 6e 63 20 68 65 61 64 65 72 73 20 65 78 74 72 61 73 29 29 29 0a 20 20 20 | ers.(nconc.headers.extras))).... |
| 7a00 | 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 68 65 61 64 65 72 20 68 65 61 64 65 72 73 29 0a 20 20 | .....(dolist.(header.headers)... |
| 7a20 | 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 73 3a 20 25 73 5c | ........(insert.(format."%s:.%s\ |
| 7a40 | 72 5c 6e 22 20 28 63 61 72 20 68 65 61 64 65 72 29 20 28 63 64 72 20 68 65 61 64 65 72 29 29 29 | r\n".(car.header).(cdr.header))) |
| 7a60 | 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 72 5c 6e 22 29 0a 20 20 20 20 20 20 | ).........(insert."\r\n")....... |
| 7a80 | 20 20 28 70 72 6f 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 | ..(process-send-region.(httpd-re |
| 7aa0 | 73 6f 6c 76 65 2d 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 | solve-proc.proc)................ |
| 7ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 | ..............(point-min).(point |
| 7ae0 | 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 72 65 67 69 | -max))).......(process-send-regi |
| 7b00 | 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 20 20 | on.(httpd-resolve-proc.proc).... |
| 7b20 | 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 6e 74 2d 6d | ........................(point-m |
| 7b40 | 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 | in).(point-max)))))..(defun.http |
| 7b60 | 64 2d 72 65 64 69 72 65 63 74 20 28 70 72 6f 63 20 70 61 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 | d-redirect.(proc.path.&optional. |
| 7b80 | 63 6f 64 65 29 0a 20 20 22 52 65 64 69 72 65 63 74 20 74 68 65 20 63 6c 69 65 6e 74 20 74 6f 20 | code)..."Redirect.the.client.to. |
| 7ba0 | 50 41 54 48 20 28 64 65 66 61 75 6c 74 20 33 30 31 29 2e 20 49 66 20 50 52 4f 43 20 69 73 20 54 | PATH.(default.301)..If.PROC.is.T |
| 7bc0 | 20 75 73 65 0a 74 68 65 20 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d 70 72 6f 63 27 20 61 73 | .use.the.`httpd-current-proc'.as |
| 7be0 | 20 74 68 65 20 70 72 6f 63 65 73 73 2e 22 0a 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 28 6c 69 73 | .the.process."...(httpd-log.(lis |
| 7c00 | 74 20 27 72 65 64 69 72 65 63 74 20 70 61 74 68 29 29 0a 20 20 28 68 74 74 70 64 2d 64 69 73 63 | t.'redirect.path))...(httpd-disc |
| 7c20 | 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a | ard-buffer)...(with-temp-buffer. |
| 7c40 | 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 74 65 78 | ....(httpd-send-header.proc."tex |
| 7c60 | 74 2f 70 6c 61 69 6e 22 20 28 6f 72 20 63 6f 64 65 20 33 30 31 29 20 3a 4c 6f 63 61 74 69 6f 6e | t/plain".(or.code.301).:Location |
| 7c80 | 20 70 61 74 68 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 65 6e 64 2d 66 69 6c 65 | .path)))..(defun.httpd-send-file |
| 7ca0 | 20 28 70 72 6f 63 20 70 61 74 68 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 71 29 0a 20 20 22 53 65 | .(proc.path.&optional.req)..."Se |
| 7cc0 | 72 76 65 20 66 69 6c 65 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 63 6c 69 65 6e 74 2e 20 20 49 | rve.file.to.the.given.client...I |
| 7ce0 | 66 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 0a 60 68 74 74 70 64 2d 63 75 72 72 65 | f.PROC.is.T.use.the.`httpd-curre |
| 7d00 | 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 68 74 74 | nt-proc'.as.the.process."...(htt |
| 7d20 | 70 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 28 6c 65 74 20 28 28 72 65 71 2d | pd-discard-buffer)...(let.((req- |
| 7d40 | 65 74 61 67 20 28 63 61 64 72 20 28 61 73 73 6f 63 20 22 49 66 2d 4e 6f 6e 65 2d 4d 61 74 63 68 | etag.(cadr.(assoc."If-None-Match |
| 7d60 | 22 20 72 65 71 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 74 61 67 20 28 68 74 74 70 64 2d 65 74 | ".req))).........(etag.(httpd-et |
| 7d80 | 61 67 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 28 6d 74 69 6d 65 20 28 68 74 74 70 64 2d | ag.path)).........(mtime.(httpd- |
| 7da0 | 64 61 74 65 2d 73 74 72 69 6e 67 20 28 6e 74 68 20 34 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 | date-string.(nth.4.(file-attribu |
| 7dc0 | 74 65 73 20 70 61 74 68 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 72 65 71 | tes.path))))).....(if.(equal.req |
| 7de0 | 2d 65 74 61 67 20 65 74 61 67 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 | -etag.etag).........(with-temp-b |
| 7e00 | 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 66 69 6c | uffer...........(httpd-log.`(fil |
| 7e20 | 65 20 2c 70 61 74 68 20 6e 6f 74 2d 6d 6f 64 69 66 69 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 | e.,path.not-modified)).......... |
| 7e40 | 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 74 65 78 74 2f 70 | .(httpd-send-header.proc."text/p |
| 7e60 | 6c 61 69 6e 22 20 33 30 34 29 29 0a 20 20 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 66 | lain".304)).......(httpd-log.`(f |
| 7e80 | 69 6c 65 20 2c 70 61 74 68 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 | ile.,path)).......(with-temp-buf |
| 7ea0 | 66 65 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 | fer.........(set-buffer-multibyt |
| 7ec0 | 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65 2d 63 6f 6e 74 | e.nil).........(insert-file-cont |
| 7ee0 | 65 6e 74 73 2d 6c 69 74 65 72 61 6c 6c 79 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 28 68 74 | ents-literally.path).........(ht |
| 7f00 | 74 70 64 2d 73 65 6e 64 2d 68 65 61 64 65 72 20 70 72 6f 63 20 28 68 74 74 70 64 2d 67 65 74 2d | tpd-send-header.proc.(httpd-get- |
| 7f20 | 6d 69 6d 65 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 65 78 74 65 6e 73 69 6f 6e 20 70 61 74 68 29 29 | mime.(file-name-extension.path)) |
| 7f40 | 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 32 30 30 20 | ............................200. |
| 7f60 | 3a 4c 61 73 74 2d 4d 6f 64 69 66 69 65 64 20 6d 74 69 6d 65 20 3a 45 54 61 67 20 65 74 61 67 29 | :Last-Modified.mtime.:ETag.etag) |
| 7f80 | 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 73 65 6e 64 2d 64 69 72 65 63 74 6f 72 | ))))..(defun.httpd-send-director |
| 7fa0 | 79 20 28 70 72 6f 63 20 70 61 74 68 20 75 72 69 2d 70 61 74 68 29 0a 20 20 22 53 65 72 76 65 20 | y.(proc.path.uri-path)..."Serve. |
| 7fc0 | 61 20 66 69 6c 65 20 6c 69 73 74 69 6e 67 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2e 20 49 66 | a.file.listing.to.the.client..If |
| 7fe0 | 20 50 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 0a 60 68 74 74 70 64 2d 63 75 72 72 65 6e | .PROC.is.T.use.the.`httpd-curren |
| 8000 | 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 68 74 74 70 | t-proc'.as.the.process."...(http |
| 8020 | 64 2d 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 28 6c 65 74 20 28 28 74 69 74 6c 65 | d-discard-buffer)...(let.((title |
| 8040 | 20 28 63 6f 6e 63 61 74 20 22 44 69 72 65 63 74 6f 72 79 20 6c 69 73 74 69 6e 67 20 66 6f 72 20 | .(concat."Directory.listing.for. |
| 8060 | 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 69 6e | "........................(url-in |
| 8080 | 73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e 2d 73 74 72 69 6e 67 20 75 72 69 2d 70 61 74 68 | sert-entities-in-string.uri-path |
| 80a0 | 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 22 2f 22 20 28 73 75 62 73 74 72 69 | )))).....(if.(equal."/".(substri |
| 80c0 | 6e 67 20 75 72 69 2d 70 61 74 68 20 2d 31 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 | ng.uri-path.-1)).........(with-t |
| 80e0 | 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 | emp-buffer...........(httpd-log. |
| 8100 | 60 28 64 69 72 65 63 74 6f 72 79 20 2c 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 | `(directory.,path))...........(i |
| 8120 | 6e 73 65 72 74 20 22 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 5c 6e 22 29 0a 20 20 20 20 20 | nsert."<!DOCTYPE.html>\n")...... |
| 8140 | 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 68 74 6d 6c 3e 5c 6e 3c 68 65 61 64 3e 3c 74 69 74 | .....(insert."<html>\n<head><tit |
| 8160 | 6c 65 3e 22 20 74 69 74 6c 65 20 22 3c 2f 74 69 74 6c 65 3e 3c 2f 68 65 61 64 3e 5c 6e 22 29 0a | le>".title."</title></head>\n"). |
| 8180 | 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 62 6f 64 79 3e 5c 6e 3c 68 32 3e 22 | ..........(insert."<body>\n<h2>" |
| 81a0 | 20 74 69 74 6c 65 20 22 3c 2f 68 32 3e 5c 6e 3c 68 72 2f 3e 5c 6e 3c 75 6c 3e 22 29 0a 20 20 20 | .title."</h2>\n<hr/>\n<ul>").... |
| 81c0 | 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 66 69 6c 65 20 28 64 69 72 65 63 74 6f 72 79 2d | .......(dolist.(file.(directory- |
| 81e0 | 66 69 6c 65 73 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 | files.path)).............(unless |
| 8200 | 20 28 65 71 20 3f 2e 20 28 61 72 65 66 20 66 69 6c 65 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 | .(eq.?..(aref.file.0)).......... |
| 8220 | 20 20 20 20 20 28 6c 65 74 2a 20 28 28 66 75 6c 6c 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e | .....(let*.((full.(expand-file-n |
| 8240 | 61 6d 65 20 66 69 6c 65 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ame.file.path))................. |
| 8260 | 20 20 20 20 20 28 74 61 69 6c 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 | .....(tail.(if.(file-directory-p |
| 8280 | 20 66 75 6c 6c 29 20 22 2f 22 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .full)."/".""))................. |
| 82a0 | 20 20 20 20 20 28 66 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 | .....(f.(url-insert-entities-in- |
| 82c0 | 73 74 72 69 6e 67 20 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | string.file))................... |
| 82e0 | 20 20 20 28 6c 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 66 69 6c 65 29 29 29 | ...(l.(url-hexify-string.file))) |
| 8300 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 | .................(insert.(format |
| 8320 | 20 22 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 25 73 25 73 5c 22 3e 25 73 25 73 3c 2f 61 3e 3c | ."<li><a.href=\"%s%s\">%s%s</a>< |
| 8340 | 2f 6c 69 3e 5c 6e 22 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 | /li>\n"......................... |
| 8360 | 20 20 20 20 20 20 20 20 6c 20 74 61 69 6c 20 66 20 74 61 69 6c 29 29 29 29 29 0a 20 20 20 20 20 | ........l.tail.f.tail)))))...... |
| 8380 | 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3c 2f 75 6c 3e 5c 6e 3c 68 72 2f 3e 5c 6e 3c 2f 62 6f | .....(insert."</ul>\n<hr/>\n</bo |
| 83a0 | 64 79 3e 5c 6e 3c 2f 68 74 6d 6c 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d | dy>\n</html>")...........(httpd- |
| 83c0 | 73 65 6e 64 2d 68 65 61 64 65 72 20 70 72 6f 63 20 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 | send-header.proc."text/html;.cha |
| 83e0 | 72 73 65 74 3d 75 74 66 2d 38 22 20 32 30 30 29 29 0a 20 20 20 20 20 20 28 68 74 74 70 64 2d 72 | rset=utf-8".200)).......(httpd-r |
| 8400 | 65 64 69 72 65 63 74 20 70 72 6f 63 20 28 63 6f 6e 63 61 74 20 75 72 69 2d 70 61 74 68 20 22 2f | edirect.proc.(concat.uri-path."/ |
| 8420 | 22 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 62 75 66 66 65 72 2d 73 69 7a | ")))))..(defun.httpd--buffer-siz |
| 8440 | 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 62 75 66 66 65 72 29 0a 20 20 22 47 65 74 20 74 68 65 20 | e.(&optional.buffer)..."Get.the. |
| 8460 | 62 75 66 66 65 72 20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 | buffer.size.in.bytes."...(let.(( |
| 8480 | 6f 72 69 67 20 65 6e 61 62 6c 65 2d 6d 75 6c 74 69 62 79 74 65 2d 63 68 61 72 61 63 74 65 72 73 | orig.enable-multibyte-characters |
| 84a0 | 29 0a 20 20 20 20 20 20 20 20 28 73 69 7a 65 20 30 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 | ).........(size.0)).....(with-cu |
| 84c0 | 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 20 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 | rrent-buffer.(or.buffer.(current |
| 84e0 | 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 75 6c 74 | -buffer)).......(set-buffer-mult |
| 8500 | 69 62 79 74 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74 66 20 73 69 7a 65 20 28 62 75 66 | ibyte.nil).......(setf.size.(buf |
| 8520 | 66 65 72 2d 73 69 7a 65 29 29 0a 20 20 20 20 20 20 28 69 66 20 6f 72 69 67 20 28 73 65 74 2d 62 | fer-size)).......(if.orig.(set-b |
| 8540 | 75 66 66 65 72 2d 6d 75 6c 74 69 62 79 74 65 20 6f 72 69 67 29 29 29 0a 20 20 20 20 73 69 7a 65 | uffer-multibyte.orig))).....size |
| 8560 | 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 65 72 72 6f 72 20 28 70 72 6f 63 20 73 74 61 | ))..(defun.httpd-error.(proc.sta |
| 8580 | 74 75 73 20 26 6f 70 74 69 6f 6e 61 6c 20 69 6e 66 6f 29 0a 20 20 22 53 65 6e 64 20 61 6e 20 65 | tus.&optional.info)..."Send.an.e |
| 85a0 | 72 72 6f 72 20 70 61 67 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 66 6f 72 20 53 54 41 54 55 53 | rror.page.appropriate.for.STATUS |
| 85c0 | 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2c 0a 6f 70 74 69 6f 6e 61 6c 6c 79 20 69 6e 73 65 72 | .to.the.client,.optionally.inser |
| 85e0 | 74 69 6e 67 20 6f 62 6a 65 63 74 20 49 4e 46 4f 20 69 6e 74 6f 20 70 61 67 65 2e 20 49 66 20 50 | ting.object.INFO.into.page..If.P |
| 8600 | 52 4f 43 20 69 73 20 54 20 75 73 65 20 74 68 65 0a 60 68 74 74 70 64 2d 63 75 72 72 65 6e 74 2d | ROC.is.T.use.the.`httpd-current- |
| 8620 | 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 68 74 74 70 64 2d | proc'.as.the.process."...(httpd- |
| 8640 | 64 69 73 63 61 72 64 2d 62 75 66 66 65 72 29 0a 20 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 28 65 | discard-buffer)...(httpd-log.`(e |
| 8660 | 72 72 6f 72 20 2c 73 74 61 74 75 73 20 2c 69 6e 66 6f 29 29 0a 20 20 28 77 69 74 68 2d 74 65 6d | rror.,status.,info))...(with-tem |
| 8680 | 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 6c 65 74 20 28 28 68 74 6d 6c 20 28 6f 72 20 28 63 64 | p-buffer.....(let.((html.(or.(cd |
| 86a0 | 72 20 28 61 73 73 71 20 73 74 61 74 75 73 20 68 74 74 70 64 2d 68 74 6d 6c 29 29 20 22 22 29 29 | r.(assq.status.httpd-html))."")) |
| 86c0 | 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 | ...........(contents............ |
| 86e0 | 28 69 66 20 28 6e 6f 74 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 | (if.(not.info)................"" |
| 8700 | 0a 20 20 20 20 20 20 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 | ..............(with-temp-buffer. |
| 8720 | 20 20 20 20 20 20 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 | ...............(let.((standard-o |
| 8740 | 75 74 70 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 | utput.(current-buffer)))........ |
| 8760 | 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 65 72 72 6f 72 3a 20 22 29 0a 20 20 20 | ..........(insert."error:.").... |
| 8780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 63 20 69 6e 66 6f 29 0a 20 20 20 20 20 | ..............(princ.info)...... |
| 87a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 0a 20 20 20 20 20 20 | ............(insert."\n")....... |
| 87c0 | 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 68 74 74 70 64 2d 73 68 6f 77 2d 62 61 63 6b | ...........(when.httpd-show-back |
| 87e0 | 74 72 61 63 65 2d 77 68 65 6e 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | trace-when-error................ |
| 8800 | 20 20 20 20 28 69 6e 73 65 72 74 20 22 62 61 63 6b 74 72 61 63 65 3a 20 22 29 0a 20 20 20 20 20 | ....(insert."backtrace:.")...... |
| 8820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 63 20 28 62 61 63 6b 74 72 61 63 65 29 | ..............(princ.(backtrace) |
| 8840 | 29 0a 20 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 5c 6e | )....................(insert."\n |
| 8860 | 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 64 2d 65 73 63 61 | "))..................(httpd-esca |
| 8880 | 70 65 2d 68 74 6d 6c 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | pe-html-buffer)................. |
| 88a0 | 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 69 6e 73 | .(buffer-string)))))).......(ins |
| 88c0 | 65 72 74 20 28 66 6f 72 6d 61 74 20 68 74 6d 6c 20 63 6f 6e 74 65 6e 74 73 29 29 29 0a 20 20 20 | ert.(format.html.contents))).... |
| 88e0 | 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 74 65 78 74 2f 68 | .(httpd-send-header.proc."text/h |
| 8900 | 74 6d 6c 22 20 73 74 61 74 75 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 68 74 74 70 64 2d 2d 65 72 | tml".status)))..(defun.httpd--er |
| 8920 | 72 6f 72 2d 73 61 66 65 20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 43 61 6c 6c 20 68 74 | ror-safe.(&rest.args)..."Call.ht |
| 8940 | 74 70 64 2d 65 72 72 6f 72 20 61 6e 64 20 72 65 70 6f 72 74 20 66 61 69 6c 75 72 65 73 20 74 6f | tpd-error.and.report.failures.to |
| 8960 | 20 2a 68 74 74 70 64 2a 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 | .*httpd*."...(condition-case.err |
| 8980 | 6f 72 2d 63 61 73 65 0a 20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 68 74 74 70 64 2d 65 72 72 | or-case.......(apply.#'httpd-err |
| 89a0 | 6f 72 20 61 72 67 73 29 0a 20 20 20 20 28 65 72 72 6f 72 20 28 68 74 74 70 64 2d 6c 6f 67 20 60 | or.args).....(error.(httpd-log.` |
| 89c0 | 28 68 61 72 64 2d 65 72 72 6f 72 20 2c 65 72 72 6f 72 2d 63 61 73 65 29 29 29 29 29 0a 0a 28 70 | (hard-error.,error-case)))))..(p |
| 89e0 | 72 6f 76 69 64 65 20 27 73 69 6d 70 6c 65 2d 68 74 74 70 64 29 0a 0a 3b 3b 3b 20 73 69 6d 70 6c | rovide.'simple-httpd)..;;;.simpl |
| 8a00 | 65 2d 68 74 74 70 64 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 | e-httpd.el.ends.here............ |
| 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 | ................................ |