X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Ffilesys.h;h=fa9ddcaa8914d62e2b2882afe911f42e19a1703d;hb=84787962269bb170b3e9f76d2706cbfd2232586a;hp=a9584b036e176a6c6d173f6bfeaa1a82af3b4eec;hpb=225d4541ffb4d59001841747e0877a175da50c17;p=minetest.git diff --git a/src/filesys.h b/src/filesys.h index a9584b036..fa9ddcaa8 100644 --- a/src/filesys.h +++ b/src/filesys.h @@ -24,12 +24,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "exceptions.h" -#ifdef _WIN32 // WINDOWS +#ifdef _WIN32 #define DIR_DELIM "\\" #define DIR_DELIM_CHAR '\\' #define FILESYS_CASE_INSENSITIVE true #define PATH_DELIM ";" -#else // POSIX +#else #define DIR_DELIM "/" #define DIR_DELIM_CHAR '/' #define FILESYS_CASE_INSENSITIVE false @@ -60,6 +60,13 @@ bool IsPathAbsolute(const std::string &path); bool IsDir(const std::string &path); +bool IsExecutable(const std::string &path); + +inline bool IsFile(const std::string &path) +{ + return PathExists(path) && !IsDir(path); +} + bool IsDirDelimiter(char c); // Only pass full paths to this one. True on success. @@ -71,6 +78,10 @@ bool DeleteSingleFileOrEmptyDirectory(const std::string &path); // Returns path to temp directory, can return "" on error std::string TempPath(); +// Returns path to securely-created temporary file (will already exist when this function returns) +// can return "" on error +std::string CreateTempFile(); + /* Returns a list of subdirectories, including the path itself, but excluding hidden directories (whose names start with . or _) */ @@ -102,6 +113,10 @@ bool CopyFileContents(const std::string &source, const std::string &target); // Omits files and subdirectories that start with a period bool CopyDir(const std::string &source, const std::string &target); +// Move directory and all subdirectories +// Behavior with files/subdirs that start with a period is undefined +bool MoveDir(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 @@ -129,7 +144,9 @@ const char *GetFilenameFromPath(const char *path); bool safeWriteToFile(const std::string &path, const std::string &content); +#ifndef SERVER bool extractZipFile(irr::io::IFileSystem *fs, const char *filename, const std::string &destination); +#endif bool ReadFile(const std::string &path, std::string &out);