mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2025-12-06 02:40:26 -08:00
Merge branch '24.x.x-rc'
This commit is contained in:
commit
e4269ea51f
156 changed files with 3738 additions and 3319 deletions
56
CHANGELOG
56
CHANGELOG
|
|
@ -27,7 +27,61 @@
|
||||||
install ECL on the preferred destination (specified with "--prefix"
|
install ECL on the preferred destination (specified with "--prefix"
|
||||||
parameter given to configure script).
|
parameter given to configure script).
|
||||||
|
|
||||||
* Pending changes since 23.9.9
|
* Pending changes since 24.5.10
|
||||||
|
|
||||||
|
- Many internal improvements and bug fixes for the native compiler
|
||||||
|
|
||||||
|
* 24.5.10 changes since 23.9.9
|
||||||
|
** Announcement
|
||||||
|
Dear Community,
|
||||||
|
|
||||||
|
We are announcing a new stable ECL release. The release mainly includes a
|
||||||
|
number of bug fixes, including changes that prevent rare crashes in the
|
||||||
|
garbage collector on Mac OS X, some bug fixes for gray streams and for
|
||||||
|
pathname related functionality. Moreover, the release features new
|
||||||
|
extensions for gray streams (gray:stream-line-length,
|
||||||
|
gray:stream-file-length, gray:stream-file-string-length and generic
|
||||||
|
versions of cl:pathname and cl:truename) as well as improved emscripten
|
||||||
|
support (allowing shared library builds) and small improvements to the
|
||||||
|
manual.
|
||||||
|
|
||||||
|
We'd like to thank all people who contributed to ECL with code, testing,
|
||||||
|
issue reports and otherwise.
|
||||||
|
|
||||||
|
People listed here contributed code in this iteration: Daniel Kochmański,
|
||||||
|
Kirill A. Korinsky, Marius Gerbershagen, Tarn W. Burton, Mark Shroyer,
|
||||||
|
Dmitry Solomennikov, Kevin Zheng.
|
||||||
|
|
||||||
|
This release is available for download in a form of a source code archive
|
||||||
|
(we do not ship prebuilt binaries):
|
||||||
|
|
||||||
|
- [ECL 24.5.10 tarball archive](https://common-lisp.net/project/ecl/static/files/release/ecl-24.5.10.tgz)
|
||||||
|
- [The ECL Manual](https://common-lisp.net/project/ecl/static/manual/)
|
||||||
|
|
||||||
|
Happy Hacking,
|
||||||
|
The ECL Developers
|
||||||
|
|
||||||
|
** Enhancements
|
||||||
|
- Add gray-streams module. This makes it possible to load Gray stream
|
||||||
|
support via ~(require '#:gray-streams)~ versus calling the internal
|
||||||
|
function ~gray::redefine-cl-functions~.
|
||||||
|
- Add support for some Gray stream extensions by adding the following
|
||||||
|
generic functions.
|
||||||
|
1) ~gray:stream-line-length~ which allows stream specific line lengths
|
||||||
|
when ~cl:*print-right-margin*~ is NIL.
|
||||||
|
2) ~gray:stream-file-length~ which allows Gray streams to implement
|
||||||
|
~cl:file-length~.
|
||||||
|
3) ~gray:stream-file-string-length~ which allows Gray streams to
|
||||||
|
implement ~cl:file-string-length~.
|
||||||
|
4) Generic versions of ~cl:pathname~ and ~cl:truename~.
|
||||||
|
- The emscripten target now supports shared libraries.
|
||||||
|
|
||||||
|
** Bugs fixed
|
||||||
|
- Various bug fixes for Gray streams.
|
||||||
|
- The garbarge collector is set up to automatically handle fork calls on
|
||||||
|
Unix systems, preventing rare crashes on Mac OS X (where bdwgc does not
|
||||||
|
enable this option by default).
|
||||||
|
|
||||||
* 23.9.9 changes since 21.2.1
|
* 23.9.9 changes since 21.2.1
|
||||||
** Announcement
|
** Announcement
|
||||||
Dear Community,
|
Dear Community,
|
||||||
|
|
|
||||||
207
COPYING
207
COPYING
|
|
@ -1,112 +1,125 @@
|
||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2.1, February 1999
|
||||||
|
|
||||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
[This is the first released version of the library GPL. It is
|
[This is the first released version of the Lesser GPL. It also counts
|
||||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
as the successor of the GNU Library Public License, version 2, hence
|
||||||
|
the version number 2.1.]
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
The licenses for most software are designed to take away your
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
Licenses are intended to guarantee your freedom to share and change
|
Licenses are intended to guarantee your freedom to share and change
|
||||||
free software--to make sure the software is free for all its users.
|
free software--to make sure the software is free for all its users.
|
||||||
|
|
||||||
This license, the Library General Public License, applies to some
|
This license, the Lesser General Public License, applies to some
|
||||||
specially designated Free Software Foundation software, and to any
|
specially designated software packages--typically libraries--of the
|
||||||
other libraries whose authors decide to use it. You can use it for
|
Free Software Foundation and other authors who decide to use it. You
|
||||||
your libraries, too.
|
can use it too, but we suggest you first think carefully about whether
|
||||||
|
this license or the ordinary General Public License is the better
|
||||||
|
strategy to use in any particular case, based on the explanations below.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom of use,
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
not price. Our General Public Licenses are designed to make sure that
|
||||||
have the freedom to distribute copies of free software (and charge for
|
you have the freedom to distribute copies of free software (and charge
|
||||||
this service if you wish), that you receive source code or can get it
|
for this service if you wish); that you receive source code or can get
|
||||||
if you want it, that you can change the software or use pieces of it
|
it if you want it; that you can change the software and use pieces of
|
||||||
in new free programs; and that you know you can do these things.
|
it in new free programs; and that you are informed that you can do
|
||||||
|
these things.
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
To protect your rights, we need to make restrictions that forbid
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
distributors to deny you these rights or to ask you to surrender these
|
||||||
These restrictions translate to certain responsibilities for you if
|
rights. These restrictions translate to certain responsibilities for
|
||||||
you distribute copies of the library, or if you modify it.
|
you if you distribute copies of the library or if you modify it.
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis
|
For example, if you distribute copies of the library, whether gratis
|
||||||
or for a fee, you must give the recipients all the rights that we gave
|
or for a fee, you must give the recipients all the rights that we gave
|
||||||
you. You must make sure that they, too, receive or can get the source
|
you. You must make sure that they, too, receive or can get the source
|
||||||
code. If you link a program with the library, you must provide
|
code. If you link other code with the library, you must provide
|
||||||
complete object files to the recipients so that they can relink them
|
complete object files to the recipients, so that they can relink them
|
||||||
with the library, after making changes to the library and recompiling
|
with the library after making changes to the library and recompiling
|
||||||
it. And you must show them these terms so they know their rights.
|
it. And you must show them these terms so they know their rights.
|
||||||
|
|
||||||
Our method of protecting your rights has two steps: (1) copyright
|
We protect your rights with a two-step method: (1) we copyright the
|
||||||
the library, and (2) offer you this license which gives you legal
|
library, and (2) we offer you this license, which gives you legal
|
||||||
permission to copy, distribute and/or modify the library.
|
permission to copy, distribute and/or modify the library.
|
||||||
|
|
||||||
Also, for each distributor's protection, we want to make certain
|
To protect each distributor, we want to make it very clear that
|
||||||
that everyone understands that there is no warranty for this free
|
there is no warranty for the free library. Also, if the library is
|
||||||
library. If the library is modified by someone else and passed on, we
|
modified by someone else and passed on, the recipients should know
|
||||||
want its recipients to know that what they have is not the original
|
that what they have is not the original version, so that the original
|
||||||
version, so that any problems introduced by others will not reflect on
|
author's reputation will not be affected by problems that might be
|
||||||
the original authors' reputations.
|
introduced by others.
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
Finally, software patents pose a constant threat to the existence of
|
||||||
patents. We wish to avoid the danger that companies distributing free
|
any free program. We wish to make sure that a company cannot
|
||||||
software will individually obtain patent licenses, thus in effect
|
effectively restrict the users of a free program by obtaining a
|
||||||
transforming the program into proprietary software. To prevent this,
|
restrictive license from a patent holder. Therefore, we insist that
|
||||||
we have made it clear that any patent must be licensed for everyone's
|
any patent license obtained for a version of the library must be
|
||||||
free use or not licensed at all.
|
consistent with the full freedom of use specified in this license.
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the ordinary
|
Most GNU software, including some libraries, is covered by the
|
||||||
GNU General Public License, which was designed for utility programs. This
|
ordinary GNU General Public License. This license, the GNU Lesser
|
||||||
license, the GNU Library General Public License, applies to certain
|
General Public License, applies to certain designated libraries, and
|
||||||
designated libraries. This license is quite different from the ordinary
|
is quite different from the ordinary General Public License. We use
|
||||||
one; be sure to read it in full, and don't assume that anything in it is
|
this license for certain libraries in order to permit linking those
|
||||||
the same as in the ordinary license.
|
libraries into non-free programs.
|
||||||
|
|
||||||
The reason we have a separate public license for some libraries is that
|
When a program is linked with a library, whether statically or using
|
||||||
they blur the distinction we usually make between modifying or adding to a
|
a shared library, the combination of the two is legally speaking a
|
||||||
program and simply using it. Linking a program with a library, without
|
combined work, a derivative of the original library. The ordinary
|
||||||
changing the library, is in some sense simply using the library, and is
|
General Public License therefore permits such linking only if the
|
||||||
analogous to running a utility program or application program. However, in
|
entire combination fits its criteria of freedom. The Lesser General
|
||||||
a textual and legal sense, the linked executable is a combined work, a
|
Public License permits more lax criteria for linking other code with
|
||||||
derivative of the original library, and the ordinary General Public License
|
the library.
|
||||||
treats it as such.
|
|
||||||
|
|
||||||
Because of this blurred distinction, using the ordinary General
|
We call this license the "Lesser" General Public License because it
|
||||||
Public License for libraries did not effectively promote software
|
does Less to protect the user's freedom than the ordinary General
|
||||||
sharing, because most developers did not use the libraries. We
|
Public License. It also provides other free software developers Less
|
||||||
concluded that weaker conditions might promote sharing better.
|
of an advantage over competing non-free programs. These disadvantages
|
||||||
|
are the reason we use the ordinary General Public License for many
|
||||||
|
libraries. However, the Lesser license provides advantages in certain
|
||||||
|
special circumstances.
|
||||||
|
|
||||||
However, unrestricted linking of non-free programs would deprive the
|
For example, on rare occasions, there may be a special need to
|
||||||
users of those programs of all benefit from the free status of the
|
encourage the widest possible use of a certain library, so that it becomes
|
||||||
libraries themselves. This Library General Public License is intended to
|
a de-facto standard. To achieve this, non-free programs must be
|
||||||
permit developers of non-free programs to use free libraries, while
|
allowed to use the library. A more frequent case is that a free
|
||||||
preserving your freedom as a user of such programs to change the free
|
library does the same job as widely used non-free libraries. In this
|
||||||
libraries that are incorporated in them. (We have not seen how to achieve
|
case, there is little to gain by limiting the free library to free
|
||||||
this as regards changes in header files, but we have achieved it as regards
|
software only, so we use the Lesser General Public License.
|
||||||
changes in the actual functions of the Library.) The hope is that this
|
|
||||||
will lead to faster development of free libraries.
|
In other cases, permission to use a particular library in non-free
|
||||||
|
programs enables a greater number of people to use a large body of
|
||||||
|
free software. For example, permission to use the GNU C Library in
|
||||||
|
non-free programs enables many more people to use the whole GNU
|
||||||
|
operating system, as well as its variant, the GNU/Linux operating
|
||||||
|
system.
|
||||||
|
|
||||||
|
Although the Lesser General Public License is Less protective of the
|
||||||
|
users' freedom, it does ensure that the user of a program that is
|
||||||
|
linked with the Library has the freedom and the wherewithal to run
|
||||||
|
that program using a modified version of the Library.
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow. Pay close attention to the difference between a
|
modification follow. Pay close attention to the difference between a
|
||||||
"work based on the library" and a "work that uses the library". The
|
"work based on the library" and a "work that uses the library". The
|
||||||
former contains code derived from the library, while the latter only
|
former contains code derived from the library, whereas the latter must
|
||||||
works together with the library.
|
be combined with the library in order to run.
|
||||||
|
|
||||||
Note that it is possible for a library to be covered by the ordinary
|
|
||||||
General Public License rather than by this special one.
|
|
||||||
|
|
||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
0. This License Agreement applies to any software library which
|
0. This License Agreement applies to any software library or other
|
||||||
contains a notice placed by the copyright holder or other authorized
|
program which contains a notice placed by the copyright holder or
|
||||||
party saying it may be distributed under the terms of this Library
|
other authorized party saying it may be distributed under the terms of
|
||||||
General Public License (also called "this License"). Each licensee is
|
this Lesser General Public License (also called "this License").
|
||||||
addressed as "you".
|
Each licensee is addressed as "you".
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data
|
A "library" means a collection of software functions and/or data
|
||||||
prepared so as to be conveniently linked with application programs
|
prepared so as to be conveniently linked with application programs
|
||||||
|
|
@ -133,7 +146,7 @@ such a program is covered only if its contents constitute a work based
|
||||||
on the Library (independent of the use of the Library in a tool for
|
on the Library (independent of the use of the Library in a tool for
|
||||||
writing it). Whether that is true depends on what the Library does
|
writing it). Whether that is true depends on what the Library does
|
||||||
and what the program that uses the Library does.
|
and what the program that uses the Library does.
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
1. You may copy and distribute verbatim copies of the Library's
|
||||||
complete source code as you receive it, in any medium, provided that
|
complete source code as you receive it, in any medium, provided that
|
||||||
you conspicuously and appropriately publish on each copy an
|
you conspicuously and appropriately publish on each copy an
|
||||||
|
|
@ -255,7 +268,7 @@ distribute the object code for the work under the terms of Section 6.
|
||||||
Any executables containing that work also fall under Section 6,
|
Any executables containing that work also fall under Section 6,
|
||||||
whether or not they are linked directly with the Library itself.
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also compile or
|
6. As an exception to the Sections above, you may also combine or
|
||||||
link a "work that uses the Library" with the Library to produce a
|
link a "work that uses the Library" with the Library to produce a
|
||||||
work containing portions of the Library, and distribute that work
|
work containing portions of the Library, and distribute that work
|
||||||
under terms of your choice, provided that the terms permit
|
under terms of your choice, provided that the terms permit
|
||||||
|
|
@ -282,23 +295,31 @@ of these things:
|
||||||
Library will not necessarily be able to recompile the application
|
Library will not necessarily be able to recompile the application
|
||||||
to use the modified definitions.)
|
to use the modified definitions.)
|
||||||
|
|
||||||
b) Accompany the work with a written offer, valid for at
|
b) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (1) uses at run time a
|
||||||
|
copy of the library already present on the user's computer system,
|
||||||
|
rather than copying library functions into the executable, and (2)
|
||||||
|
will operate properly with a modified version of the library, if
|
||||||
|
the user installs one, as long as the modified version is
|
||||||
|
interface-compatible with the version that the work was made with.
|
||||||
|
|
||||||
|
c) Accompany the work with a written offer, valid for at
|
||||||
least three years, to give the same user the materials
|
least three years, to give the same user the materials
|
||||||
specified in Subsection 6a, above, for a charge no more
|
specified in Subsection 6a, above, for a charge no more
|
||||||
than the cost of performing this distribution.
|
than the cost of performing this distribution.
|
||||||
|
|
||||||
c) If distribution of the work is made by offering access to copy
|
d) If distribution of the work is made by offering access to copy
|
||||||
from a designated place, offer equivalent access to copy the above
|
from a designated place, offer equivalent access to copy the above
|
||||||
specified materials from the same place.
|
specified materials from the same place.
|
||||||
|
|
||||||
d) Verify that the user has already received a copy of these
|
e) Verify that the user has already received a copy of these
|
||||||
materials or that you have already sent this user a copy.
|
materials or that you have already sent this user a copy.
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the
|
For an executable, the required form of the "work that uses the
|
||||||
Library" must include any data and utility programs needed for
|
Library" must include any data and utility programs needed for
|
||||||
reproducing the executable from it. However, as a special exception,
|
reproducing the executable from it. However, as a special exception,
|
||||||
the source code distributed need not include anything that is normally
|
the materials to be distributed need not include anything that is
|
||||||
distributed (in either source or binary form) with the major
|
normally distributed (in either source or binary form) with the major
|
||||||
components (compiler, kernel, and so on) of the operating system on
|
components (compiler, kernel, and so on) of the operating system on
|
||||||
which the executable runs, unless that component itself accompanies
|
which the executable runs, unless that component itself accompanies
|
||||||
the executable.
|
the executable.
|
||||||
|
|
@ -347,7 +368,7 @@ Library), the recipient automatically receives a license from the
|
||||||
original licensor to copy, distribute, link with or modify the Library
|
original licensor to copy, distribute, link with or modify the Library
|
||||||
subject to these terms and conditions. You may not impose any further
|
subject to these terms and conditions. You may not impose any further
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
You are not responsible for enforcing compliance by third parties to
|
You are not responsible for enforcing compliance by third parties with
|
||||||
this License.
|
this License.
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
11. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
|
@ -390,7 +411,7 @@ excluded. In such case, this License incorporates the limitation as if
|
||||||
written in the body of this License.
|
written in the body of this License.
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new
|
13. The Free Software Foundation may publish revised and/or new
|
||||||
versions of the Library General Public License from time to time.
|
versions of the Lesser General Public License from time to time.
|
||||||
Such new versions will be similar in spirit to the present version,
|
Such new versions will be similar in spirit to the present version,
|
||||||
but may differ in detail to address new problems or concerns.
|
but may differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
|
@ -411,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
|
||||||
of all derivatives of our free software and of promoting the sharing
|
of all derivatives of our free software and of promoting the sharing
|
||||||
and reuse of software generally.
|
and reuse of software generally.
|
||||||
|
|
||||||
NO WARRANTY
|
NO WARRANTY
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
|
|
@ -434,9 +455,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGES.
|
DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
Appendix: How to Apply These Terms to Your New Libraries
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
If you develop a new library, and you want it to be of the greatest
|
||||||
possible use to the public, we recommend making it free software that
|
possible use to the public, we recommend making it free software that
|
||||||
|
|
@ -453,18 +474,18 @@ convey the exclusion of warranty; and each file should have at least the
|
||||||
Copyright (C) <year> <name of author>
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Library General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library; if not, write to the Free
|
License along with this library; if not, write to the Free Software
|
||||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
|
|
||||||
18
INSTALL
18
INSTALL
|
|
@ -127,9 +127,6 @@ Emscripten target is a little fickle so keep in mind that:
|
||||||
- to build emscripten you need to use their SDK that provides the toolchain, and
|
- to build emscripten you need to use their SDK that provides the toolchain, and
|
||||||
set the environment variable EMSDK_PATH
|
set the environment variable EMSDK_PATH
|
||||||
|
|
||||||
- the optimization level -O0 is forced because otherwsise binaryen miscompiles
|
|
||||||
ECL
|
|
||||||
|
|
||||||
1. Build the host ECL
|
1. Build the host ECL
|
||||||
|
|
||||||
#+begin_src shell-script
|
#+begin_src shell-script
|
||||||
|
|
@ -166,21 +163,20 @@ After that activate the toolchain and configure build flags:
|
||||||
--build=x86_64-pc-linux-gnu \
|
--build=x86_64-pc-linux-gnu \
|
||||||
--with-cross-config=`pwd`/src/util/wasm32-unknown-emscripten.cross_config \
|
--with-cross-config=`pwd`/src/util/wasm32-unknown-emscripten.cross_config \
|
||||||
--prefix=`pwd`/ecl-emscripten \
|
--prefix=`pwd`/ecl-emscripten \
|
||||||
--disable-shared \
|
|
||||||
--with-tcp=no \
|
--with-tcp=no \
|
||||||
--with-cmp=no
|
--with-cmp=no
|
||||||
|
|
||||||
emmake make && emmake make install
|
emmake make && emmake make install
|
||||||
|
|
||||||
# some files need to be copied manually
|
# some files need to be copied manually
|
||||||
cp build/bin/ecl.js build/bin/ecl.wasm ecl-emscripten/bin
|
cp build/bin/ecl.js build/bin/ecl.wasm ecl-emscripten/
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
4. ECL may be hosted on a web page. Assuming that you have quicklisp installed:
|
4. ECL may be hosted on a web page. Assuming that you have quicklisp installed:
|
||||||
|
|
||||||
#+begin_src shell-script
|
#+begin_src shell-script
|
||||||
export WEBSERVER=`pwd`/src/util/webserver.lisp
|
export WEBSERVER=`pwd`/src/util/webserver.lisp
|
||||||
pushd ecl-emscripten/bin
|
pushd ecl-emscripten/
|
||||||
lisp --load $WEBSERVER
|
lisp --load $WEBSERVER
|
||||||
# After the server is loaded run:
|
# After the server is loaded run:
|
||||||
# firefox localhost:8888/ecl.html
|
# firefox localhost:8888/ecl.html
|
||||||
|
|
@ -189,3 +185,13 @@ After that activate the toolchain and configure build flags:
|
||||||
|
|
||||||
If the output does not show on the webpage then open the javascript console.
|
If the output does not show on the webpage then open the javascript console.
|
||||||
This is a default html website produced by emscripten.
|
This is a default html website produced by emscripten.
|
||||||
|
|
||||||
|
5. Build an external program linked against libecl.so
|
||||||
|
|
||||||
|
The default stack size proposed by emscripten is 64KB. This is too little for
|
||||||
|
ECL, so when you build a program that is linked against libecl.so, then it is
|
||||||
|
imoprtant to specify a different size. For example:
|
||||||
|
|
||||||
|
#+begin_src shell-script
|
||||||
|
emcc program.c -sSTACK_SIZE=1048576 libecl.so -I./ -o program.o
|
||||||
|
#+end_src
|
||||||
|
|
|
||||||
22
LICENSE
22
LICENSE
|
|
@ -1,25 +1,25 @@
|
||||||
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
|
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
|
||||||
|
|
||||||
Copyright (c) 2019 Daniel Kochmański and Marius Gerbershagen
|
Copyright (c) 2019-2024 Daniel Kochmański and Marius Gerbershagen
|
||||||
Copyright (c) 2015-2018, Daniel Kochmański
|
Copyright (c) 2015-2018, Daniel Kochmański
|
||||||
Copyright (c) 2000-2013, Juan Jose Garcia Ripoll
|
Copyright (c) 2000-2013, Juan Jose Garcia Ripoll
|
||||||
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
|
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
|
||||||
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
|
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
|
||||||
All Rights Reserved
|
All Rights Reserved
|
||||||
|
|
||||||
ECL is free software; you can redistribute it and/or modify it
|
ECL is free software; you can redistribute it and/or
|
||||||
under the terms of the GNU Library General Public License as published
|
modify it under the terms of the GNU Lesser General Public
|
||||||
by the Free Software Foundation; either version 2 of the License, or
|
License as published by the Free Software Foundation; either
|
||||||
(at your option) any later version; see file 'Copying'.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
GNU Library General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public License
|
You should have received a copy of the GNU Lesser General Public
|
||||||
along with this program; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
PLEASE NOTE THAT:
|
PLEASE NOTE THAT:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,8 @@ INSTALL_TARGET = @INSTALL_TARGET@
|
||||||
|
|
||||||
install: build/Makefile
|
install: build/Makefile
|
||||||
cd build; $(MAKE) $(INSTALL_TARGET)
|
cd build; $(MAKE) $(INSTALL_TARGET)
|
||||||
|
flatinstall: build/Makefile
|
||||||
|
cd build; $(MAKE) flatinstall
|
||||||
uninstall:
|
uninstall:
|
||||||
cd build; $(MAKE) uninstall
|
cd build; $(MAKE) uninstall
|
||||||
|
|
||||||
|
|
@ -115,6 +117,9 @@ realclean: distclean
|
||||||
check:
|
check:
|
||||||
cd build && $(MAKE) check TESTS="$(TESTS)"
|
cd build && $(MAKE) check TESTS="$(TESTS)"
|
||||||
|
|
||||||
|
ansi-test:
|
||||||
|
cd build && $(MAKE) ansi-test
|
||||||
|
|
||||||
# ==================== Various means of distribution ====================
|
# ==================== Various means of distribution ====================
|
||||||
|
|
||||||
TAR_DIR=ecl-$(VERSION)
|
TAR_DIR=ecl-$(VERSION)
|
||||||
|
|
|
||||||
|
|
@ -122,8 +122,8 @@
|
||||||
(write binary :stream sout :circle t :escape t :readably t :pretty nil))
|
(write binary :stream sout :circle t :escape t :readably t :pretty nil))
|
||||||
(terpri sout)))))
|
(terpri sout)))))
|
||||||
(when load
|
(when load
|
||||||
(load output-file :verbose *compile-verbose*))
|
(si::load-bytecodes output-file *compile-verbose* *load-print* :default))
|
||||||
(values output-file nil nil))
|
(values (truename output-file) nil nil))
|
||||||
|
|
||||||
(defun install-bytecodes-compiler ()
|
(defun install-bytecodes-compiler ()
|
||||||
(ext::package-lock (find-package :cl) nil)
|
(ext::package-lock (find-package :cl) nil)
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ srcdir = ..\src
|
||||||
|
|
||||||
SHORT_SITE_NAME =
|
SHORT_SITE_NAME =
|
||||||
LONG_SITE_NAME =
|
LONG_SITE_NAME =
|
||||||
ECL_VERSION = 23.9.9
|
ECL_VERSION = 24.5.10
|
||||||
ECL_VERSION_NUMBER= 230909
|
ECL_VERSION_NUMBER= 240510
|
||||||
ARCHITECTURE = PENTIUM4
|
ARCHITECTURE = PENTIUM4
|
||||||
SOFTWARE_TYPE = NT
|
SOFTWARE_TYPE = NT
|
||||||
SOFTWARE_VERSION = 5.0
|
SOFTWARE_VERSION = 5.0
|
||||||
|
|
@ -274,6 +274,7 @@ compile.lsp: bare.lsp $(srcdir)/compile.lsp.in Makefile
|
||||||
"@LDFLAGS@" "$(LDFLAGS)" \
|
"@LDFLAGS@" "$(LDFLAGS)" \
|
||||||
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
||||||
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
||||||
|
"@PROGRAM_LDFLAGS@" "" \
|
||||||
"@CLIBS@" "$(CLIBS)" \
|
"@CLIBS@" "$(CLIBS)" \
|
||||||
"@STATICLIBS@" "$(STATICLIBS)" \
|
"@STATICLIBS@" "$(STATICLIBS)" \
|
||||||
"@LIBS@" "$(LIBS)" \
|
"@LIBS@" "$(LIBS)" \
|
||||||
|
|
@ -316,6 +317,7 @@ cmp/cmpdefs.lsp: $(srcdir)/cmp/cmpdefs.lsp Makefile
|
||||||
"@LDFLAGS@" "$(LDFLAGS)" \
|
"@LDFLAGS@" "$(LDFLAGS)" \
|
||||||
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
"@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
||||||
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
"@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
|
||||||
|
"@PROGRAM_LDFLAGS@" "" \
|
||||||
"@CLIBS@" "$(CLIBS)" \
|
"@CLIBS@" "$(CLIBS)" \
|
||||||
"@STATICLIBS@" "$(STATICLIBS)" \
|
"@STATICLIBS@" "$(STATICLIBS)" \
|
||||||
"@OBJEXT@" "obj" \
|
"@OBJEXT@" "obj" \
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,12 @@
|
||||||
/*
|
/*
|
||||||
config.h.in -- Template configuration file.
|
* Copyright (c) 1990, Giuseppe Attardi.
|
||||||
*/
|
* Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
/*
|
*
|
||||||
Copyright (c) 1990, Giuseppe Attardi.
|
* See file 'LICENSE' for the copyright details.
|
||||||
Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
ECoLisp is free software; you can redistribute it and/or
|
/* config.h.in -- Template configuration file. */
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
See file '../Copyright' for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ECL_MS_WINDOWS_HOST
|
#define ECL_MS_WINDOWS_HOST
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ IF NOT "%1" == "" (
|
||||||
goto LOOP
|
goto LOOP
|
||||||
)
|
)
|
||||||
|
|
||||||
IF %CMDTYPE% == --compile (
|
IF "%CMDTYPE%" == "--compile" (
|
||||||
cl @ECL_CFLAGS@ -I@includedir@ %CMDARGS%
|
cl @ECL_CFLAGS@ -I@includedir@ %CMDARGS%
|
||||||
GOTO END
|
GOTO END
|
||||||
) ELSE IF %CMDTYPE% == --link (
|
) ELSE IF "%CMDTYPE%" == "--link" (
|
||||||
cl %CMDARGS% @LDFLAGS@ @libdir@/ecl.lib
|
cl %CMDARGS% @LDFLAGS@ @libdir@/ecl.lib
|
||||||
GOTO END
|
GOTO END
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
REM Script converted from ecl-config
|
REM Script converted from ecl-config
|
||||||
REM (Michael Goffioul)
|
REM (Michael Goffioul)
|
||||||
|
|
||||||
IF %1 == --cflags (
|
IF "%1" == "--cflags" (
|
||||||
ECHO @ECL_CFLAGS@ -I@includedir@
|
ECHO @ECL_CFLAGS@ -I@includedir@
|
||||||
GOTO END
|
GOTO END
|
||||||
) ELSE IF %1 == --libs (
|
) ELSE IF "%1" == "--libs" (
|
||||||
ECHO @LDFLAGS@ /link /LIBPATH:@libdir@ ecl.lib @CLIBS@
|
ECHO @LDFLAGS@ /link /LIBPATH:@libdir@ ecl.lib @CLIBS@
|
||||||
GOTO END
|
GOTO END
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,9 @@ test_changes:
|
||||||
check:
|
check:
|
||||||
cd tests && $(MAKE) clean && $(MAKE) check TESTS="$(TESTS)"
|
cd tests && $(MAKE) clean && $(MAKE) check TESTS="$(TESTS)"
|
||||||
|
|
||||||
|
ansi-test:
|
||||||
|
cd tests && $(MAKE) clean && $(MAKE) ansi-test
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rebuild ECL using its own image and compare. Does not work
|
# Rebuild ECL using its own image and compare. Does not work
|
||||||
# right now.
|
# right now.
|
||||||
|
|
|
||||||
5
src/aclocal.m4
vendored
5
src/aclocal.m4
vendored
|
|
@ -533,6 +533,11 @@ case "${host}" in
|
||||||
enable_threads='no'
|
enable_threads='no'
|
||||||
enable_libffi='no'
|
enable_libffi='no'
|
||||||
enable_gmp='portable'
|
enable_gmp='portable'
|
||||||
|
with_c_gmp=yes
|
||||||
|
SHARED_LDFLAGS="-shared -sSIDE_MODULE ${LDFLAGS}"
|
||||||
|
BUNDLE_LDFLAGS="-shared -sSIDE_MODULE ${LDFLAGS}"
|
||||||
|
PROGRAM_LDFLAGS="-sMAIN_MODULE -sERROR_ON_UNDEFINED_SYMBOLS=0 ${LDFLAGS}"
|
||||||
|
INSTALL_TARGET='flatinstall'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -760,10 +760,15 @@ init_alloc(void)
|
||||||
* the begining or to the first byte.
|
* the begining or to the first byte.
|
||||||
* 3) Out of the incremental garbage collector, we only use the
|
* 3) Out of the incremental garbage collector, we only use the
|
||||||
* generational component.
|
* generational component.
|
||||||
|
* 4) GC should handle fork() which is used to run subprocess on
|
||||||
|
* some platforms.
|
||||||
*/
|
*/
|
||||||
GC_set_no_dls(1);
|
GC_set_no_dls(1);
|
||||||
GC_set_all_interior_pointers(0);
|
GC_set_all_interior_pointers(0);
|
||||||
GC_set_time_limit(GC_TIME_UNLIMITED);
|
GC_set_time_limit(GC_TIME_UNLIMITED);
|
||||||
|
#ifndef ECL_MS_WINDOWS_HOST
|
||||||
|
GC_set_handle_fork(1);
|
||||||
|
#endif
|
||||||
GC_init();
|
GC_init();
|
||||||
#ifdef ECL_THREADS
|
#ifdef ECL_THREADS
|
||||||
# if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1
|
# if GC_VERSION_MAJOR > 7 || GC_VERSION_MINOR > 1
|
||||||
|
|
|
||||||
|
|
@ -2,18 +2,13 @@
|
||||||
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
fpe_none.c -- Nonportable component of the floating point code (dummy)
|
* fpe_none.c -- Nonportable component of the floating point code (dummy)
|
||||||
*/
|
*
|
||||||
/*
|
* Copyright (c) 2005, Juan Jose Garcia Ripoll.
|
||||||
Copyright (c) 2005, Juan Jose Garcia Ripoll.
|
*
|
||||||
|
* See file 'LICENSE' for the copyright details.
|
||||||
ECL is free software; you can redistribute it and/or
|
*
|
||||||
modify it under the terms of the GNU Library General Public
|
*/
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
See file '../Copyright' for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The ecl_detect_fpe() is a macro (or a function) that detects whether a
|
* The ecl_detect_fpe() is a macro (or a function) that detects whether a
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,16 @@
|
||||||
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
fpe_x86.c -- Nonportable component of the floating point code
|
* fpe_x86.c -- Nonportable component of the floating point code
|
||||||
*/
|
*
|
||||||
/*
|
* Copyright (c) 2005, Juan Jose Garcia Ripoll.
|
||||||
Copyright (c) 2005, Juan Jose Garcia Ripoll.
|
*
|
||||||
|
* See file 'LICENSE' for the copyright details.
|
||||||
ECL is free software; you can redistribute it and/or
|
*
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
See file '../Copyright' for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* See fpe_none.c for a description
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* See fpe_none.c for a description. */
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# ifdef _WIN64
|
# ifdef _WIN64
|
||||||
# error "This file shouldn't have been included!"
|
# error "This file shouldn't have been included!"
|
||||||
|
|
|
||||||
324
src/c/file.d
324
src/c/file.d
|
|
@ -224,6 +224,20 @@ not_output_finish_output(cl_object strm)
|
||||||
not_an_output_stream(strm);
|
not_an_output_stream(strm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
not_output_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
not_an_output_stream(strm);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
not_file_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
not_a_file_stream(strm);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
unknown_column(cl_object strm)
|
unknown_column(cl_object strm)
|
||||||
{
|
{
|
||||||
|
|
@ -1158,6 +1172,51 @@ utf_8_encoder(cl_object stream, unsigned char *buffer, ecl_character c)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static cl_index
|
||||||
|
compute_char_size(cl_object stream, ecl_character c)
|
||||||
|
{
|
||||||
|
unsigned char buffer[5];
|
||||||
|
int l = 0;
|
||||||
|
if (c == ECL_CHAR_CODE_NEWLINE) {
|
||||||
|
int flags = stream->stream.flags;
|
||||||
|
if (flags & ECL_STREAM_CR) {
|
||||||
|
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_RETURN);
|
||||||
|
if (flags & ECL_STREAM_LF)
|
||||||
|
l += stream->stream.encoder(stream, buffer,
|
||||||
|
ECL_CHAR_CODE_LINEFEED);
|
||||||
|
} else {
|
||||||
|
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_LINEFEED);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
l += stream->stream.encoder(stream, buffer, c);
|
||||||
|
}
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
file_string_length(cl_object stream, cl_object string)
|
||||||
|
{
|
||||||
|
cl_fixnum l = 0;
|
||||||
|
switch (ecl_t_of(string)) {
|
||||||
|
#ifdef ECL_UNICODE
|
||||||
|
case t_string:
|
||||||
|
#endif
|
||||||
|
case t_base_string: {
|
||||||
|
cl_index i;
|
||||||
|
for (i = 0; i < string->base_string.fillp; i++) {
|
||||||
|
l += compute_char_size(stream, ecl_char(string, i));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case t_character:
|
||||||
|
l = compute_char_size(stream, ECL_CHAR_CODE(string));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
|
||||||
|
}
|
||||||
|
return ecl_make_fixnum(l);
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* CLOS STREAMS
|
* CLOS STREAMS
|
||||||
*/
|
*/
|
||||||
|
|
@ -1313,7 +1372,11 @@ clos_stream_element_type(cl_object strm)
|
||||||
return _ecl_funcall2(@'gray::stream-element-type', strm);
|
return _ecl_funcall2(@'gray::stream-element-type', strm);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define clos_stream_length not_a_file_stream
|
static cl_object
|
||||||
|
clos_stream_length(cl_object strm)
|
||||||
|
{
|
||||||
|
return _ecl_funcall2(@'gray::stream-file-length', strm);
|
||||||
|
}
|
||||||
|
|
||||||
static cl_object
|
static cl_object
|
||||||
clos_stream_get_position(cl_object strm)
|
clos_stream_get_position(cl_object strm)
|
||||||
|
|
@ -1327,6 +1390,12 @@ clos_stream_set_position(cl_object strm, cl_object pos)
|
||||||
return _ecl_funcall3(@'gray::stream-file-position', strm, pos);
|
return _ecl_funcall3(@'gray::stream-file-position', strm, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
clos_stream_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
return _ecl_funcall3(@'gray::stream-file-string-length', strm, string);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
clos_stream_column(cl_object strm)
|
clos_stream_column(cl_object strm)
|
||||||
{
|
{
|
||||||
|
|
@ -1334,6 +1403,18 @@ clos_stream_column(cl_object strm)
|
||||||
return Null(col)? -1 : ecl_to_size(ecl_floor1(col));
|
return Null(col)? -1 : ecl_to_size(ecl_floor1(col));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
clos_stream_pathname(cl_object strm)
|
||||||
|
{
|
||||||
|
return _ecl_funcall2(@'gray::pathname', strm);
|
||||||
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
clos_stream_truename(cl_object strm)
|
||||||
|
{
|
||||||
|
return _ecl_funcall2(@'gray::truename', strm);
|
||||||
|
}
|
||||||
|
|
||||||
static cl_object
|
static cl_object
|
||||||
clos_stream_close(cl_object strm)
|
clos_stream_close(cl_object strm)
|
||||||
{
|
{
|
||||||
|
|
@ -1369,7 +1450,12 @@ const struct ecl_file_ops clos_stream_ops = {
|
||||||
clos_stream_length,
|
clos_stream_length,
|
||||||
clos_stream_get_position,
|
clos_stream_get_position,
|
||||||
clos_stream_set_position,
|
clos_stream_set_position,
|
||||||
|
clos_stream_string_length,
|
||||||
clos_stream_column,
|
clos_stream_column,
|
||||||
|
|
||||||
|
clos_stream_pathname,
|
||||||
|
clos_stream_truename,
|
||||||
|
|
||||||
clos_stream_close
|
clos_stream_close
|
||||||
};
|
};
|
||||||
#endif /* ECL_CLOS_STREAMS */
|
#endif /* ECL_CLOS_STREAMS */
|
||||||
|
|
@ -1401,6 +1487,26 @@ str_out_get_position(cl_object strm)
|
||||||
return ecl_make_unsigned_integer(STRING_OUTPUT_STRING(strm)->base_string.fillp);
|
return ecl_make_unsigned_integer(STRING_OUTPUT_STRING(strm)->base_string.fillp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
str_out_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
cl_fixnum l = 0;
|
||||||
|
switch (ecl_t_of(string)) {
|
||||||
|
#ifdef ECL_UNICODE
|
||||||
|
case t_string:
|
||||||
|
#endif
|
||||||
|
case t_base_string:
|
||||||
|
l = string->base_string.fillp;
|
||||||
|
break;
|
||||||
|
case t_character:
|
||||||
|
l = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
|
||||||
|
}
|
||||||
|
return ecl_make_fixnum(l);
|
||||||
|
}
|
||||||
|
|
||||||
static cl_object
|
static cl_object
|
||||||
str_out_set_position(cl_object strm, cl_object pos)
|
str_out_set_position(cl_object strm, cl_object pos)
|
||||||
{
|
{
|
||||||
|
|
@ -1450,7 +1556,12 @@ const struct ecl_file_ops str_out_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
str_out_get_position,
|
str_out_get_position,
|
||||||
str_out_set_position,
|
str_out_set_position,
|
||||||
|
str_out_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
generic_close
|
generic_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1638,7 +1749,12 @@ const struct ecl_file_ops str_in_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
str_in_get_position,
|
str_in_get_position,
|
||||||
str_in_set_position,
|
str_in_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
generic_close
|
generic_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1834,7 +1950,12 @@ const struct ecl_file_ops two_way_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
not_file_string_length,
|
||||||
two_way_column,
|
two_way_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
two_way_close
|
two_way_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1971,6 +2092,15 @@ broadcast_set_position(cl_object strm, cl_object pos)
|
||||||
return ecl_file_position_set(ECL_CONS_CAR(l), pos);
|
return ecl_file_position_set(ECL_CONS_CAR(l), pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
broadcast_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
cl_object l = BROADCAST_STREAM_LIST(strm);
|
||||||
|
if (Null(l))
|
||||||
|
return ecl_make_fixnum(1);
|
||||||
|
return ecl_file_string_length(ECL_CONS_CAR(ecl_last(l, 1)), string);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
broadcast_column(cl_object strm)
|
broadcast_column(cl_object strm)
|
||||||
{
|
{
|
||||||
|
|
@ -2018,7 +2148,12 @@ const struct ecl_file_ops broadcast_ops = {
|
||||||
broadcast_length,
|
broadcast_length,
|
||||||
broadcast_get_position,
|
broadcast_get_position,
|
||||||
broadcast_set_position,
|
broadcast_set_position,
|
||||||
|
broadcast_string_length,
|
||||||
broadcast_column,
|
broadcast_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
broadcast_close
|
broadcast_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2203,7 +2338,12 @@ const struct ecl_file_ops echo_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
not_file_string_length,
|
||||||
echo_column,
|
echo_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
echo_close
|
echo_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2349,7 +2489,12 @@ const struct ecl_file_ops concatenated_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
concatenated_close
|
concatenated_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2523,12 +2668,30 @@ synonym_set_position(cl_object strm, cl_object pos)
|
||||||
return ecl_file_position_set(SYNONYM_STREAM_STREAM(strm), pos);
|
return ecl_file_position_set(SYNONYM_STREAM_STREAM(strm), pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
synonym_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
return ecl_file_string_length(SYNONYM_STREAM_STREAM(strm), string);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
synonym_column(cl_object strm)
|
synonym_column(cl_object strm)
|
||||||
{
|
{
|
||||||
return ecl_file_column(SYNONYM_STREAM_STREAM(strm));
|
return ecl_file_column(SYNONYM_STREAM_STREAM(strm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
synonym_pathname(cl_object strm)
|
||||||
|
{
|
||||||
|
return ecl_stream_pathname(SYNONYM_STREAM_STREAM(strm));
|
||||||
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
synonym_truename(cl_object strm)
|
||||||
|
{
|
||||||
|
return ecl_stream_truename(SYNONYM_STREAM_STREAM(strm));
|
||||||
|
}
|
||||||
|
|
||||||
const struct ecl_file_ops synonym_ops = {
|
const struct ecl_file_ops synonym_ops = {
|
||||||
synonym_write_byte8,
|
synonym_write_byte8,
|
||||||
synonym_read_byte8,
|
synonym_read_byte8,
|
||||||
|
|
@ -2558,7 +2721,12 @@ const struct ecl_file_ops synonym_ops = {
|
||||||
synonym_length,
|
synonym_length,
|
||||||
synonym_get_position,
|
synonym_get_position,
|
||||||
synonym_set_position,
|
synonym_set_position,
|
||||||
|
synonym_string_length,
|
||||||
synonym_column,
|
synonym_column,
|
||||||
|
|
||||||
|
synonym_pathname,
|
||||||
|
synonym_truename,
|
||||||
|
|
||||||
generic_close
|
generic_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3053,6 +3221,18 @@ io_file_write_vector(cl_object strm, cl_object data, cl_index start, cl_index en
|
||||||
return generic_write_vector(strm, data, start, end);
|
return generic_write_vector(strm, data, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
io_file_pathname(cl_object strm)
|
||||||
|
{
|
||||||
|
return IO_STREAM_FILENAME(strm);
|
||||||
|
}
|
||||||
|
|
||||||
|
static cl_object
|
||||||
|
io_file_truename(cl_object strm)
|
||||||
|
{
|
||||||
|
return cl_truename(IO_STREAM_FILENAME(strm));
|
||||||
|
}
|
||||||
|
|
||||||
const struct ecl_file_ops io_file_ops = {
|
const struct ecl_file_ops io_file_ops = {
|
||||||
io_file_write_byte8,
|
io_file_write_byte8,
|
||||||
io_file_read_byte8,
|
io_file_read_byte8,
|
||||||
|
|
@ -3082,7 +3262,12 @@ const struct ecl_file_ops io_file_ops = {
|
||||||
io_file_length,
|
io_file_length,
|
||||||
io_file_get_position,
|
io_file_get_position,
|
||||||
io_file_set_position,
|
io_file_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_file_close
|
io_file_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3115,7 +3300,12 @@ const struct ecl_file_ops output_file_ops = {
|
||||||
io_file_length,
|
io_file_length,
|
||||||
io_file_get_position,
|
io_file_get_position,
|
||||||
io_file_set_position,
|
io_file_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_file_close
|
io_file_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3148,7 +3338,12 @@ const struct ecl_file_ops input_file_ops = {
|
||||||
io_file_length,
|
io_file_length,
|
||||||
io_file_get_position,
|
io_file_get_position,
|
||||||
io_file_set_position,
|
io_file_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_file_close
|
io_file_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3734,7 +3929,12 @@ const struct ecl_file_ops io_stream_ops = {
|
||||||
io_stream_length,
|
io_stream_length,
|
||||||
io_stream_get_position,
|
io_stream_get_position,
|
||||||
io_stream_set_position,
|
io_stream_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_stream_close
|
io_stream_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3767,7 +3967,12 @@ const struct ecl_file_ops output_stream_ops = {
|
||||||
io_stream_length,
|
io_stream_length,
|
||||||
io_stream_get_position,
|
io_stream_get_position,
|
||||||
io_stream_set_position,
|
io_stream_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_stream_close
|
io_stream_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3800,7 +4005,12 @@ const struct ecl_file_ops input_stream_ops = {
|
||||||
io_stream_length,
|
io_stream_length,
|
||||||
io_stream_get_position,
|
io_stream_get_position,
|
||||||
io_stream_set_position,
|
io_stream_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
io_stream_close
|
io_stream_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3944,8 +4154,12 @@ const struct ecl_file_ops winsock_stream_io_ops = {
|
||||||
not_a_file_stream,
|
not_a_file_stream,
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
winsock_stream_close
|
winsock_stream_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3978,8 +4192,12 @@ const struct ecl_file_ops winsock_stream_output_ops = {
|
||||||
not_a_file_stream,
|
not_a_file_stream,
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
winsock_stream_close
|
winsock_stream_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4012,8 +4230,12 @@ const struct ecl_file_ops winsock_stream_input_ops = {
|
||||||
not_a_file_stream,
|
not_a_file_stream,
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
winsock_stream_close
|
winsock_stream_close
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -4117,8 +4339,12 @@ const struct ecl_file_ops wcon_stream_io_ops = {
|
||||||
not_a_file_stream,
|
not_a_file_stream,
|
||||||
generic_always_nil, /* get_position */
|
generic_always_nil, /* get_position */
|
||||||
generic_set_position,
|
generic_set_position,
|
||||||
|
file_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
io_file_pathname,
|
||||||
|
io_file_truename,
|
||||||
|
|
||||||
generic_close,
|
generic_close,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4312,7 +4538,7 @@ ecl_make_stream_from_FILE(cl_object fname, void *f, enum ecl_smmode smm,
|
||||||
FEerror("Not a valid mode ~D for ecl_make_stream_from_FILE", 1, ecl_make_fixnum(smm));
|
FEerror("Not a valid mode ~D for ecl_make_stream_from_FILE", 1, ecl_make_fixnum(smm));
|
||||||
}
|
}
|
||||||
set_stream_elt_type(stream, byte_size, flags, external_format);
|
set_stream_elt_type(stream, byte_size, flags, external_format);
|
||||||
IO_STREAM_FILENAME(stream) = fname; /* not really used */
|
IO_STREAM_FILENAME(stream) = fname;
|
||||||
stream->stream.column = 0;
|
stream->stream.column = 0;
|
||||||
IO_STREAM_FILE(stream) = f;
|
IO_STREAM_FILE(stream) = f;
|
||||||
stream->stream.last_op = 0;
|
stream->stream.last_op = 0;
|
||||||
|
|
@ -4589,7 +4815,12 @@ const struct ecl_file_ops seq_in_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
seq_in_get_position,
|
seq_in_get_position,
|
||||||
seq_in_set_position,
|
seq_in_set_position,
|
||||||
|
not_output_string_length,
|
||||||
unknown_column,
|
unknown_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
generic_close
|
generic_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4794,7 +5025,12 @@ const struct ecl_file_ops seq_out_ops = {
|
||||||
not_a_file_stream, /* length */
|
not_a_file_stream, /* length */
|
||||||
seq_out_get_position,
|
seq_out_get_position,
|
||||||
seq_out_set_position,
|
seq_out_set_position,
|
||||||
|
not_output_string_length,
|
||||||
generic_column,
|
generic_column,
|
||||||
|
|
||||||
|
not_a_file_stream,
|
||||||
|
not_a_file_stream,
|
||||||
|
|
||||||
generic_close
|
generic_close
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4984,6 +5220,12 @@ ecl_file_position_set(cl_object strm, cl_object pos)
|
||||||
return stream_dispatch_table(strm)->set_position(strm, pos);
|
return stream_dispatch_table(strm)->set_position(strm, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
ecl_file_string_length(cl_object strm, cl_object string)
|
||||||
|
{
|
||||||
|
return stream_dispatch_table(strm)->string_length(strm, string);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ecl_input_stream_p(cl_object strm)
|
ecl_input_stream_p(cl_object strm)
|
||||||
{
|
{
|
||||||
|
|
@ -5008,6 +5250,18 @@ ecl_interactive_stream_p(cl_object strm)
|
||||||
return stream_dispatch_table(strm)->interactive_p(strm);
|
return stream_dispatch_table(strm)->interactive_p(strm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
ecl_stream_pathname(cl_object strm)
|
||||||
|
{
|
||||||
|
return stream_dispatch_table(strm)->pathname(strm);
|
||||||
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
ecl_stream_truename(cl_object strm)
|
||||||
|
{
|
||||||
|
return stream_dispatch_table(strm)->truename(strm);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ecl_read_char(s) tries to read a character from the stream S. It outputs
|
* ecl_read_char(s) tries to read a character from the stream S. It outputs
|
||||||
* either the code of the character read, or EOF. Whe compiled with
|
* either the code of the character read, or EOF. Whe compiled with
|
||||||
|
|
@ -5046,74 +5300,10 @@ writestr_stream(const char *s, cl_object strm)
|
||||||
si_put_buffer_string(buffer);
|
si_put_buffer_string(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cl_index
|
|
||||||
compute_char_size(cl_object stream, ecl_character c)
|
|
||||||
{
|
|
||||||
unsigned char buffer[5];
|
|
||||||
int l = 0;
|
|
||||||
if (c == ECL_CHAR_CODE_NEWLINE) {
|
|
||||||
int flags = stream->stream.flags;
|
|
||||||
if (flags & ECL_STREAM_CR) {
|
|
||||||
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_RETURN);
|
|
||||||
if (flags & ECL_STREAM_LF)
|
|
||||||
l += stream->stream.encoder(stream, buffer,
|
|
||||||
ECL_CHAR_CODE_LINEFEED);
|
|
||||||
} else {
|
|
||||||
l += stream->stream.encoder(stream, buffer, ECL_CHAR_CODE_LINEFEED);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
l += stream->stream.encoder(stream, buffer, c);
|
|
||||||
}
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
cl_object
|
cl_object
|
||||||
cl_file_string_length(cl_object stream, cl_object string)
|
cl_file_string_length(cl_object stream, cl_object string)
|
||||||
{
|
{
|
||||||
cl_fixnum l = 0;
|
@(return ecl_file_string_length(stream, string));
|
||||||
/* This is a stupid requirement from the spec. Why returning 1???
|
|
||||||
* Why not simply leaving the value unspecified, as with other
|
|
||||||
* streams one cannot write to???
|
|
||||||
*/
|
|
||||||
BEGIN:
|
|
||||||
#ifdef ECL_CLOS_STREAMS
|
|
||||||
if (ECL_INSTANCEP(stream)) {
|
|
||||||
@(return ECL_NIL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
unlikely_if (!ECL_ANSI_STREAM_P(stream)) {
|
|
||||||
FEwrong_type_only_arg(@[file-string-length], stream, @[stream]);
|
|
||||||
}
|
|
||||||
if (stream->stream.mode == ecl_smm_broadcast) {
|
|
||||||
stream = BROADCAST_STREAM_LIST(stream);
|
|
||||||
if (Null(stream)) {
|
|
||||||
@(return ecl_make_fixnum(1));
|
|
||||||
} else {
|
|
||||||
stream = ECL_CONS_CAR(ecl_last(stream, 1));
|
|
||||||
goto BEGIN;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unlikely_if (!ECL_FILE_STREAM_P(stream)) {
|
|
||||||
not_a_file_stream(stream);
|
|
||||||
}
|
|
||||||
switch (ecl_t_of(string)) {
|
|
||||||
#ifdef ECL_UNICODE
|
|
||||||
case t_string:
|
|
||||||
#endif
|
|
||||||
case t_base_string: {
|
|
||||||
cl_index i;
|
|
||||||
for (i = 0; i < string->base_string.fillp; i++) {
|
|
||||||
l += compute_char_size(stream, ecl_char(string, i));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case t_character:
|
|
||||||
l = compute_char_size(stream, ECL_CHAR_CODE(string));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FEwrong_type_nth_arg(@[file-string-length], 2, string, @[string]);
|
|
||||||
}
|
|
||||||
@(return ecl_make_fixnum(l));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cl_object
|
cl_object
|
||||||
|
|
|
||||||
81
src/c/main.d
81
src/c/main.d
|
|
@ -83,7 +83,11 @@ cl_fixnum ecl_option_values[ECL_OPT_LIMIT+1] = {
|
||||||
1, /* ECL_OPT_TRAP_SIGBUS */
|
1, /* ECL_OPT_TRAP_SIGBUS */
|
||||||
1, /* ECL_OPT_TRAP_SIGPIPE */
|
1, /* ECL_OPT_TRAP_SIGPIPE */
|
||||||
1, /* ECL_OPT_TRAP_INTERRUPT_SIGNAL */
|
1, /* ECL_OPT_TRAP_INTERRUPT_SIGNAL */
|
||||||
|
#if defined(ECL_THREADS) && defined(HAVE_SIGPROCMASK)
|
||||||
1, /* ECL_OPT_SIGNAL_HANDLING_THREAD */
|
1, /* ECL_OPT_SIGNAL_HANDLING_THREAD */
|
||||||
|
#else
|
||||||
|
0, /* ECL_OPT_SIGNAL_HANDLING_THREAD */
|
||||||
|
#endif
|
||||||
16, /* ECL_OPT_SIGNAL_QUEUE_SIZE */
|
16, /* ECL_OPT_SIGNAL_QUEUE_SIZE */
|
||||||
0, /* ECL_OPT_BOOTED */
|
0, /* ECL_OPT_BOOTED */
|
||||||
8192, /* ECL_OPT_BIND_STACK_SIZE */
|
8192, /* ECL_OPT_BIND_STACK_SIZE */
|
||||||
|
|
@ -840,83 +844,6 @@ si_argv(cl_object index)
|
||||||
FEerror("Illegal argument index: ~S.", 1, index);
|
FEerror("Illegal argument index: ~S.", 1, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
cl_object
|
|
||||||
si_getenv(cl_object var)
|
|
||||||
{
|
|
||||||
const char *value;
|
|
||||||
|
|
||||||
/* Strings have to be null terminated base strings */
|
|
||||||
var = si_copy_to_simple_base_string(var);
|
|
||||||
value = getenv((char*)var->base_string.self);
|
|
||||||
@(return ((value == NULL)? ECL_NIL : ecl_make_simple_base_string(value,-1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(HAVE_SETENV) || defined(HAVE_PUTENV)
|
|
||||||
cl_object
|
|
||||||
si_setenv(cl_object var, cl_object value)
|
|
||||||
{
|
|
||||||
const cl_env_ptr the_env = ecl_process_env();
|
|
||||||
cl_fixnum ret_val;
|
|
||||||
|
|
||||||
/* Strings have to be null terminated base strings */
|
|
||||||
var = si_copy_to_simple_base_string(var);
|
|
||||||
if (value == ECL_NIL) {
|
|
||||||
#ifdef HAVE_SETENV
|
|
||||||
/* Remove the variable when setting to nil, so that
|
|
||||||
* (si:setenv "foo" nil), then (si:getenv "foo) returns
|
|
||||||
* the right thing. */
|
|
||||||
unsetenv((char*)var->base_string.self);
|
|
||||||
#else
|
|
||||||
#if defined(ECL_MS_WINDOWS_HOST)
|
|
||||||
si_setenv(var, cl_core.null_string);
|
|
||||||
#else
|
|
||||||
putenv((char*)var->base_string.self);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
ret_val = 0;
|
|
||||||
} else {
|
|
||||||
#ifdef HAVE_SETENV
|
|
||||||
value = si_copy_to_simple_base_string(value);
|
|
||||||
ret_val = setenv((char*)var->base_string.self,
|
|
||||||
(char*)value->base_string.self, 1);
|
|
||||||
#else
|
|
||||||
value = cl_format(4, ECL_NIL, @"~A=~A", var,
|
|
||||||
value);
|
|
||||||
value = si_copy_to_simple_base_string(value);
|
|
||||||
putenv((char*)value->base_string.self);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if (ret_val == -1)
|
|
||||||
CEerror(ECL_T, "SI:SETENV failed: insufficient space in environment.",
|
|
||||||
1, ECL_NIL);
|
|
||||||
ecl_return1(the_env, value);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
cl_object
|
|
||||||
si_environ(void)
|
|
||||||
{
|
|
||||||
cl_object output = ECL_NIL;
|
|
||||||
#ifdef HAVE_ENVIRON
|
|
||||||
char **p;
|
|
||||||
extern char **environ;
|
|
||||||
for (p = environ; *p; p++) {
|
|
||||||
output = CONS(ecl_make_constant_base_string(*p,-1), output);
|
|
||||||
}
|
|
||||||
output = cl_nreverse(output);
|
|
||||||
#else
|
|
||||||
# if defined(ECL_MS_WINDOWS_HOST)
|
|
||||||
LPTCH p;
|
|
||||||
for (p = GetEnvironmentStrings(); *p; ) {
|
|
||||||
output = CONS(ecl_make_constant_base_string(p,-1), output);
|
|
||||||
do { (void)0; } while (*(p++));
|
|
||||||
}
|
|
||||||
output = cl_nreverse(output);
|
|
||||||
# endif
|
|
||||||
#endif /* HAVE_ENVIRON */
|
|
||||||
@(return output);
|
|
||||||
}
|
|
||||||
|
|
||||||
cl_object
|
cl_object
|
||||||
si_pointer(cl_object x)
|
si_pointer(cl_object x)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -746,27 +746,15 @@ cl_pathname(cl_object x)
|
||||||
x = cl_parse_namestring(1, x);
|
x = cl_parse_namestring(1, x);
|
||||||
case t_pathname:
|
case t_pathname:
|
||||||
break;
|
break;
|
||||||
case t_stream:
|
default:
|
||||||
switch ((enum ecl_smmode)x->stream.mode) {
|
if (!Null(cl_streamp(x))) {
|
||||||
case ecl_smm_input:
|
x = ecl_stream_pathname(x);
|
||||||
case ecl_smm_output:
|
|
||||||
case ecl_smm_probe:
|
|
||||||
case ecl_smm_io:
|
|
||||||
case ecl_smm_input_file:
|
|
||||||
case ecl_smm_output_file:
|
|
||||||
case ecl_smm_io_file:
|
|
||||||
x = IO_STREAM_FILENAME(x);
|
|
||||||
goto L;
|
goto L;
|
||||||
case ecl_smm_synonym:
|
} else {
|
||||||
x = SYNONYM_STREAM_STREAM(x);
|
const char *type = "(OR FILE-STREAM STRING PATHNAME)";
|
||||||
goto L;
|
FEwrong_type_only_arg(@[pathname], x, ecl_read_from_cstring(type));
|
||||||
default:
|
|
||||||
;/* Fall through to error message */
|
|
||||||
}
|
}
|
||||||
default: {
|
break;
|
||||||
const char *type = "(OR FILE-STREAM STRING PATHNAME)";
|
|
||||||
FEwrong_type_only_arg(@[pathname], x, ecl_read_from_cstring(type));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@(return x);
|
@(return x);
|
||||||
}
|
}
|
||||||
|
|
@ -785,7 +773,6 @@ cl_logical_pathname(cl_object x)
|
||||||
@(return x);
|
@(return x);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME! WILD-PATHNAME-P is missing! */
|
|
||||||
@(defun wild-pathname-p (pathname &optional component)
|
@(defun wild-pathname-p (pathname &optional component)
|
||||||
bool checked = 0;
|
bool checked = 0;
|
||||||
@
|
@
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,11 @@
|
||||||
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
/* vim: set filetype=c tabstop=8 shiftwidth=4 expandtab: */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2010, Juan Jose Garcia Ripoll.
|
* Copyright (c) 2010, Juan Jose Garcia Ripoll.
|
||||||
|
*
|
||||||
ECL is free software; you can redistribute it and/or
|
* See file 'LICENSE' for the copyright details.
|
||||||
modify it under the terms of the GNU Library General Public
|
*
|
||||||
License as published by the Free Software Foundation; either
|
*/
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
See file '../../Copyright' for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ECL_INCLUDE_MATH_H
|
#define ECL_INCLUDE_MATH_H
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
|
||||||
|
|
@ -1579,7 +1579,8 @@ do_read_delimited_list(int d, cl_object in, bool proper_list)
|
||||||
if (!ECL_ANSI_STREAM_P(strm)) {
|
if (!ECL_ANSI_STREAM_P(strm)) {
|
||||||
value0 = _ecl_funcall2(@'gray::stream-read-line', strm);
|
value0 = _ecl_funcall2(@'gray::stream-read-line', strm);
|
||||||
value1 = ecl_nth_value(the_env, 1);
|
value1 = ecl_nth_value(the_env, 1);
|
||||||
if (Null(value0) && !Null(value1)) {
|
if ((Null(value0) || (ECL_STRINGP(value0) && (ecl_length(value0) == 0))) &&
|
||||||
|
!Null(value1)) {
|
||||||
if (!Null(eof_errorp))
|
if (!Null(eof_errorp))
|
||||||
FEend_of_file(strm);
|
FEend_of_file(strm);
|
||||||
value0 = eof_value;
|
value0 = eof_value;
|
||||||
|
|
|
||||||
|
|
@ -807,7 +807,7 @@ si_set_limit(cl_object type, cl_object limit)
|
||||||
} else if (type == @'ext::lisp-stack') {
|
} else if (type == @'ext::lisp-stack') {
|
||||||
cl_index the_size = ecl_to_size(limit);
|
cl_index the_size = ecl_to_size(limit);
|
||||||
ecl_stack_set_size(env, the_size);
|
ecl_stack_set_size(env, the_size);
|
||||||
} else {
|
} else if (type == @'ext::heap-size') {
|
||||||
/*
|
/*
|
||||||
* size_t can be larger than cl_index, and ecl_to_size()
|
* size_t can be larger than cl_index, and ecl_to_size()
|
||||||
* creates a fixnum which is too small for size_t on 32-bit.
|
* creates a fixnum which is too small for size_t on 32-bit.
|
||||||
|
|
@ -823,7 +823,7 @@ cl_object
|
||||||
si_get_limit(cl_object type)
|
si_get_limit(cl_object type)
|
||||||
{
|
{
|
||||||
cl_env_ptr env = ecl_process_env();
|
cl_env_ptr env = ecl_process_env();
|
||||||
cl_index output;
|
cl_index output = 0;
|
||||||
if (type == @'ext::frame-stack')
|
if (type == @'ext::frame-stack')
|
||||||
output = env->frs_limit_size;
|
output = env->frs_limit_size;
|
||||||
else if (type == @'ext::binding-stack')
|
else if (type == @'ext::binding-stack')
|
||||||
|
|
@ -832,7 +832,7 @@ si_get_limit(cl_object type)
|
||||||
output = env->cs_limit_size;
|
output = env->cs_limit_size;
|
||||||
else if (type == @'ext::lisp-stack')
|
else if (type == @'ext::lisp-stack')
|
||||||
output = env->stack_limit_size;
|
output = env->stack_limit_size;
|
||||||
else {
|
else if (type == @'ext::heap-size') {
|
||||||
/* size_t can be larger than cl_index */
|
/* size_t can be larger than cl_index */
|
||||||
ecl_return1(env, ecl_make_unsigned_integer(cl_core.max_heap_size));
|
ecl_return1(env, ecl_make_unsigned_integer(cl_core.max_heap_size));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1846,6 +1846,8 @@ cl_symbols[] = {
|
||||||
{SYS_ "APPLY-FROM-STACK-FRAME" ECL_FUN("si_apply_from_stack_frame", si_apply_from_stack_frame, 2) ECL_VAR(SI_ORDINARY, OBJNULL)},
|
{SYS_ "APPLY-FROM-STACK-FRAME" ECL_FUN("si_apply_from_stack_frame", si_apply_from_stack_frame, 2) ECL_VAR(SI_ORDINARY, OBJNULL)},
|
||||||
|
|
||||||
#ifdef ECL_CLOS_STREAMS
|
#ifdef ECL_CLOS_STREAMS
|
||||||
|
{GRAY_ "PATHNAME" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
{GRAY_ "TRUENAME" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "CLOSE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "CLOSE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAMP" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAMP" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "INPUT-STREAM-P" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "INPUT-STREAM-P" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
|
@ -1856,12 +1858,15 @@ cl_symbols[] = {
|
||||||
{GRAY_ "STREAM-CLEAR-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-CLEAR-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-ELEMENT-TYPE" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-ELEMENT-TYPE" ECL_FUN(NULL, NULL, 1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-FILE-DESCRIPTOR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-FILE-DESCRIPTOR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
{GRAY_ "STREAM-FILE-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-FILE-POSITION" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-FILE-POSITION" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
{GRAY_ "STREAM-FILE-STRING-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-FINISH-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-FINISH-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-FORCE-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-FORCE-OUTPUT" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-FRESH-LINE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-FRESH-LINE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-INTERACTIVE-P" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-INTERACTIVE-P" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-LINE-COLUMN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-LINE-COLUMN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
{GRAY_ "STREAM-LINE-LENGTH" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-LISTEN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-LISTEN" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-PEEK-CHAR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-PEEK-CHAR" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
{GRAY_ "STREAM-READ-BYTE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
{GRAY_ "STREAM-READ-BYTE" ECL_FUN(NULL, NULL, -1) ECL_VAR(GRAY_ORDINARY, OBJNULL)},
|
||||||
|
|
|
||||||
|
|
@ -460,6 +460,9 @@ file_truename(cl_object pathname, cl_object filename, int flags)
|
||||||
cl_object
|
cl_object
|
||||||
cl_truename(cl_object orig_pathname)
|
cl_truename(cl_object orig_pathname)
|
||||||
{
|
{
|
||||||
|
if (!Null(cl_streamp(orig_pathname)))
|
||||||
|
@(return ecl_stream_truename(orig_pathname));
|
||||||
|
|
||||||
cl_object pathname = make_absolute_pathname(orig_pathname);
|
cl_object pathname = make_absolute_pathname(orig_pathname);
|
||||||
cl_object base_dir = make_base_pathname(pathname);
|
cl_object base_dir = make_base_pathname(pathname);
|
||||||
cl_object dir;
|
cl_object dir;
|
||||||
|
|
@ -749,10 +752,10 @@ ecl_homedir_pathname(cl_object user)
|
||||||
#ifdef HAVE_PWD_H
|
#ifdef HAVE_PWD_H
|
||||||
pwent = getpwnam(p);
|
pwent = getpwnam(p);
|
||||||
if (pwent == NULL)
|
if (pwent == NULL)
|
||||||
FEerror("Unknown user ~S.", 1, p);
|
FEerror("Unknown user ~S.", 1, user);
|
||||||
namestring = ecl_make_simple_filename(pwent->pw_dir,-1);
|
namestring = ecl_make_simple_filename(pwent->pw_dir,-1);
|
||||||
#endif
|
#endif
|
||||||
FEerror("Unknown user ~S.", 1, p);
|
FEerror("Unknown user ~S.", 1, user);
|
||||||
} else if ((h = ecl_getenv(ecl_fstr("HOME")))) {
|
} else if ((h = ecl_getenv(ecl_fstr("HOME")))) {
|
||||||
namestring = ecl_make_simple_filename(h,-1);
|
namestring = ecl_make_simple_filename(h,-1);
|
||||||
#if defined(ECL_MS_WINDOWS_HOST)
|
#if defined(ECL_MS_WINDOWS_HOST)
|
||||||
|
|
@ -1012,7 +1015,7 @@ dir_recursive(cl_object base_dir, cl_object directory, cl_object filemask, int f
|
||||||
* for the file part.
|
* for the file part.
|
||||||
*/
|
*/
|
||||||
if (Null(base_dir))
|
if (Null(base_dir))
|
||||||
return ECL_NIL;
|
return output;
|
||||||
directory = ECL_CONS_CDR(directory);
|
directory = ECL_CONS_CDR(directory);
|
||||||
goto AGAIN;
|
goto AGAIN;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1889
src/c/unixint.d
1889
src/c/unixint.d
File diff suppressed because it is too large
Load diff
|
|
@ -57,6 +57,82 @@ si_system(cl_object cmd_string)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
si_getenv(cl_object var)
|
||||||
|
{
|
||||||
|
const char *value;
|
||||||
|
|
||||||
|
/* Strings have to be null terminated base strings */
|
||||||
|
var = si_copy_to_simple_base_string(var);
|
||||||
|
value = getenv((char*)var->base_string.self);
|
||||||
|
@(return ((value == NULL)? ECL_NIL : ecl_make_simple_base_string(value,-1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_SETENV) || defined(HAVE_PUTENV)
|
||||||
|
cl_object
|
||||||
|
si_setenv(cl_object var, cl_object value)
|
||||||
|
{
|
||||||
|
const cl_env_ptr the_env = ecl_process_env();
|
||||||
|
cl_fixnum ret_val;
|
||||||
|
|
||||||
|
/* Strings have to be null terminated base strings */
|
||||||
|
var = si_copy_to_simple_base_string(var);
|
||||||
|
if (value == ECL_NIL) {
|
||||||
|
#ifdef HAVE_SETENV
|
||||||
|
/* Remove the variable when setting to nil, so that
|
||||||
|
* (si:setenv "foo" nil), then (si:getenv "foo) returns
|
||||||
|
* the right thing. */
|
||||||
|
unsetenv((char*)var->base_string.self);
|
||||||
|
#else
|
||||||
|
#if defined(ECL_MS_WINDOWS_HOST)
|
||||||
|
si_setenv(var, cl_core.null_string);
|
||||||
|
#else
|
||||||
|
putenv((char*)var->base_string.self);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
ret_val = 0;
|
||||||
|
} else {
|
||||||
|
#ifdef HAVE_SETENV
|
||||||
|
value = si_copy_to_simple_base_string(value);
|
||||||
|
ret_val = setenv((char*)var->base_string.self,
|
||||||
|
(char*)value->base_string.self, 1);
|
||||||
|
#else
|
||||||
|
value = cl_format(4, ECL_NIL, @"~A=~A", var,
|
||||||
|
value);
|
||||||
|
value = si_copy_to_simple_base_string(value);
|
||||||
|
putenv((char*)value->base_string.self);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (ret_val == -1)
|
||||||
|
CEerror(ECL_T, "SI:SETENV failed: insufficient space in environment.",
|
||||||
|
1, ECL_NIL);
|
||||||
|
ecl_return1(the_env, value);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
cl_object
|
||||||
|
si_environ(void)
|
||||||
|
{
|
||||||
|
cl_object output = ECL_NIL;
|
||||||
|
#ifdef HAVE_ENVIRON
|
||||||
|
char **p;
|
||||||
|
for (p = environ; *p; p++) {
|
||||||
|
output = CONS(ecl_make_constant_base_string(*p,-1), output);
|
||||||
|
}
|
||||||
|
output = cl_nreverse(output);
|
||||||
|
#else
|
||||||
|
# if defined(ECL_MS_WINDOWS_HOST)
|
||||||
|
LPTCH p;
|
||||||
|
for (p = GetEnvironmentStrings(); *p; ) {
|
||||||
|
output = CONS(ecl_make_constant_base_string(p,-1), output);
|
||||||
|
do { (void)0; } while (*(p++));
|
||||||
|
}
|
||||||
|
output = cl_nreverse(output);
|
||||||
|
# endif
|
||||||
|
#endif /* HAVE_ENVIRON */
|
||||||
|
@(return output);
|
||||||
|
}
|
||||||
|
|
||||||
cl_object
|
cl_object
|
||||||
si_getpid(void)
|
si_getpid(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; ECoLisp is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,8 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;
|
;;;
|
||||||
;;; conditions.lsp
|
;;; conditions.lsp
|
||||||
;;;
|
;;;
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; COMMON LISP CLASSES HIERARCHY
|
;;; COMMON LISP CLASSES HIERARCHY
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(pushnew :cdr-1 *features*)
|
(pushnew :cdr-1 *features*)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
;;;; Copyright (c) 1992, Giuseppe Attardi.o
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
;;;; Copyright (c) 1992, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "CLOS")
|
(in-package "CLOS")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2004, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2004, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;; The CLOS IO library.
|
|
||||||
|
|
||||||
(in-package "GRAY")
|
(in-package "GRAY")
|
||||||
|
|
||||||
|
|
@ -95,6 +89,11 @@
|
||||||
stream class that is defined, a method must be defined for this
|
stream class that is defined, a method must be defined for this
|
||||||
function, although it is permissible for it to always return NIL."))
|
function, although it is permissible for it to always return NIL."))
|
||||||
|
|
||||||
|
;; Extension from CLASP, CMUCL, SBCL, Mezzano and SICL
|
||||||
|
|
||||||
|
(defgeneric stream-line-length (stream)
|
||||||
|
(:documentation "Return the stream line length or NIL."))
|
||||||
|
|
||||||
(defgeneric stream-listen (stream)
|
(defgeneric stream-listen (stream)
|
||||||
#+sb-doc
|
#+sb-doc
|
||||||
(:documentation
|
(:documentation
|
||||||
|
|
@ -203,6 +202,14 @@
|
||||||
(:documentation
|
(:documentation
|
||||||
"This is like CL:FILE-POSITION, but for Gray streams."))
|
"This is like CL:FILE-POSITION, but for Gray streams."))
|
||||||
|
|
||||||
|
(defgeneric stream-file-length (stream)
|
||||||
|
(:documentation
|
||||||
|
"This is like CL:FILE-LENGTH, but for Gray streams."))
|
||||||
|
|
||||||
|
(defgeneric stream-file-string-length (stream string)
|
||||||
|
(:documentation
|
||||||
|
"This is like CL:FILE-STRING-LENGTH, but for Gray streams."))
|
||||||
|
|
||||||
(defgeneric stream-file-descriptor (stream &optional direction)
|
(defgeneric stream-file-descriptor (stream &optional direction)
|
||||||
(:documentation
|
(:documentation
|
||||||
"Return the file-descriptor underlaying STREAM, or NIL if not
|
"Return the file-descriptor underlaying STREAM, or NIL if not
|
||||||
|
|
@ -218,6 +225,14 @@
|
||||||
error is signaled. That is, users must add methods to explicitly
|
error is signaled. That is, users must add methods to explicitly
|
||||||
decline by returning NIL."))
|
decline by returning NIL."))
|
||||||
|
|
||||||
|
(defgeneric pathname (pathspec)
|
||||||
|
(:documentation
|
||||||
|
"Returns the pathname denoted by pathspec."))
|
||||||
|
|
||||||
|
(defgeneric truename (pathspec)
|
||||||
|
(:documentation
|
||||||
|
"truename tries to find the file indicated by filespec and returns its truename."))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Our class hierarchy looks like the one from Gray streams
|
;;; Our class hierarchy looks like the one from Gray streams
|
||||||
|
|
@ -407,6 +422,16 @@
|
||||||
(declare (ignore stream))
|
(declare (ignore stream))
|
||||||
nil)
|
nil)
|
||||||
|
|
||||||
|
;; LINE-LENGTH
|
||||||
|
|
||||||
|
(defmethod stream-line-length ((stream fundamental-character-output-stream))
|
||||||
|
nil)
|
||||||
|
|
||||||
|
(defmethod stream-line-length ((stream ansi-stream))
|
||||||
|
nil)
|
||||||
|
|
||||||
|
(defmethod stream-line-length ((stream t))
|
||||||
|
(bug-or-error stream 'stream-line-length))
|
||||||
|
|
||||||
;; LISTEN
|
;; LISTEN
|
||||||
|
|
||||||
|
|
@ -513,9 +538,7 @@
|
||||||
(loop
|
(loop
|
||||||
(let ((ch (stream-read-char stream)))
|
(let ((ch (stream-read-char stream)))
|
||||||
(cond ((eq ch :eof)
|
(cond ((eq ch :eof)
|
||||||
(return (values (if (zerop index)
|
(return (values (si::shrink-vector res index)
|
||||||
nil
|
|
||||||
(si::shrink-vector res index))
|
|
||||||
t)))
|
t)))
|
||||||
(t
|
(t
|
||||||
(when (char= ch #\newline)
|
(when (char= ch #\newline)
|
||||||
|
|
@ -593,6 +616,22 @@
|
||||||
(declare (ignore stream position))
|
(declare (ignore stream position))
|
||||||
nil)
|
nil)
|
||||||
|
|
||||||
|
;; FILE-LENGTH
|
||||||
|
|
||||||
|
(defmethod stream-file-length ((stream ansi-stream))
|
||||||
|
(file-length stream))
|
||||||
|
|
||||||
|
(defmethod stream-file-length ((stream t))
|
||||||
|
(error 'type-error :datum stream :expected-type 'file-stream))
|
||||||
|
|
||||||
|
;; FILE-STRING-LENGTH
|
||||||
|
|
||||||
|
(defmethod stream-file-string-length ((stream ansi-stream) string)
|
||||||
|
(file-string-length stream string))
|
||||||
|
|
||||||
|
(defmethod stream-file-string-length ((stream fundamental-character-output-stream) string)
|
||||||
|
nil)
|
||||||
|
|
||||||
;; STREAM-P
|
;; STREAM-P
|
||||||
|
|
||||||
(defmethod streamp ((stream stream))
|
(defmethod streamp ((stream stream))
|
||||||
|
|
@ -691,7 +730,8 @@
|
||||||
;; TERPRI
|
;; TERPRI
|
||||||
|
|
||||||
(defmethod stream-terpri ((stream fundamental-character-output-stream))
|
(defmethod stream-terpri ((stream fundamental-character-output-stream))
|
||||||
(stream-write-char stream #\Newline))
|
(stream-write-char stream #\Newline)
|
||||||
|
nil)
|
||||||
|
|
||||||
(defmethod stream-terpri ((stream ansi-stream))
|
(defmethod stream-terpri ((stream ansi-stream))
|
||||||
(cl:terpri stream))
|
(cl:terpri stream))
|
||||||
|
|
@ -741,12 +781,45 @@
|
||||||
(si:file-stream-fd stream))
|
(si:file-stream-fd stream))
|
||||||
|
|
||||||
|
|
||||||
|
;;; PATHNAME
|
||||||
|
|
||||||
|
(defmethod pathname ((pathspec string))
|
||||||
|
(cl:pathname pathspec))
|
||||||
|
|
||||||
|
(defmethod pathname ((pathspec cl:pathname))
|
||||||
|
pathspec)
|
||||||
|
|
||||||
|
(defmethod pathname ((pathspec ansi-stream))
|
||||||
|
(cl:pathname pathspec))
|
||||||
|
|
||||||
|
(defmethod pathname (pathspec)
|
||||||
|
(error 'type-error :datum pathspec
|
||||||
|
:expected-type '(or string cl:pathname file-stream)))
|
||||||
|
|
||||||
|
|
||||||
|
;;; TRUENAME
|
||||||
|
|
||||||
|
(defmethod truename ((filespec string))
|
||||||
|
(cl:truename filespec))
|
||||||
|
|
||||||
|
(defmethod truename ((filespec cl:pathname))
|
||||||
|
(cl:truename filespec))
|
||||||
|
|
||||||
|
(defmethod truename ((filespec ansi-stream))
|
||||||
|
(cl:truename filespec))
|
||||||
|
|
||||||
|
(defmethod truename (filespec)
|
||||||
|
(error 'type-error :datum filespec
|
||||||
|
:expected-type '(or string cl:pathname file-stream)))
|
||||||
|
|
||||||
|
|
||||||
;;; Setup
|
;;; Setup
|
||||||
|
|
||||||
(eval-when (:compile-toplevel :execute)
|
(eval-when (:compile-toplevel :execute)
|
||||||
(defconstant +conflicting-symbols+
|
(defconstant +conflicting-symbols+
|
||||||
'(cl:close cl:stream-element-type cl:input-stream-p
|
'(cl:close cl:stream-element-type cl:input-stream-p
|
||||||
cl:open-stream-p cl:output-stream-p cl:streamp)))
|
cl:open-stream-p cl:output-stream-p cl:streamp
|
||||||
|
cl:pathname cl:truename)))
|
||||||
|
|
||||||
(let ((p (find-package "GRAY")))
|
(let ((p (find-package "GRAY")))
|
||||||
(export '(nil) p)
|
(export '(nil) p)
|
||||||
|
|
@ -821,7 +894,19 @@ them so."
|
||||||
(%redefine-cl-functions 'cl:file-position
|
(%redefine-cl-functions 'cl:file-position
|
||||||
'gray:stream-file-position
|
'gray:stream-file-position
|
||||||
gray-package)
|
gray-package)
|
||||||
|
(%redefine-cl-functions 'cl:file-length
|
||||||
|
'gray:stream-file-length
|
||||||
|
gray-package)
|
||||||
(si::package-lock "COMMON-LISP" x)
|
(si::package-lock "COMMON-LISP" x)
|
||||||
|
(provide '#:gray-streams)
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
|
(pushnew :gray-streams-module *features*)
|
||||||
|
|
||||||
|
(pushnew #'(lambda (module)
|
||||||
|
(when (string-equal module '#:gray-streams)
|
||||||
|
(redefine-cl-functions)
|
||||||
|
t))
|
||||||
|
sys:*module-provider-functions*)
|
||||||
|
|
||||||
(setf clos::*clos-booted* t)
|
(setf clos::*clos-booted* t)
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,9 @@ the environment variable TMPDIR to a different value." template))
|
||||||
#+msvc
|
#+msvc
|
||||||
(defun linker-cc (o-pathname object-files &key
|
(defun linker-cc (o-pathname object-files &key
|
||||||
(type :program)
|
(type :program)
|
||||||
(ld-flags (split-program-options *ld-flags*))
|
(ld-flags (split-program-options (if (eq type :program)
|
||||||
|
*ld-program-flags*
|
||||||
|
*ld-flags*)))
|
||||||
(ld-libs (split-program-options *ld-libs*)))
|
(ld-libs (split-program-options *ld-libs*)))
|
||||||
(safe-run-program
|
(safe-run-program
|
||||||
*ld*
|
*ld*
|
||||||
|
|
@ -126,7 +128,9 @@ the environment variable TMPDIR to a different value." template))
|
||||||
#-msvc
|
#-msvc
|
||||||
(defun linker-cc (o-pathname object-files &key
|
(defun linker-cc (o-pathname object-files &key
|
||||||
(type :program)
|
(type :program)
|
||||||
(ld-flags (split-program-options *ld-flags*))
|
(ld-flags (split-program-options (if (eq type :program)
|
||||||
|
*ld-program-flags*
|
||||||
|
*ld-flags*)))
|
||||||
(ld-libs (split-program-options *ld-libs*)))
|
(ld-libs (split-program-options *ld-libs*)))
|
||||||
(declare (ignore type))
|
(declare (ignore type))
|
||||||
(safe-run-program
|
(safe-run-program
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPC-WT -- Routines for writing code to C files.
|
;;;; CMPC-WT -- Routines for writing code to C files.
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPWT Output routines.
|
;;;; CMPWT Output routines.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2003, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2003, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPDEF -- Definitions created at compile / configuration time
|
;;;; CMPDEF -- Definitions created at compile / configuration time
|
||||||
|
|
||||||
|
|
@ -62,6 +57,7 @@ coprocessor).")
|
||||||
(defvar *ld-shared-flags* "@SHARED_LDFLAGS@ @LDFLAGS@")
|
(defvar *ld-shared-flags* "@SHARED_LDFLAGS@ @LDFLAGS@")
|
||||||
#+dlopen
|
#+dlopen
|
||||||
(defvar *ld-bundle-flags* "@BUNDLE_LDFLAGS@ @LDFLAGS@")
|
(defvar *ld-bundle-flags* "@BUNDLE_LDFLAGS@ @LDFLAGS@")
|
||||||
|
(defvar *ld-program-flags* "@PROGRAM_LDFLAGS@ @LDFLAGS@")
|
||||||
|
|
||||||
(defvar +shared-library-prefix+ "@SHAREDPREFIX@")
|
(defvar +shared-library-prefix+ "@SHAREDPREFIX@")
|
||||||
(defvar +shared-library-extension+ "@SHAREDEXT@")
|
(defvar +shared-library-extension+ "@SHAREDEXT@")
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPENVAPI -- API for creating and manipulating environments
|
;;;; CMPENVAPI -- API for creating and manipulating environments
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,9 @@
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
;;;; CMPENV-DECLAIM -- Proclamations local to the current file
|
;;;; CMPENV-DECLAIM -- Proclamations local to the current file
|
||||||
;;;;
|
;;;;
|
||||||
;;;; One implementation of DECLAIM that uses the compiler environment
|
;;;; One implementation of DECLAIM that uses the compiler environment
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPENV-DECLARE -- Declarations for the compiler
|
;;;; CMPENV-DECLARE -- Declarations for the compiler
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,9 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPENV-FUN -- Declarations concerning function types and inlining
|
;;;; CMPENV-FUN -- Declarations concerning function types and inlining
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,8 @@
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPENV-PROCLAIM -- Proclamations for the compiler
|
;;;; CMPENV-PROCLAIM -- Proclamations for the compiler
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPFORM -- Internal representation of Lisp forms
|
;;;; CMPFORM -- Internal representation of Lisp forms
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPGLOBALS -- Global variables and flag definitions
|
;;;; CMPGLOBALS -- Global variables and flag definitions
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,7 @@
|
||||||
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll
|
;;;; Copyright (c) 2001, Juan Jose Garcia Ripoll
|
||||||
;;;; Copyright (c) 2015, Daniel Kochmański
|
;;;; Copyright (c) 2015, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPMAIN Compiler main program.
|
;;;; CMPMAIN Compiler main program.
|
||||||
|
|
||||||
|
|
@ -25,6 +20,7 @@
|
||||||
(type nil type-supplied-p)
|
(type nil type-supplied-p)
|
||||||
(system-p nil)
|
(system-p nil)
|
||||||
&allow-other-keys)
|
&allow-other-keys)
|
||||||
|
(setf name (pathname name))
|
||||||
(let* ((format '())
|
(let* ((format '())
|
||||||
(extension '()))
|
(extension '()))
|
||||||
(unless type-supplied-p
|
(unless type-supplied-p
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPMAP Map functions.
|
;;;; CMPMAP Map functions.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2007, Juan Jose Garcia Ripoll.
|
;;;; Copyright (c) 2007, Juan Jose Garcia Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPNAME Unambiguous init names for object files
|
;;;; CMPNAME Unambiguous init names for object files
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2010. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2010. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPOPT-CONSTANTS Constant expressions.
|
;;;; CMPOPT-CONSTANTS Constant expressions.
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPOPT-TYPE -- Optimizations for selected types of expresions
|
;;;; CMPOPT-TYPE -- Optimizations for selected types of expresions
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPFEATURES.LSP -- Gather a list of features from the compiler
|
;;;; CMPFEATURES.LSP -- Gather a list of features from the compiler
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPOS-RUN Executing auxiliary programs
|
;;;; CMPOS-RUN Executing auxiliary programs
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPDATA Data segment.
|
;;;; CMPDATA Data segment.
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,7 @@
|
||||||
|
|
||||||
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
;;;; Copyright (c) 2008. Juan Jose Garcia-Ripol
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPTYPE-ARITH -- Operations upon and among types
|
;;;; CMPTYPE-ARITH -- Operations upon and among types
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2011, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2011, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPTYPE-ASSERT Type assertions automatically generated
|
;;;; CMPTYPE-ASSERT Type assertions automatically generated
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
;;;; Copyright (c) 2009, Juan Jose Garcia-Ripoll.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPTYPE-PROP -- Type propagation basic routines and database
|
;;;; CMPTYPE-PROP -- Type propagation basic routines and database
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; CMPTYPE Type information.
|
;;;; CMPTYPE Type information.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
;;;; CMPTYPES -- Data types for the Lisp core structures
|
;;;; CMPTYPES -- Data types for the Lisp core structures
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; ECoLisp is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
(in-package "COMPILER")
|
(in-package "COMPILER")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
;;;; Copyright (c) 2010, Juan Jose Garcia-Ripoll
|
||||||
;;;; Copyright (c) 2021, Daniel Kochmański
|
;;;; Copyright (c) 2021, Daniel Kochmański
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; modify it under the terms of the GNU Library General Public
|
|
||||||
;;;; License as published by the Free Software Foundation; either
|
|
||||||
;;;; version 2 of the License, or (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
(in-package #:compiler)
|
(in-package #:compiler)
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,9 @@
|
||||||
c::*ld-shared-flags*
|
c::*ld-shared-flags*
|
||||||
"@SHARED_LDFLAGS@ @LDFLAGS@"
|
"@SHARED_LDFLAGS@ @LDFLAGS@"
|
||||||
c::*ld-bundle-flags*
|
c::*ld-bundle-flags*
|
||||||
"@BUNDLE_LDFLAGS@ @LDFLAGS@")
|
"@BUNDLE_LDFLAGS@ @LDFLAGS@"
|
||||||
|
c::*ld-program-flags*
|
||||||
|
"@PROGRAM_LDFLAGS@ @LDFLAGS@")
|
||||||
;;; FIXME: The nonstop platform does not support soname
|
;;; FIXME: The nonstop platform does not support soname
|
||||||
#+(and :wants-dlopen nonstop)
|
#+(and :wants-dlopen nonstop)
|
||||||
(setf c::*ld-libs*
|
(setf c::*ld-libs*
|
||||||
|
|
@ -182,7 +184,7 @@
|
||||||
(push "@LIBPREFIX@eclgmp.@LIBEXT@" extra-args)))
|
(push "@LIBPREFIX@eclgmp.@LIBEXT@" extra-args)))
|
||||||
(print extra-args)
|
(print extra-args)
|
||||||
(c::shared-cc (compile-file-pathname "ecl" :type :dll)
|
(c::shared-cc (compile-file-pathname "ecl" :type :dll)
|
||||||
(list* "c/main.@OBJEXT@"
|
(list* #-emscripten "c/main.@OBJEXT@"
|
||||||
"c/all_symbols2.@OBJEXT@"
|
"c/all_symbols2.@OBJEXT@"
|
||||||
"@LIBPREFIX@lsp.@LIBEXT@"
|
"@LIBPREFIX@lsp.@LIBEXT@"
|
||||||
"@LIBPREFIX@eclmin.@LIBEXT@"
|
"@LIBPREFIX@eclmin.@LIBEXT@"
|
||||||
|
|
|
||||||
2150
src/configure
vendored
2150
src/configure
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -8,7 +8,7 @@ dnl AUTOCONF configuration for ECL
|
||||||
dnl Giuseppe Attardi 25.1.1994
|
dnl Giuseppe Attardi 25.1.1994
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT([ecl],[23.9.9],[])
|
AC_INIT([ecl],[24.5.10],[])
|
||||||
AC_REVISION([$Revision$])
|
AC_REVISION([$Revision$])
|
||||||
AC_CONFIG_SRCDIR([bare.lsp.in])
|
AC_CONFIG_SRCDIR([bare.lsp.in])
|
||||||
AC_CONFIG_AUX_DIR([gmp])
|
AC_CONFIG_AUX_DIR([gmp])
|
||||||
|
|
@ -317,6 +317,7 @@ AC_SUBST(CORE_LIBS, []) dnl Locally compiled libs to link into
|
||||||
dnl ecl/ecl_min/libecl.so and nowhere else.
|
dnl ecl/ecl_min/libecl.so and nowhere else.
|
||||||
AC_SUBST(SHARED_LDFLAGS) dnl Flags for shared libraries linker
|
AC_SUBST(SHARED_LDFLAGS) dnl Flags for shared libraries linker
|
||||||
AC_SUBST(BUNDLE_LDFLAGS) dnl Flags for FASL files linker
|
AC_SUBST(BUNDLE_LDFLAGS) dnl Flags for FASL files linker
|
||||||
|
AC_SUBST(PROGRAM_LDFLAGS) dnl Flags for executable program linker
|
||||||
AC_SUBST(EXTRA_OBJS) dnl Extra *.o files to be compiled into libecl.a
|
AC_SUBST(EXTRA_OBJS) dnl Extra *.o files to be compiled into libecl.a
|
||||||
AC_SUBST(TARGETS, ['bin/ecl$(EXE)'])dnl Versions of ECL to be built
|
AC_SUBST(TARGETS, ['bin/ecl$(EXE)'])dnl Versions of ECL to be built
|
||||||
AC_SUBST(SUBDIRS, ['c doc']) dnl Subdirectories that make should process
|
AC_SUBST(SUBDIRS, ['c doc']) dnl Subdirectories that make should process
|
||||||
|
|
|
||||||
|
|
@ -181,10 +181,19 @@ to official gitlab repository:
|
||||||
.
|
.
|
||||||
|
|
||||||
.SH LICENSE
|
.SH LICENSE
|
||||||
ECL is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version; see file \fICOPYING\fP.
|
|
||||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
This library is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
Software Foundation; either version 2.1 of the License, or (at your option) any
|
||||||
|
later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
with this library; if not, write to the Free Software Foundation, Inc., 51
|
||||||
|
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Please report bugs, comments, suggestions to the ecl mailing list:
|
Please report bugs, comments, suggestions to the ecl mailing list:
|
||||||
.MT ecl-devel@common-lisp.net
|
.MT ecl-devel@common-lisp.net
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,7 @@
|
||||||
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
;;;; Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
|
||||||
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
;;;; Copyright (c) 1990, Giuseppe Attardi.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This program is free software; you can redistribute it and/or modify
|
;;;; See file 'LICENSE' for the copyright details.
|
||||||
;;;; it under the terms of the GNU General Public License as published by
|
|
||||||
;;;; the Free Software Foundation; either version 2 of the License, or
|
|
||||||
;;;; (at your option) any later version.
|
|
||||||
;;;;
|
|
||||||
;;;; See file '../Copyright' for full details.
|
|
||||||
|
|
||||||
;;;; setdoc.lsp
|
;;;; setdoc.lsp
|
||||||
;;;;
|
;;;;
|
||||||
|
|
|
||||||
|
|
@ -302,12 +302,15 @@ format. In case of @emph{Portable FASL} the bytecodes compiler is needed.
|
||||||
@node Compiling with ASDF
|
@node Compiling with ASDF
|
||||||
@subsection Compiling with ASDF
|
@subsection Compiling with ASDF
|
||||||
|
|
||||||
First, let's disregard the simple situation in which we write Lisp
|
For larger systems involving more complex file dependencies, or for systems
|
||||||
without depending on any other Lisp libraries. A more practical example
|
that are portable across different Common Lisp implementations, it may be
|
||||||
is to build a library that depends on other
|
better to define systems using @uref{https://common-lisp.net/project/asdf/,asdf}.
|
||||||
@uref{https://common-lisp.net/project/asdf/,asdf}, systems. ECL provides
|
|
||||||
a useful extension for asdf called @code{asdf:make-build}, which offers
|
ECL provides a useful extension for asdf called @code{asdf:make-build}, which
|
||||||
an abstraction for building libraries directly from system definitions.
|
offers an abstraction for building libraries directly from system definitions.
|
||||||
|
Note that this extension is only available in the ASDF that is shipped with
|
||||||
|
ECL; it may not be available from an ASDF installed from the system or from
|
||||||
|
Quicklisp.
|
||||||
|
|
||||||
To download dependencies you may use
|
To download dependencies you may use
|
||||||
@uref{https://www.quicklisp.org,Quicklisp} to load your system (with
|
@uref{https://www.quicklisp.org,Quicklisp} to load your system (with
|
||||||
|
|
@ -328,14 +331,22 @@ the fact that other libraries may be loaded).
|
||||||
@node Example code to build
|
@node Example code to build
|
||||||
@subsubsection Example code to build
|
@subsubsection Example code to build
|
||||||
|
|
||||||
We use a simple project that depends on @code{alexandria} to
|
An example project is included in the ECL source distribution in the
|
||||||
demonstrate the interface. The example consists of
|
@code{examples/asdf_with_dependence/} directory.
|
||||||
@code{example-with-dep.asd}, @code{package.lisp} and
|
|
||||||
@code{example.lisp} (included in the
|
This project depends on the @code{alexandria} library and consists of a system
|
||||||
@code{examples/asdf_with_dependence/} directory in the ECL source
|
definition (@code{example-with-dep.asd}), package definition
|
||||||
tree). Before any kind of build you need to push the full path of
|
(@code{package.lisp}), and the actual library code (@code{example.lisp}).
|
||||||
this directory to @code{asdf:*central-registry*} (or link it in a
|
|
||||||
location already recognized by ASDF).
|
Before following the steps below, you must
|
||||||
|
@uref{https://asdf.common-lisp.dev/asdf/Configuring-ASDF-to-find-your-systems.html,configure ASDF to find your systems}.
|
||||||
|
You can either copy or symlink the example directory in one of the standard
|
||||||
|
ASDF locations, or push the path of the example directory to your
|
||||||
|
@code{asdf:*central-registry*}, for example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(push "./" asdf:*central-registry*)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node Build it as an single executable
|
@node Build it as an single executable
|
||||||
@subsubsection Build it as an single executable
|
@subsubsection Build it as an single executable
|
||||||
|
|
|
||||||
|
|
@ -196,9 +196,15 @@ This function returns a C pointer for the given Lisp foreign object. Lisp
|
||||||
foreign objects are constructed with functions @code{ecl_make_foreign_data}
|
foreign objects are constructed with functions @code{ecl_make_foreign_data}
|
||||||
and @code{ecl_allocate_foreign_data}.
|
and @code{ecl_allocate_foreign_data}.
|
||||||
|
|
||||||
This data is a subject of the garbage collection (unlike lisp functions like
|
The wrapper created with @code{ecl_make_foreign_data} is a subject of
|
||||||
@code{si:allocate-foreign-object}). This is because the data producer here is
|
garbage collection, but the pointer itself is not ``freed'', because
|
||||||
the "C world" and the data consumer is the "Lisp world".
|
the data producer is ``C world'' and the consumer is ``Lisp world''.
|
||||||
|
|
||||||
|
This is different from @code{si:allocate-foreign-object} where the
|
||||||
|
data producer is ``Lisp world'' and the consumer is ``C world''. In
|
||||||
|
that case the wrapper is not collected unless explicitly released with
|
||||||
|
@code{si:free-foreign-object} in which case the allocated foreign data
|
||||||
|
is also released.
|
||||||
@end deftypefun
|
@end deftypefun
|
||||||
|
|
||||||
@cppdef ecl_base_string_pointer_safe
|
@cppdef ecl_base_string_pointer_safe
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,61 @@
|
||||||
@node Gray streams
|
@node Gray Streams
|
||||||
@section Gray streams
|
@section Gray Streams
|
||||||
|
|
||||||
@defun{close} {@var{stream} @keys{} :abort}
|
@defun {close} stream &key abort
|
||||||
|
Unlike the other Gray stream functions, @code{close} is not specialized
|
||||||
Unlike the other Gray stream functions, @code{close} is not
|
on @code{t} for @var{stream}. This decision has been taken mainly for
|
||||||
specialized on @code{t} for @var{stream}. This decision has been taken
|
the compatibility reasons with some libraries.
|
||||||
mainly for the compatibility reasons with some libraries.
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-file-position} stream &optional position
|
||||||
|
This is used to implement @code{file-position}. When @code{position}
|
||||||
|
is not provided it should return the current file position of the
|
||||||
|
stream as non-negative integer or @code{nil} if the file position
|
||||||
|
cannot be determined. When @code{position} is supplied the file
|
||||||
|
position of the stream should be set to that value. If setting the
|
||||||
|
position is successful then @code{t} should be returned, otherwise
|
||||||
|
@code{nil} should be returned. The default method always returns
|
||||||
|
@code{nil}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-file-length} stream
|
||||||
|
This is used to implement @code{file-length}. It returns either a
|
||||||
|
non-negative integer or @code{nil} if the concept of file length is
|
||||||
|
not meaningful for the stream. The default method will signal a
|
||||||
|
@code{type-error} with an expected type of @code{file-stream}. This is
|
||||||
|
required to conform with the ``Exceptional Situations'' section of
|
||||||
|
@code{file-length} in the ANSI specification.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-interactive-p} stream
|
||||||
|
This is used to implement @code{interactive-stream-p}. It returns a
|
||||||
|
boolean indicating if the stream is interactive. The default method
|
||||||
|
always returns @code{nil}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-line-length} stream
|
||||||
|
Allows the default line length to be specified for the stream. It
|
||||||
|
returns either a non-negative integer or @code{nil} if the concept of
|
||||||
|
line length is not meaningful for the stream. This value is only used
|
||||||
|
if @code{*print-right-margin*} is @code{nil}. The line length is used
|
||||||
|
by the pretty printer and by the format justification directive. The
|
||||||
|
default method returns @code{nil}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-read-sequence} stream sequence &optional start end
|
||||||
|
This is used to implement @code{read-sequence}. It should follow the
|
||||||
|
semantics in the ANSI specification. It returns the position of the
|
||||||
|
first element in the sequence that was not updated. The default method
|
||||||
|
calls @code{stream-read-char} or @code{stream-read-byte} repeatedly
|
||||||
|
based on the type returned by @code{stream-element-type}. Element
|
||||||
|
access to the sequence is done via @code{elt}.
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
@defun {stream-write-sequence} stream sequence &optional start end
|
||||||
|
This is used to implement @code{write-sequence}. It should follow the
|
||||||
|
semantics in the ANSI specification. It returns sequence without
|
||||||
|
modification. The default method calls @code{stream-write-char} or
|
||||||
|
@code{stream-write-byte} repeatedly based on the type returned by
|
||||||
|
@code{stream-element-type}. Element access to the sequence is done via
|
||||||
|
@code{elt}.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,7 @@
|
||||||
@c @node Extensible Sequences
|
@c @node Extensible Sequences
|
||||||
@c @section Extensible Sequences
|
@c @section Extensible Sequences
|
||||||
|
|
||||||
@node Gray Streams
|
@include extensions/gray-streams.txi
|
||||||
@section Gray Streams
|
|
||||||
|
|
||||||
@c @node Series
|
@c @node Series
|
||||||
@c @section Series
|
@c @section Series
|
||||||
|
|
|
||||||
|
|
@ -10,43 +10,43 @@ notice which is shipped with ECL.
|
||||||
@verbatim
|
@verbatim
|
||||||
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
|
---- BEGINNING OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------
|
||||||
|
|
||||||
Copyright (C) 2019, Daniel Kochmanski and Marius Gerbershagen
|
Copyright (c) 2019-2024 Daniel Kochmański and Marius Gerbershagen
|
||||||
Copyright (c) 2018, Daniel Kochmański
|
Copyright (c) 2015-2018, Daniel Kochmański
|
||||||
Copyright (c) 2013, Juan Jose Garcia Ripoll
|
Copyright (c) 2000-2013, Juan Jose Garcia Ripoll
|
||||||
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
|
Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
|
||||||
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
|
Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
|
||||||
All Rights Reserved
|
All Rights Reserved
|
||||||
|
|
||||||
ECL is free software; you can redistribute it and/or modify it
|
ECL is free software; you can redistribute it and/or
|
||||||
under the terms of the GNU Library General Public License as published
|
modify it under the terms of the GNU Lesser General Public
|
||||||
by the Free Software Foundation; either version 2 of the License, or
|
License as published by the Free Software Foundation; either
|
||||||
(at your option) any later version; see file 'Copying'.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
GNU Library General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public License
|
You should have received a copy of the GNU Lesser General Public
|
||||||
along with this program; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
PLEASE NOTE THAT:
|
PLEASE NOTE THAT:
|
||||||
|
|
||||||
This license covers all of the ECL program except for the files
|
This license covers all of the ECL program except for the files
|
||||||
src/lsp/loop2.lsp ; Symbolic's LOOP macro
|
src/lsp/loop.lsp ; Symbolic's LOOP macro
|
||||||
src/lsp/pprint.lsp ; CMUCL's pretty printer
|
src/lsp/pprint.lsp ; CMUCL's pretty printer
|
||||||
src/lsp/format.lsp ; CMUCL's format
|
src/lsp/format.lsp ; CMUCL's format
|
||||||
and the directories
|
and the directories
|
||||||
contrib/ ; User contributed extensions
|
contrib/ ; User contributed extensions
|
||||||
examples/ ; Examples for the ECL usage
|
examples/ ; Examples for the ECL usage
|
||||||
Look the precise copyright of these extensions in the corresponding
|
Look the precise copyright of these extensions in the corresponding
|
||||||
files.
|
files.
|
||||||
|
|
||||||
Examples are licensed under: (SPDX-License-Identifier) BSD-2-Clause
|
Examples are licensed under: (SPDX-License-Identifier) BSD-2-Clause
|
||||||
|
|
||||||
Report bugs, comments, suggestions to the ecl mailing list:
|
Report bugs, comments, suggestions to the ecl mailing list:
|
||||||
ecl-devel@common-lisp.net.
|
ecl-devel@common-lisp.net.
|
||||||
|
|
||||||
---- END OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------------
|
---- END OF COPYRIGHT FOR THE ECL CORE ENVIRONMENT ------------------
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue