X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Futils.h;h=9c4bb5ca47fdeed1035a341d5e06e2bac54b00f8;hp=f345ba7e7f3266a2bba26c298821129ae49a8635;hb=HEAD;hpb=7563bb650aa11207a7c128ba44468cf5ad2897c7 diff --git a/source/fs/utils.h b/source/fs/utils.h index f345ba7..9c4bb5c 100644 --- a/source/fs/utils.h +++ b/source/fs/utils.h @@ -1,53 +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 &); - -/** -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. -*/ -std::string extpart(const std::string &); - -/** -Fixes the case of the given path to match files / directories on the -filesystem. -*/ -Path fix_case(const Path &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. */ +MSPCORE_API std::string basepart(const std::string &); + +/** Returns the extension part of a filename. This includes the last dot and +everything after it. */ +MSPCORE_API std::string extpart(const std::string &); + +/// Fixes the case of a path to match files / directories on the filesystem. +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. Both +paths must be either absolute or relative. */ +MSPCORE_API Path relative(const Path &path, const Path &base); -/// 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. +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