X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Futils.h;h=a6d956869bf633d531d35e24636b8b37519e35f4;hb=a17d6ad286e19e2222ab8b6c9a762a83bf2c6c56;hp=ed0bdcc3217dc1821d065a0483426ff283ad96e2;hpb=9a8993b390544fb3e6b23ed562e2a2d4a62e4a7c;p=libs%2Fcore.git diff --git a/source/utils.h b/source/utils.h index ed0bdcc..a6d9568 100644 --- a/source/utils.h +++ b/source/utils.h @@ -1,36 +1,49 @@ -#ifndef MSP_PATH_UTILS_H_ -#define MSP_PATH_UTILS_H_ +/* $Id$ -#include -#include -#include -#include -#include "path.h" +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_ namespace Msp { -namespace Path { +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 &); -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 &); +/** +Fixes the case of the given path to match files / directories on the +filesystem. +*/ +Path fix_case(const Path &path); -inline int stat(const Path &fn, struct stat &st) -{ return ::stat(fn.str().c_str(), &st); } +/// Removes a file +void unlink(const Path &path); -inline Path getcwd() -{ char buf[1024]; return ::getcwd(buf, sizeof(buf)); } +/// Makes a path relative to some base path. That is, base/result==path. +Path relative(const Path &path, const Path &base); -} // namespace Path +} // namespace FS } // namespace Msp #endif