[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [Axiom-developer] axiom.silver
From: |
Page, Bill |
Subject: |
RE: [Axiom-developer] axiom.silver |
Date: |
Wed, 20 Sep 2006 04:15:40 -0400 |
Camm,
On Friday, September 15, 2006 11:31 AM you wrote:
>
> Can we finalize this stat bit please? I'm trying to get 2.6.8 out
> ....
I had a bit of trouble with my Windows MSYS/MinGW configuration
over the weekend, but now I have got it straight. See the Windows
configuration here:
http://wiki.axiom-developer.org/BuildAxiom
for how I setup the build environment.
I needed the following patch to build on Windows because of a
difference with lstat (explained in the patch).
$ diff -Naur gcl-2.6.8pre_orig/o gcl-2.6.8pre/o
diff -Naur gcl-2.6.8pre_orig/o/unixfsys.c gcl-2.6.8pre/o/unixfsys.c
--- gcl-2.6.8pre_orig/o/unixfsys.c Sun Sep 17 17:54:43 2006
+++ gcl-2.6.8pre/o/unixfsys.c Wed Sep 20 01:03:44 2006
@@ -34,6 +34,10 @@
#ifdef __MINGW32__
# include <windows.h>
+/* Windows has no symlink, therefore no lstat. Without symlinks lstat
+ is equivalent to stat anyway. */
+# define S_ISLNK(a) 0
+# define lstat stat
#endif
#ifdef BSD
----------
With this patch applied I was able to build both the CLtL1 and ANSI
images.
Here are the results of some tests of the new si:stat function:
$ saved_gcl
GCL (GNU Common Lisp) 2.6.8 CLtL1 Sep 20 2006 02:26:46
Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
Binary License: GPL due to GPL'ed components: (UNEXEC)
Modifications of this banner must retain notice of a compatible license
Dedicated to the memory of W. Schelter
Use (help) to get some basic information on how to use GCL.
Temporary directory for compiler files set to
C:/DOCUME~1/bpage/LOCALS~1/Temp/
>(si:stat "tryserv.tcl")
(:FILE 481 1158724649)
>(si:stat "tryserv.xxx")
NIL
>(si:stat "bfd")
(:DIRECTORY 0 1158734019)
>(quit)
------------
The difference between this and your output below seems to be due
to a change in the coding for this section in the current CVS
which now looks like this:
if (lstat(filename,&ss))
RETURN1(Cnil);
else {/* ctime_r insufficiently portable */
/* int j;
ctime_r(&ss.st_ctime,filename);
j=strlen(filename);
if (isspace(filename[j-1]))
filename[j-1]=0;*/
RETURN1(list(3,S_ISDIR(ss.st_mode) ? sKdirectory :
(S_ISLNK(ss.st_mode) ? sKlink : sKfile),
make_fixnum(ss.st_size),make_fixnum(ss.st_ctime)));
-------
So is this the result you expected from Windows?
Regards,
Bill Page.
>
> In addition to knowing whether enough information is provided, I need
> to know if it works on windows, macosx, and any other proprietary
> system of interest.
> ...
> >
> > The easy way, which avoids the requirement of PDP-10 lisp
> > comaptability :-), is si::stat. How about this:
> >
> > Index: unixfsys.c
> > ===================================================================
> > RCS file: /cvsroot/gcl/gcl/o/unixfsys.c,v
> > retrieving revision 1.28
> > diff -u -r1.28 unixfsys.c
> > --- unixfsys.c 24 Aug 2006 16:53:28 -0000 1.28
> > +++ unixfsys.c 12 Sep 2006 16:35:56 -0000
> > @@ -23,6 +23,7 @@
> > #include <stdlib.h>
> > #include <unistd.h>
> > #include <errno.h>
> > +#include <time.h>
> >
> > #define IN_UNIXFSYS
> > #include "include.h"
> > @@ -490,6 +491,34 @@
> > }
> >
> >
> > +DEF_ORDINARY("DIRECTORY",sKdirectory,KEYWORD,"");
> > +DEF_ORDINARY("LINK",sKlink,KEYWORD,"");
> > +DEF_ORDINARY("FILE",sKfile,KEYWORD,"");
> > +
> >
> +DEFUN_NEW("STAT",object,fSstat,SI,1,1,NONE,OO,OO,OO,OO,(objec
> t path),"") {
> > +
> > + char filename[4096];
> > + struct stat ss;
> > +
> > +
> > + bzero(filename,sizeof(filename));
> > + coerce_to_filename(path,filename);
> > + if (lstat(filename,&ss))
> > + RETURN1(Cnil);
> > + else {
> > + int j;
> > + ctime_r(&ss.st_ctime,filename);
> > + j=strlen(filename);
> > + if (isspace(filename[j-1]))
> > + filename[j-1]=0;
> > + RETURN1(list(3,S_ISDIR(ss.st_mode) ? sKdirectory :
> > + (S_ISLNK(ss.st_mode) ? sKlink : sKfile),
> > + make_fixnum(ss.st_size),make_simple_string(filename)));
> > + }
> > +}
> > +
> > +
> > +
> >
> DEFUN_NEW("SETENV",object,fSsetenv,SI,2,2,NONE,OO,OO,OO,OO,(ob
> ject variable,object value),"Set environment VARIABLE to VALUE")
> >
> > {
> >
> >
> > >(si::stat "/tmp/ff1.h")
> >
> > (:LINK 9 "Tue Sep 12 12:32:58 2006")
> >
> > >(si::stat "/tmp/ff.h")
> >
> > (:FILE 0 "Mon Dec 5 13:52:23 2005")
> >
> > >(si::stat "/tmp/")
> >
> > (:DIRECTORY 81920 "Tue Sep 12 12:34:53 2006")
> >
> > >(si::stat "/tmp")
> >
> > (:DIRECTORY 81920 "Tue Sep 12 12:34:53 2006")
> >
> > >(si::stat "/tmp1")
> >
> > NIL
> > ...
- Re: [Axiom-developer] axiom.silver, (continued)
- RE: [Axiom-developer] axiom.silver, Gabriel Dos Reis, 2006/09/11
- Re: [Axiom-developer] axiom.silver, Camm Maguire, 2006/09/12
- Re: [Axiom-developer] axiom.silver, Gabriel Dos Reis, 2006/09/12
- Re: [Axiom-developer] axiom.silver, Camm Maguire, 2006/09/15
- RE: [Axiom-developer] axiom.silver, Bill Page, 2006/09/15
- Re: [Axiom-developer] axiom.silver, Gabriel Dos Reis, 2006/09/17
- Re: [Axiom-developer] axiom.silver, Gabriel Dos Reis, 2006/09/17
- RE: [Axiom-developer] axiom.silver,
Page, Bill <=
- Re: [Axiom-developer] axiom.silver, Camm Maguire, 2006/09/25