X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Futils.h;fp=source%2Ffs%2Futils.h;h=6a4c55add16f7ec305d40341d7f65fe48d65710b;hp=0000000000000000000000000000000000000000;hb=af94bc926e301e9b871dc18662b4fa6e5614fdbf;hpb=fa77438b62207466c48620604c8cc34931080936 diff --git a/source/fs/utils.h b/source/fs/utils.h new file mode 100644 index 0000000..6a4c55a --- /dev/null +++ b/source/fs/utils.h @@ -0,0 +1,62 @@ +/* $Id$ + +This file is part of libmspfs +Copyright © 2006-2008 Mikko Rasa, Mikkosoft Productions +Distributed under the LGPL +*/ + +#ifndef MSP_FS_UTILS_H_ +#define MSP_FS_UTILS_H_ + +#include "path.h" + +namespace Msp { +namespace FS { + +/// 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 &); + +/** +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); + +/// 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. +Path relative(const Path &path, const Path &base); + +/** 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); + +} // namespace FS +} // namespace Msp + +#endif