filesystem utils
1.0.0A collection of utilities for filesystem interaction.
About Filesystem-Utils
This is an extension library to pathname-utils, to allow dealing with common problems with filesystems, such as listing files, probing file types, determining default directories, etc.
How To
Since this is a purely utility/toolkit library, simply having a look at the symbol index should give you the best idea of what is offered.
Also See
pathname-utils For pathname manipulation functions
file-attributes For extra information on files available on the filesystem
System Information
Definition Index
-
ORG.SHIRAKUMO.FILESYSTEM-UTILS
No documentation provided.-
EXTERNAL FUNCTION COPY-FILE
- FILE
- TO
- &KEY
- REPLACE
- SKIP-ROOT
Copies the file from FILE to TO. REPLACE may be one of: - NIL Never replaces the destination, and instead skips it. - T Always replaces the destination. - :IF-NEWER Only replaces the destination if the source has a more recent FILE-WRITE-DATE. When FILE is a directory, all children are copied to the target. If SKIP-ROOT is NIL, then the directory-name of FILE is replicated as the root of all contents within TO. Otherwise, the contents of FILE are copied directly to TO. If TO does not have a pathname-name or pathname-type, then FILE's pathname-name and pathname-type are used.
-
EXTERNAL FUNCTION CREATE-SYMBOLIC-LINK
- LINK-FILE
- DESTINATION-FILE
Attempts to create a symbolic link file at LINK-FILE, pointing to DESTINATION-FILE. This may signal an error for a variety of reasons: - The filesystem does not support symbolic links - The implementation does not support creating symbolic links - The implementation is not permitted to create symbolic links - The target filesystem cannot be pointed to
-
EXTERNAL FUNCTION CURRENT-DIRECTORY
Accesses the "current working directory". Note that setting this directory is not multithreading safe, as the directory is global to the process. See WITH-CURRENT-DIRECTORY
-
EXTERNAL FUNCTION (SETF CURRENT-DIRECTORY)
- NEW
No documentation provided. -
EXTERNAL FUNCTION DELETE-DIRECTORY
- FILE
Deletes the given directory. Will recursively delete files within the directory. This will *not* follow symbolic links, and instead delete the link file itself. See DELETE-FILE*
-
EXTERNAL FUNCTION DELETE-FILE*
- FILE
Deletes the given file. Will recursively delete files if they are directories. This will *not* follow symbolic links. See CL:DELETE-FILE See DELETE-DIRECTORY See DIRECTORY-P
-
EXTERNAL FUNCTION DEVICE
- PATHNAME
Attempts to fetch an identifier for the actual device this file is on. The returned identifier is opaque and may not be user-readable. The primary purpose is to verify whether files reside on the same device or not. Two files reside on the same device if their DEVICE return values are EQUAL.
-
EXTERNAL FUNCTION DIRECTORY*
- DIRECTORY
- &REST
- ARGS
- &KEY
- &ALLOW-OTHER-KEYS
Lists files matching the wild DIRECTORY pathname. Like CL:DIRECTORY, but tries *not* to resolve any symlinks of the listing, returning direct descendants of the directory root.
-
EXTERNAL FUNCTION DIRECTORY-P
- FILE
Returns T if the given pathname points to a directory. This differs from PATHNAME-UTILS:DIRECTORY-P in the following way: If the pathname is not a directory pathname and instead points to a file, but the file is actually a directory file, this function still returns T. See PATHNAME-UTILS:DIRECTORY-P
-
EXTERNAL FUNCTION EMPTY-DIRECTORY-P
- FILE
Returns true if the file is a directory and is empty. See DIRECTORY-P
-
EXTERNAL FUNCTION ENSURE-DELETED
- PATHNAME
Deletes the given file if it still exists. See FILE-EXISTS-P See DELETE-FILE*
-
EXTERNAL FUNCTION FILE-EXISTS-P
- PATHNAME
Returns the truename of the file if it exists.
-
EXTERNAL FUNCTION FILE-P
- FILE
Returns T if the given pathname points to a regular file. This differs from PATHNAME-UTILS:FILE-P in the following way: If the pathname is a file pathname, but points to a file that is not a regular file (and thus a directory, device, symlink, or other type of file node), then this function returns NIL. See PATHNAME-UTILS:FILE-P
-
EXTERNAL FUNCTION LIST-CONTENTS
- DIRECTORY
Lists all files and directories within DIRECTORY. See DIRECTORY*
-
EXTERNAL FUNCTION LIST-DEVICES
- &OPTIONAL
- HOST
Lists all known pathname devices. The HOST may be given as a hint for devices to list under the given host. The implementation may disregard this hint, however. This may return NIL if the implementation cannot enumerate the devices.
-
EXTERNAL FUNCTION LIST-DIRECTORIES
- DIRECTORY
Lists all directories within DIRECTORY. This excludes any files that don't denote directories, and specifically returns them as directory pathnames. See DIRECTORY* See DIRECTORY-P
-
EXTERNAL FUNCTION LIST-FILES
- DIRECTORY
Lists all files within DIRECTORY. This excludes any subdirectories. Note that non-regular files are still included in this listing, meaning that not all returned files are necessarily FILE-P. See DIRECTORY* See DIRECTORY-P
-
EXTERNAL FUNCTION LIST-HOSTS
List all known pathname hosts. This may return NIL if the implementation cannot enumerate the hosts.
-
EXTERNAL FUNCTION MAKE-TEMPORARY-FILE
- &KEY
- NAME
- TYPE
Create a path to a temporary file. If you pass NAME, it is up to you to ensure that the path can be re-used if it exists already. Otherwise, the file is guaranteed to not exist yet. The file will always be in the system's temporary directory. See TEMPORARY-DIRECTORY See WITH-TEMPORARY-FILE
-
EXTERNAL FUNCTION MAP-DIRECTORY
- FUNCTION
- PATH
- &KEY
- TYPE
- RECURSIVE
Iterates over the file entries of the directory. FUNCTION is called for entries in the directory given by PATH. If RECURSIVE is true, the function will be called for entries recursively until all directories in the tree with PATH as its root have been mapped. TYPE governs for which kinds of file entries the function is called. T --- Both file and directory entries :FILE --- Only "regular" file entries :DIRECTORY --- Only directory entries No guarantees are made about the order in which file entries are mapped. On platforms with CFFI support this is usually far more efficient than using the DIRECTORY function with a wild pathname, especially if you're only interested in a particular few files after which the search can be aborted early. On platforms without CFFI support DIRECTORY is used, and this may simply be a more convenient way of iterating over directories. See DO-DIRECTORY
-
EXTERNAL FUNCTION RENAME-FILE*
- FILE
- TO
Renames FILE to TO, overwriting TO if it exists. Similar RENAME-FILE on most implementations, but ensures the destination is overwritten if it exists, and does *not* merge the pathname name or type of the FILE pathname with that of TO. In effect this means it does what you'd expect, and if TO has no name or type, but FILE does, they are removed by the rename. Additionally, it does what you expect if the two pathnames are across devices, namely it will copy the file over and delete the old one, rather than signalling an error.
-
EXTERNAL FUNCTION RESOLVE-SYMBOLIC-LINKS
- PATHNAME
Resolve symbolic links in the pathname as much as possible. This does nothing for paths that are not absolute, physical pathnames. For absolute, physical pathnames it attempts to resolve all symbolic links or relative components in the pathname to arrive at a canonical pathname for the file.
-
EXTERNAL FUNCTION RUNTIME-DIRECTORY
Returns the directory the executable was spawned from.
-
EXTERNAL FUNCTION SYMBOLIC-LINK-P
- FILE
Returns T if the given pathname points to a symbolic link file. See FILE-P See DIRECTORY-P See CREATE-SYMBOLIC-LINK
-
EXTERNAL FUNCTION TEMPORARY-DIRECTORY
Returns the directory for temporary files. Note: This makes no guarantee about the "temporary-ness" of the files. They may be cleared out after a reboot, after the lisp process terminates, or only at the user's discretion. If you crate temporary files within this directory, you should delete them after they're no longer needed. See MAKE-TEMPORARY-FILE
-
EXTERNAL FUNCTION TRUENAME*
- PATHNAME
Like TRUENAME but ensures that it works on directory files as well on every implementation.
-
EXTERNAL MACRO DO-DIRECTORY
- FILE
- DIRECTORY
- &KEY
- TYPE
- RECURSIVE
- RETURN
- &BODY
- BODY
Convenience iteration macro around MAP-DIRECTORY. BODY is evaluated in a NIL block. If iteration terminates normally, RETURN is evaluated and its values returned from DO-DIRECTORY. See MAP-DIRECTORY
-
EXTERNAL MACRO WITH-CURRENT-DIRECTORY
- DIRECTORY
- &BODY
- BODY
Execute body while the current working directory is changed. This guarantees the following invariant: the value of CURRENT-DIRECTORY is the same before entering BODY as it is after BODY exits for any reason. the value of CURRENT-DIRECTORY is equivalent to the passed DIRECTORY when BODY begins execution. See CURRENT-DIRECTORY
-
EXTERNAL MACRO WITH-TEMPORARY-FILE
- PATH
- &REST
- ARGS
- &BODY
- BODY
Execute BODY with a temporary file pathname bound to PATH. ARGS are passed on to MAKE-TEMPORARY-FILE. The file is automatically deleted when BODY exits for any reason. See MAKE-TEMPORARY-FILE See ENSURE-DELETED
-