CLISP has traditionally taken the view that a directory is a
separate object and not a special kind of file, so whenever the
standard says that a function operates on files
without specifically mentioning that it also works on
directories, CLISP SIGNALs an ERROR when passed a
directory.
CLISP provides separate directory functions, such as
EXT:DELETE-DIRECTORY, EXT:RENAME-DIRECTORY et al.
PROBE-FILEPROBE-FILE cannot be used to check whether a directory exists.
Use functions EXT:PROBE-DIRECTORY or DIRECTORY for this.
FILE-AUTHORFILE-AUTHOR always returns NIL, because the operating systems
CLISP is ported to do not store a file's author in the file system.
Some operating systems, such as UNIX, have the notion of a file's
owner, and some other Common Lisp implementations return
the user name of the file owner. CLISP does not do this, because
owner and author are not the
same; in particular, authorship is preserved by copying, while
ownership is not.
Use OS:FILE-OWNER
to find the owner of the file. See also
OS:FILE-PROPERTIES
(Platform Dependent: Win32 platform only.).
EXT:PROBE-DIRECTORY( tests whether EXT:PROBE-DIRECTORY pathname)pathname exists
and is a directory.
It will, unlike PROBE-FILE or TRUENAME, not SIGNAL an ERROR
if the parent directory of pathname does not exist.
DELETE-FILE( deletes the pathname
DELETE-FILE pathname)pathname, not its TRUENAME, and returns the absolute pathname it
actually removed or NIL if pathname did not exist.
When pathname points to a file which is currently open in CLISP,
an ERROR is SIGNALed.
To remove a directory, use EXT:DELETE-DIRECTORY instead.
RENAME-FILEThis function cannot operate on directories,
use EXT:RENAME-DIRECTORY to rename a directory.
DIRECTORY( can run in two modes:
DIRECTORY &OPTIONAL pathname &KEY
:FULL :CIRCLE :IF-DOES-NOT-EXIST)
pathname contains no name or type component, a
list of all matching directories is produced.
E.g., (DIRECTORY "/etc/*/") lists
all subdirectories in the directory
#P"/etc/".(DIRECTORY "/etc/*") lists all
regular files in the directory #P"/etc/".
If the :FULL argument is non-NIL,
additional information is returned: for each matching file you get a
LIST of at least four elements
(file-pathname
file-truename
file-write-date-as-decoded-time
file-length).
If you want all the files and
subdirectories in the current directory, you should use
(.
If you want all the files and subdirectories in all the subdirectories
under the current directory (similar to the ls
NCONC (DIRECTORY "*/") (DIRECTORY "*"))-R UNIX command),
use (.
NCONC (DIRECTORY "**/") (DIRECTORY "**/*"))
The argument :IF-DOES-NOT-EXIST controls the treatment of links
pointing to non-existent files and can take the following values:
:DISCARD (default):ERRORERROR is SIGNALed on bad directory entries
(this corresponds to the default behavior of DIRECTORY in CMU CL)
:KEEP(DIRECTORY
... :TRUNAMEP NIL) call in CMU CL)
:IGNORE:DISCARD, but also
do not signal an error when a directory is unaccessible (contrary to
the [ANSI CL standard] specification).( is like EXT:DIR &OPTIONAL
pathname)DIRECTORY, but displays the pathnames
instead of returning them. (EXT:DIR)
shows the contents of the current directory.
EXT:DEFAULT-DIRECTORY( is equivalent to EXT:DEFAULT-DIRECTORY)(.
EXT:CD)( is equivalent to
SETF (EXT:DEFAULT-DIRECTORY) pathname)(, except for the return value.EXT:CD pathname)
EXT:DELETE-DIRECTORY(
removes an (empty) subdirectory.EXT:DELETE-DIRECTORY directory-pathname)
EXT:RENAME-DIRECTORY( renames a
subdirectory to a new name.EXT:RENAME-DIRECTORY old-directory-pathname
new-directory-pathname)
| These notes document CLISP version 2.45 | Last modified: 2008-04-15 |