Module Core_extended.Extended_filename

Extensions to Core.Core_filename.

val normalize : string ‑> string

normalize path Removes as much "." and ".." from the path as possible. If the path is absolute they will all be removed.

val parent : string ‑> string

parent path The parent of the root directory is the root directory

val make_relative : ?⁠to_:string ‑> string ‑> string

make_relative ~to_:src f returns f relative to src.

val make_absolute : string ‑> string

make_absolute src Turn src into an absolute path expanded from the current working directory.

val expand : ?⁠from:string ‑> string ‑> string

expand Makes a path absolute and expands ~~username to home directories. In case of error (e.g.: path home of a none existing user) raises Failure with a (hopefully) helpful message.

val explode : string ‑> string list

Splits a given path into a list of strings.

val implode : string list ‑> string

dual to explode

val compare : string ‑> string ‑> int

Filename.compare is a comparison that normalizes filenames ("./a" = "a"), uses a more human ready algorithm based on String.collate ("rfc02.txt > rfc1.txt") and extenstions ("a.c" > "a.h").

It is a total comparison on normalized filenames.

val with_open_temp_file : ?⁠in_dir:string ‑> ?⁠write:(Pervasives.out_channel ‑> unit) ‑> f:(string ‑> 'a) ‑> string ‑> string ‑> 'a

with_open_temp_file ~write ~f prefix suffix create a temporary file; runs write on its out_channel and then f on the resulting file. The file is removed once f is done running.

val with_temp_dir : ?⁠in_dir:string ‑> string ‑> string ‑> f:(string ‑> 'a) ‑> 'a

Runs f with a temporary dir as option and removes the directory afterwards.

val is_parent : string ‑> string ‑> bool

is_parent dir1 dir2 returns true if dir1 is a parent of dir2

Note: This function is context independent, use expand if you want to consider relatives paths from a given point.

In particular: