[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] Re: [Axiom-developer] Simple web server code for GCLfor Wind
[Gcl-devel] Re: [Axiom-developer] Simple web server code for GCLfor Windows
Wed, 04 May 2005 13:18:51 -0400
Mozilla Thunderbird 1.0.2 (Windows/20050317)
Camm Maguire wrote:
I guess the lisp code in the previous paragraph is intended to
directories and files, as you say but on Windows at least, all this code
in doing is distinguishing syntactically between `/msys/home/' (which it
treats as a
directory because the "name" part is missing and '/msys/home' (which it
treats as a
file) apparently without asking the operating system. Does this work
(if (pathname-name (pathname fn))
(with-open-file (q fn) (si::copy-stream q s))
(dolist (l (directory fn)) (format s "~a~%" (namestring l)))))
It would be nicer to make the result and the content type depend
on whether something was a directory or on the type of the file
etc instead of the syntax of the name, but I could not easily
discover how to do that in GCL. Specifically how can I tell a
directory from a file? Can anyone suggest a suitable "Getting
started in GCL" tutorial?
In lisp, the file system is accessed via a 'pathname' abstraction.
Think of this a sa structure with several components, name, directory,
type (e.g. suffix), device, even host and version if I recall.
Directories have nil in the name and type fields. The sample code
uses this to distinguish between them.
Inside the (dolist (l (directory fn)) ... ) I would like to treat
and files differently, i.e. different color, different type of links,
etc. How can
I do that in GCL? I could not seem to get
(if (pathname-name (pathname l)) ...
to work. Is that right approach?
As for content-type analysis on files, you have the following options
in order of simplicity to performace:
1) Use an external utility via run-process:
I think that for content type I would be happy to try to interpret the file
extension as is done in most web servers, e.g. name.html is of
content-type: text/html and name.txt is of content-type: text/plaintext
As for tutorials, I'd suggest:
1) Practical Common Lisp:
2) The Common Lisp Hyperspec:
For most applications I think it would be fine to run only one Axiom
Anyway, it seems clear that we could use this approach to develop
a portable HyperTex browser for Axiom if we decide to go that
If I can delay the stdin/socket multiplexing, this might be
preferrable at this point. I need to know if blocking the axiom
process while serving the hyperdoc on Windows is a showstopper.
so that if a user executes a long running command from the command window,
hypertex would have to wait (and vice versa).