/// Removes the last component from the path.
Path dirname(const Path &);
-/**
-Returns the base part of a filename. This includes everything up to the last
-dot, but not the dot itself.
-*/
+/** Returns the base part of a filename. This includes everything up to the
+last dot, but not the dot itself. */
std::string basepart(const std::string &);
-/**
-Returns the extension part of a filename. This includes the last dot and
-everything after it.
-*/
+/** Returns the extension part of a filename. This includes the last dot and
+everything after it. */
std::string extpart(const std::string &);
-/**
-Fixes the case of the given path to match files / directories on the
-filesystem.
-*/
+/// Fixes the case of a path to match files / directories on the filesystem.
Path fix_case(const Path &path);
/// Reads the contents of a symbolic link
/// Makes a path relative to some base path. That is, base/result==path.
Path relative(const Path &path, const Path &base);
+/// Returns the longest prefix shared by both paths.
+Path common_ancestor(const Path &, const Path &);
+
/** Determines how many levels a path is below another. Returns -1 if path is
not a descendant of parent. */
int descendant_depth(const Path &path, const Path &parent);