[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting
From: |
Camm Maguire |
Subject: |
Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting |
Date: |
05 May 2005 10:19:14 -0400 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings!
Bill Page <address@hidden> writes:
> Camm Maguire wrote:
>
> >OK, I've just tested on Linux under ANSI, and it works the same for
> >me (as it should). If this is not the case on Windows, please someone
> >let me know asap.
> >
> Perhaps Mike's test demonstrates that this is not working on the
> Windows ANSI version, but it works fine for me on Windows XP
> with the non-ANSI version.
>
OK, if someone can verify that it is ansi which breaks, please let me
know.
> >As for bombing when the file is not there, this would appear to be an
> >error in probe-file on Windows. The 'server' example is supposed to
> >return a blank page and continue in this case. Please let me know if
> >there is a bug here.
> >
> This works properly now with the most recent Version_2_6_7pre
> from cvs *and* your revised `foo' routine below. Note that with
> the new behaviour of (probe-file "xxx") which returns NIL if xxx
> is a directory, the old version of `foo' no longer worked.
>
Yes.
> >=============================================================================
> >
> >>(open "/etc" :if-does-not-exist nil)
> >>
> >
> >NIL
> >
> On Windows XP/sp2 with latest Version_2_6_7pre compiled non-ansi
> I get (using /msys/ instead of /etc/ for windows compatibility):
>
> > (open "/msys" :if-does-not-exist nil)
>
> NIL
>
> >>(open "/etc/" :if-does-not-exist nil)
> >>
> >
> >NIL
> >
> > (open "/msys/" :if-does-not-exist nil)
>
> NIL
>
> >>(open "/etc/passwd" :if-does-not-exist nil)
> >>
> >
> >#<input stream "/etc/passwd">
> >
> > (open "/msys/1.0/msys.bat" :if-does-not-exist nil)
>
> #<input stream "/msys/1.0/msys.bat">
>
> >>(directory "/etc")
> >>
> >
> >(#p"/etc")
> >
> > (directory "/msys/1.0")
>
> (#p"/msys/1.0")
>
> >>(directory "/etc/")
> >>
> >
> >(#p"/etc/R" #p"/etc/X11" #p"/etc/adduser.conf" #p"/etc/adjtime"
> > ...
> > #p"/etc/xml" #p"/etc/xpdf")
> >
> > (directory "/msys/1.0/")
>
> (#p"/msys/1.0/.bash_history" #p"/msys/1.0/bin" #p"/msys/1.0/doc"
> #p"/msys/1.0/etc" #p"/msys/1.0/home" #p"/msys/1.0/lib"
> #p"/msys/1.0/m.ico" #p"/msys/1.0/mingw" #p"/msys/1.0/msys.bat"
> #p"/msys/1.0/msys.ico" #p"/msys/1.0/share" #p"/msys/1.0/uninstall")
>
> >>(directory "/etc/passwd")
> >>
> >
> >(#p"/etc/passwd" #p"/etc/passwd-")
> >
> > (directory "/msys/1.0/msys.bat")
>
> (#p"/msys/1.0/msys.bat")
>
> Perhaps this last one is a little strange since `msys.bat' is a file?
>
This is all correct. #'directory is a wildcard matching function for
the filesystem (perhaps misleadingly named), so should return the
file path if supplied a file namestring.
> >=============================================================================
> >
> >Here is a little modification to the server example:
> >
> > (defun foo (s) (let* ((get (read s nil 'eof)) (fn (and (eq
> > get 'get) (string-downcase (read s nil 'eof))))
> > (dn (if (eql (aref fn (1- (length fn))) #\/) fn
> > (si::string-concatenate fn "/")))
> > (dir (directory dn))
> > (file (unless dir (when (probe-file fn) fn))))
This last line should likely read
(file (or (probe-file fn) dir))
just to ensure that probe-file takes precedence.
> > (format s "HTTP/1.1 ~S~%" (if fn 404 500))
> > (format s "Content-type: text/html~%~%")
> > (format t "get ~a fn ~a dn ~a~%" get fn dn)
> > (cond (file (with-open-file (q file) (si::copy-stream q s)))
> > (dir (dolist (l dir)
> > (let ((n (namestring l)))
> > (format s "<a href=\"~a\">~a</a> <a href=\"~a/\"> /...
> > </a><br>~%" n n n)))))
> > (close s)))
> >
> >=============================================================================
> >
> >These are just toys of course, just meant to illustrate my limited
> >understanding of how one can distinguish files from directories in
> >*standard* lisp. We can add anything non-standard we might need, of
> > course.
> I like it. As I said, it works for me with the non-ansi gcl Version_2_6_7pre
> on Windows XP/sp2. No aborts this time.
>
> And I am learning a little lisp too :) Thanks.
Great!
Take care,
>
> Cheers,
> Bill Page.
>
>
>
> _______________________________________________
> Axiom-developer mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, (continued)
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Bill Page, 2005/05/05
- RE: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Mike Thomas, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Bill Page, 2005/05/04
- RE: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Mike Thomas, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Bill Page, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Camm Maguire, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Bill Page, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Camm Maguire, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Bill Page, 2005/05/06
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting, Camm Maguire, 2005/05/05
- Re: [Axiom-developer] RE: [Gcl-devel] Re: axiom porting,
Camm Maguire <=