]> git.tdb.fi Git - libs/core.git/blobdiff - source/utils.h
Add rename function
[libs/core.git] / source / utils.h
index 2b2f23cba6cc2168ccd0c61a4a4bfe92f58bf60a..c582c2217ba7b489bbd43fb0801904ffb134c013 100644 (file)
@@ -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 <sys/stat.h>
-#include <unistd.h>
-#include <list>
-#include <string>
+#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<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 &);
-
-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