X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffilesys.h;h=94d0c874dec6611e34c946b4d2ad40161ca06072;hb=e70e15134c95d37241bb6f6124105c0f1c08ab8a;hp=1b3659afee947d8f2ecd3ff78a71fe36de5bdf86;hpb=d718b0b34eda84744778fa12a01d5be5f03753d3;p=oweals%2Fminetest.git diff --git a/src/filesys.h b/src/filesys.h index 1b3659afe..94d0c874d 100644 --- a/src/filesys.h +++ b/src/filesys.h @@ -26,10 +26,14 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifdef _WIN32 // WINDOWS #define DIR_DELIM "\\" +#define DIR_DELIM_CHAR '\\' #define FILESYS_CASE_INSENSITIVE 1 +#define PATH_DELIM ";" #else // POSIX #define DIR_DELIM "/" +#define DIR_DELIM_CHAR '/' #define FILESYS_CASE_INSENSITIVE 0 +#define PATH_DELIM ":" #endif namespace fs @@ -40,22 +44,25 @@ struct DirListNode std::string name; bool dir; }; -std::vector GetDirListing(std::string path); + +std::vector GetDirListing(const std::string &path); // Returns true if already exists -bool CreateDir(std::string path); +bool CreateDir(const std::string &path); + +bool PathExists(const std::string &path); -bool PathExists(std::string path); +bool IsPathAbsolute(const std::string &path); -bool IsDir(std::string path); +bool IsDir(const std::string &path); bool IsDirDelimiter(char c); // Only pass full paths to this one. True on success. // NOTE: The WIN32 version returns always true. -bool RecursiveDelete(std::string path); +bool RecursiveDelete(const std::string &path); -bool DeleteSingleFileOrEmptyDirectory(std::string path); +bool DeleteSingleFileOrEmptyDirectory(const std::string &path); // Returns path to temp directory, can return "" on error std::string TempPath(); @@ -63,34 +70,34 @@ std::string TempPath(); /* Multiplatform */ // The path itself not included -void GetRecursiveSubPaths(std::string path, std::vector &dst); +void GetRecursiveSubPaths(const std::string &path, std::vector &dst); // Tries to delete all, returns false if any failed bool DeletePaths(const std::vector &paths); // Only pass full paths to this one. True on success. -bool RecursiveDeleteContent(std::string path); +bool RecursiveDeleteContent(const std::string &path); // Create all directories on the given path that don't already exist. -bool CreateAllDirs(std::string path); +bool CreateAllDirs(const std::string &path); // Copy a regular file -bool CopyFileContents(std::string source, std::string target); +bool CopyFileContents(const std::string &source, const std::string &target); // Copy directory and all subdirectories // Omits files and subdirectories that start with a period -bool CopyDir(std::string source, std::string target); +bool CopyDir(const std::string &source, const std::string &target); // Check if one path is prefix of another // For example, "/tmp" is a prefix of "/tmp" and "/tmp/file" but not "/tmp2" // Ignores case differences and '/' vs. '\\' on Windows -bool PathStartsWith(std::string path, std::string prefix); +bool PathStartsWith(const std::string &path, const std::string &prefix); // Remove last path component and the dir delimiter before and/or after it, // returns "" if there is only one path component. // removed: If non-NULL, receives the removed component(s). // count: Number of components to remove -std::string RemoveLastPathComponent(std::string path, +std::string RemoveLastPathComponent(const std::string &path, std::string *removed = NULL, int count = 1); // Remove "." and ".." path components and for every ".." removed, remove @@ -98,9 +105,19 @@ std::string RemoveLastPathComponent(std::string path, // this does not resolve symlinks and check for existence of directories. std::string RemoveRelativePathComponents(std::string path); +// Returns the absolute path for the passed path, with "." and ".." path +// components and symlinks removed. Returns "" on error. +std::string AbsolutePath(const std::string &path); + +// Returns the filename from a path or the entire path if no directory +// delimiter is found. +const char *GetFilenameFromPath(const char *path); + bool safeWriteToFile(const std::string &path, const std::string &content); -}//fs +bool Rename(const std::string &from, const std::string &to); + +} // namespace fs #endif