FilePathOperations on abstract filenames.
This module allow to manipulate string or abstract representation of a filename.
Abstract representation of a filename allow to decode it only once, and should speed up further operation on it (comparison in particular). If you intend to do a lot of processing on filename, you should consider using its abstract representation.
This module manipulate abstract path that are not bound to a real filesystem. In particular, it makes the assumption that there is no symbolic link that should modify the meaning of a path. If you intend to use this module against a real set of filename, the best solution is to apply to every filename to solve symbolic link through FileUtil.readlink.
exception BaseFilenameRelative of filenameCannot pass a base filename which is relative.
exception NoExtension of filenameThe last component of the filename does not support extension (Root, ParentDir...)
exception InvalidFilename of filenameThe filename used is invalid.
is_subdir child parent Is child really a sub directory of parent
is_updir parent child Is parent really a parent directory of child
compare fl1 fl2 Give an order between the two filename. The classification is done by sub directory relation, fl1 < fl2 iff fl1 is a subdirectory of fl2, and lexicographical order of each part of the reduce filename when fl1 and fl2 has no hierarchical relation
val current_dir : filenameCurrent dir.
val parent_dir : filenameUpper dir.
val make_filename : string list -> filenameMake a filename from a set of strings.
Extract only the file name of a filename. Returns an empty string for directory-only paths like "dir/".
Extract the directory name of a filename. Returns an empty string for file-only paths like "file".
Return the shortest filename which is equal to the filename given. It remove the "." in Unix filename, for example. If no_symlink flag is set, consider that the path doesn't contain symlink and in this case ".." for Unix filename are also reduced.
Create an absolute filename from a filename relative and an absolute base filename.
Create a filename which is relative to the base filename.
reparent fln_src fln_dst fln Return the same filename as fln but the root is no more fln_src but fln_dst. It replaces the fln_src prefix by fln_dst.
val is_valid : filename -> boolTest if the filename is a valid one.
val is_relative : filename -> boolCheck if the filename is relative to a dir or not.
val is_current : filename -> boolCheck if the filename is the current directory.
val is_parent : filename -> boolCheck if the filename is the parent directory.
Extension is define as the suffix of a filename, just after the last ".".
Extracts the extension. Raises Not_found if there is no extension.
Add an extension with a "." before. Using this function with an empty extension string creates a filename with a trailing dot.
PATH-like refers the environment variable PATH. This variable holds a list of filename. The functions string_of_path and path_of_string allow to convert this kind of list by using the good separator between filename.
val string_of_path : filename list -> stringCreate a PATH-like string.
val path_of_string : string -> filename listExtract filenames from a PATH-like string.
Definition of operations for path manipulation.
module type PATH_SPECIFICATION = sig ... endGeneric operations.
module type PATH_STRING_SPECIFICATION = sig ... endGeneric operations, with type filename and extension as strings.
Operations on filenames for other OS. The DefaultPath always match the current OS.
module DefaultPath : PATH_STRING_SPECIFICATIONDefault operating system.
module UnixPath : PATH_STRING_SPECIFICATIONUnix operating system.
module Win32Path : PATH_STRING_SPECIFICATIONWin32 operating system.
module CygwinPath : PATH_STRING_SPECIFICATIONCygwin operating system.