X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Futils.h;h=9b4a1e0f706d972f3f3cfbc3472a047cbd35129e;hb=4746ebf6540fa19978a92a1695de11495701f1ac;hp=a828c92e3ed76e21a90efe22b3d7de2c985b7506;hpb=f91f1df3e0b00b3a270e571d4b2c8251da4d1226;p=libs%2Fcore.git diff --git a/source/utils.h b/source/utils.h index a828c92..9b4a1e0 100644 --- a/source/utils.h +++ b/source/utils.h @@ -8,33 +8,47 @@ Distributed under the LGPL #ifndef MSP_FS_UTILS_H_ #define MSP_FS_UTILS_H_ +#include "path.h" + namespace Msp { namespace FS { -class Path; +/// Extracts the last component of the path. +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 &); -struct Filename -{ - std::string base; - std::string ext; -}; +/** +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); +/// Reads the contents of a symbolic link +Path readlink(const Path &path); + +/// Resolves all symlinks from a path. Will always return an absolute path. +Path realpath(const Path &path); + /// Removes a file void unlink(const Path &path); -Filename splitext(const std::string &); -int fnmatch(const std::string &, const Path &); - /// Makes a path relative to some base path. That is, base/result==path. Path relative(const Path &path, const Path &base); -std::string basename(const std::string &); - -inline bool is_windows_drive(const std::string &p) -{ return (p.size()==2 && ((p[0]>='A' && p[0]<='Z') || (p[0]>='a' && p[0]<='z')) && p[1]==':'); } - } // namespace FS } // namespace Msp