Extensions to Core.Core_filename.
normalize path Removes as much "." and ".." from the path as possible. If the path
is absolute they will all be removed.
parent path The parent of the root directory is the root directory
path.
make_relative ~to_:src f returns f relative to src.
is_relative f <> is_relative src
make_absolute src Turn src into an absolute path expanded from the current working
directory.
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.
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.
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.
Runs f with a temporary dir as option and removes the directory afterwards.
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:
"../../a" is never the parent of "." even if this could be true given
form the current working directory.