(defun foo (s)
(let* ((get (read s nil 'eof))
(fn (and (eq get 'get) (string-downcase (read s nil 'eof))))
(fn (when (probe-file fn) fn)))
(format s "HTTP/1.1 ~S~%" (if fn 404 500))
(format s "Content-type: text/html~%~%")
(format t "get ~a fn ~a~%" get fn)
(when fn
(if (pathname-name (pathname fn))
(with-open-file (q fn) (si::copy-stream q s))
(dolist (l (directory fn))
(format s "~a /...
~%"
(namestring l) (namestring l) (namestring l)))
))
(close s))
)
(defun bar (p fn)
(let ((s (si::socket p :server fn)))
(tagbody l
(when (si::listen s)
(let ((w (si::accept s)))
(foo w)))
(sleep 3)
(go l))))
(bar 8085 #'foo)