X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Futils.h;h=db6a32c74fcc684369f9345486bcabde28a02939;hp=e0c559d0450a47a2f79c873609f4ac76e32bfe0d;hb=3004842aa3281f26137c7332089068da7edb34af;hpb=66bdaa1f9f833e18a07d061208ce6080f3abac06 diff --git a/source/utils.h b/source/utils.h index e0c559d..db6a32c 100644 --- a/source/utils.h +++ b/source/utils.h @@ -1,19 +1,20 @@ -/* +/* $Id$ + This file is part of libmsppath -Copyright © 2006 Mikko Rasa, Mikkosoft Productions +Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ + #ifndef MSP_PATH_UTILS_H_ #define MSP_PATH_UTILS_H_ #include -#include #include #include -#include "path.h" namespace Msp { -namespace Path { + +class Path; struct Filename { @@ -21,21 +22,61 @@ struct Filename 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 &); +Path fix_case(const Path &path); + +/// Creates a directory +void mkdir(const Path &path, int mode); + +/// Creates a directory and any required parent directories +void mkpath(const Path &path, int mode); + +/// Removes a directory +void rmdir(const Path &path); + +/// Removes a directory and anything it contains +void rmdirs(const Path &path); + +/// Removes a file +void unlink(const Path &path); + +/// Lists the contents of a directory +std::list list_files(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 &); + +/// Tests for existence of a file +bool exists(const Path &path); + +/// Tests whether a path refers to an existing directory +bool is_dir(const Path &paht); + +/** +Gets information about a file. Returns 0 on success or -1 on error. This +version can be used to check for file existence and get information in one +call. +*/ +int stat(const Path &fn, struct stat &st); + +/** +Returns information about a file. This version throws an exception if an error +occurs. +*/ +struct stat stat(const Path &fn); + +Path getcwd(); -inline int stat(const Path &fn, struct stat &st) -{ return ::stat(fn.str().c_str(), &st); } +/// Returns the user's home directory +Path get_home_dir(); -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 Msp #endif