X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Futils.h;h=c582c2217ba7b489bbd43fb0801904ffb134c013;hp=2b2f23cba6cc2168ccd0c61a4a4bfe92f58bf60a;hb=aa31c2bbb399ded6493f7edc419b1a500ed25895;hpb=e48e54c5690d086c3f3ffb6f34f424f253bfb6b1 diff --git a/source/utils.h b/source/utils.h index 2b2f23c..c582c22 100644 --- a/source/utils.h +++ b/source/utils.h @@ -1,46 +1,58 @@ -/* -This file is part of libmsppath -Copyright © 2006 Mikko Rasa, Mikkosoft Productions +/* $Id$ + +This file is part of libmspfs +Copyright © 2006-2008 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ -#ifndef MSP_PATH_UTILS_H_ -#define MSP_PATH_UTILS_H_ -#include -#include -#include -#include +#ifndef MSP_FS_UTILS_H_ +#define MSP_FS_UTILS_H_ + #include "path.h" namespace Msp { -namespace Path { - -struct Filename -{ - std::string base; - std::string ext; -}; - -extern Path fix_case(const Path &); -extern int mkpath(const Path &, int); -extern int rmdir(const Path &, bool =false); -extern std::list list_files(const Path &); -extern bool exists(const Path &); -extern Filename splitext(const std::string &); -extern int fnmatch(const std::string &, const Path &); -extern Path relative(const Path &, const Path &); -extern std::string basename(const std::string &); - -inline int stat(const Path &fn, struct stat &st) -{ return ::stat(fn.str().c_str(), &st); } - -inline Path getcwd() -{ char buf[1024]; return ::getcwd(buf, sizeof(buf)); } - -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 Path +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); + +} // namespace FS } // namespace Msp #endif