Legend:
Library
Module
Module type
Parameter
Class
Class type
File paths.
A file system path specifies a file or a directory in a file system hierarchy. It is made of three parts:
An optional, platform-dependent, volume.
An optional root directory separator dir_sep whose presence distiguishes absolute paths ("/a") from relative ones ("a")
A non-empty list of dir_sep separated segments. Segments are non empty strings except for maybe the last one. The latter syntactically distiguishes directory paths ("a/b/") from file paths ("a/b").
The paths segments "." and ".." are relative path segments that respectively denote the current and parent directory. The basename of a path is its last non-empty segment if it is not a relative path segment or the empty string otherwise (e.g. on "/").
Separators and segments
val dir_sep_char : char
dir_sep_char is the platform dependent natural directory separator. This is / on POSIX and \ on Windows.
Warning. In code only use "/" as the directory separator even on Windows platforms (don't be upset, the module gives them back to you with backslashes).
add_seg p seg if p's last segment is non-empty this is p with seg added. If p's last segment is empty, this is p with the empty segment replaced by seg.
Note. The following functions use syntactic semantic properties of paths. Given a path, these properties can be different from the ones your file system attributes to it.
to_dir_path p is add_seg p "". It ensures that the resulting path represents a directory and, if converted to a string, that it ends with a dir_sep.
Basename and parent directory
Note. The following functions use syntactic semantic properties of paths. Given a path, these properties can be different from the ones your file system attributes to it.
basename p is the last non-empty segment of p or the empty string otherwise. The latter occurs only on root paths and on paths whose last non-empty segment is a relative segment.
compare p0 p1 is a total order on paths compatible with equal.
File extensions
The file extension (resp. multiple file extension) of a path segment is the suffix that starts at the last (resp. first) occurence of a '.' that is preceeded by at least one non '.' character. If there is no such occurence in the segment, the extension is empty. With these definitions, ".", "..", "..." and dot files like ".ocamlinit" or "..ocamlinit" have no extension, but ".emacs.d" and "..emacs.d" do have one.
type ext = string
The type for file extensions, '.' separator included.
get_ext p is p's basename file extension or the empty string if there is no extension. If multi is true (defaults to false), returns the multiple file extension.
conv_only converts file paths. Textual conversion is not composable, use conv instead. Textual encoding pass the string as is and decoding ignores the initial starting point and parses the whole input string into a file path.
A search path is a list of paths separated by a designated separator. A well known search path is PATH in which executable binaries are looked up.
val search_path_sep : string
search_path_sep is the default platform specific separator for search paths, this is ";" if Sys.win32 is true and ":" otherwise.
val list_of_search_path : ?sep:string ->string ->(t list, string)result
list_of_search_path ~sep s parses sep separated file paths from s. sep is not allowed to appear in the file paths, it defaults to search_path_sep. The order in the list matches the order from left to right in s.