/* $Id$
-This file is part of libmsppath
-Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
+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 <list>
-#include <string>
+#ifndef MSP_FS_UTILS_H_
+#define MSP_FS_UTILS_H_
namespace Msp {
+namespace FS {
class Path;
-struct Filename
-{
- std::string base;
- std::string ext;
-};
-
-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<std::string> list_files(const Path &path);
-
-Filename splitext(const std::string &);
-int fnmatch(const std::string &, const Path &);
+/// Extracts the last component of the path.
+std::string basename(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);
+/// Removes the last component from the path.
+Path dirname(const 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.
+Returns the base part of a filename. This includes everything up to the last
+dot, but not the dot itself.
*/
-int stat(const Path &fn, struct stat &st);
+std::string basepart(const std::string &);
/**
-Returns information about a file. This version throws an exception if an error
-occurs.
+Returns the extension part of a filename. This includes the last dot and
+everything after it.
*/
-struct stat stat(const Path &fn);
+std::string extpart(const std::string &);
-Path getcwd();
+/**
+Fixes the case of the given path to match files / directories on the
+filesystem.
+*/
+Path fix_case(const Path &path);
-/// Returns the user's home directory
-Path get_home_dir();
+/// Removes a file
+void unlink(const Path &path);
-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]==':'); }
+/// 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