X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ffs%2Futils.h;h=e518d35cf225da8e38692e5b09dffe2d21793af5;hb=HEAD;hp=df7bc76b8d5add12bae4cb3daae6cf4027d3a3a1;hpb=eeb6ed7b20d56578ff8c68f3c94e887d5ac768ee;p=libs%2Fcore.git diff --git a/source/fs/utils.h b/source/fs/utils.h index df7bc76..9c4bb5c 100644 --- a/source/fs/utils.h +++ b/source/fs/utils.h @@ -1,46 +1,51 @@ #ifndef MSP_FS_UTILS_H_ #define MSP_FS_UTILS_H_ +#include #include "path.h" namespace Msp { namespace FS { /// Extracts the last component of the path. -std::string basename(const Path &); +MSPCORE_API std::string basename(const Path &); /// Removes the last component from the path. -Path dirname(const Path &); +MSPCORE_API Path dirname(const Path &); /** 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 &); +MSPCORE_API std::string basepart(const std::string &); /** Returns the extension part of a filename. This includes the last dot and everything after it. */ -std::string extpart(const std::string &); +MSPCORE_API std::string extpart(const std::string &); /// Fixes the case of a path to match files / directories on the filesystem. -Path fix_case(const Path &path); +MSPCORE_API Path fix_case(const Path &path); /// Reads the contents of a symbolic link -Path readlink(const Path &path); +MSPCORE_API Path readlink(const Path &path); /// Resolves all symlinks from a path. Will always return an absolute path. -Path realpath(const Path &path); +MSPCORE_API Path realpath(const Path &path); /// Removes a file -void unlink(const Path &path); +MSPCORE_API void unlink(const Path &path); /// Renames a file. Existing file, if any, is overwritten. -void rename(const Path &from, const Path &to); +MSPCORE_API void rename(const Path &from, const Path &to); -/// Makes a path relative to some base path. That is, base/result==path. -Path relative(const Path &path, const Path &base); +/** Makes a path relative to some base path. That is, base/result==path. Both +paths must be either absolute or relative. */ +MSPCORE_API Path relative(const Path &path, const Path &base); + +/// Returns the longest prefix shared by both paths. +MSPCORE_API 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); +not a descendant of parent. Both paths must be either absolute or relative. */ +MSPCORE_API int descendant_depth(const Path &path, const Path &parent); } // namespace FS } // namespace Msp