/// Renames a file. Existing file, if any, is overwritten.
void rename(const Path &from, const Path &to);
-/// Makes a path relative to some base path. That is, base/result==path.
+/** Makes a path relative to some base path. That is, base/result==path. Both
+paths must be either absolute or relative. */
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. */
+not a descendant of parent. Both paths must be either absolute or relative. */
int descendant_depth(const Path &path, const Path &parent);
} // namespace FS