]> git.tdb.fi Git - libs/core.git/blobdiff - source/utils.h
Get rid of the Path namespace
[libs/core.git] / source / utils.h
index 2b2f23cba6cc2168ccd0c61a4a4bfe92f58bf60a..47efcacd9ddb24e299411793ca745ada759ac829 100644 (file)
@@ -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 <sys/stat.h>
-#include <unistd.h>
 #include <list>
 #include <string>
-#include "path.h"
 
 namespace Msp {
-namespace Path {
+
+class Path;
 
 struct Filename
 {
@@ -21,26 +22,55 @@ 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<std::string> 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 &);
+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);
 
-inline int stat(const Path &fn, struct stat &st)
-{ return ::stat(fn.str().c_str(), &st); }
+/// Lists the contents of a directory
+std::list<std::string> 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);
+
+/**
+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);
 
-inline Path getcwd()
-{ char buf[1024]; return ::getcwd(buf, sizeof(buf)); }
+Path getcwd();
 
 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