diff options
Diffstat (limited to 'src/libs/7zip/unix/CPP/Windows/FileDir.h')
-rw-r--r-- | src/libs/7zip/unix/CPP/Windows/FileDir.h | 134 |
1 files changed, 58 insertions, 76 deletions
diff --git a/src/libs/7zip/unix/CPP/Windows/FileDir.h b/src/libs/7zip/unix/CPP/Windows/FileDir.h index a7cfbaf8d..02d3e5a57 100644 --- a/src/libs/7zip/unix/CPP/Windows/FileDir.h +++ b/src/libs/7zip/unix/CPP/Windows/FileDir.h @@ -1,114 +1,96 @@ // Windows/FileDir.h -#ifndef __WINDOWS_FILEDIR_H -#define __WINDOWS_FILEDIR_H +#ifndef __WINDOWS_FILE_DIR_H +#define __WINDOWS_FILE_DIR_H #include "../Common/MyString.h" -#include "Defs.h" -/* GetFullPathName for 7zAES.cpp */ -DWORD WINAPI GetFullPathName( LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart ); +#include "FileIO.h" namespace NWindows { namespace NFile { -namespace NDirectory { +namespace NDir { -bool SetDirTime(LPCWSTR fileName, const FILETIME *creationTime, const FILETIME *lastAccessTime, const FILETIME *lastWriteTime); +bool GetWindowsDir(FString &path); +bool GetSystemDir(FString &path); -bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes); -#ifndef _UNICODE -bool MySetFileAttributes(LPCWSTR fileName, DWORD fileAttributes); -#endif +bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime); +bool SetFileAttrib(CFSTR path, DWORD attrib); +bool MyMoveFile(CFSTR existFileName, CFSTR newFileName); -bool MyMoveFile(LPCTSTR existFileName, LPCTSTR newFileName); -#ifndef _UNICODE -bool MyMoveFile(LPCWSTR existFileName, LPCWSTR newFileName); +#ifndef UNDER_CE +bool MyCreateHardLink(CFSTR newFileName, CFSTR existFileName); #endif -bool MyRemoveDirectory(LPCTSTR pathName); -#ifndef _UNICODE -bool MyRemoveDirectory(LPCWSTR pathName); -#endif +bool RemoveDir(CFSTR path); +bool CreateDir(CFSTR path); +bool CreateComplexDir(CFSTR path); +bool DeleteFileAlways(CFSTR name); +bool RemoveDirWithSubItems(const FString &path); -bool MyCreateDirectory(LPCTSTR pathName); -bool CreateComplexDirectory(LPCTSTR pathName); -#ifndef _UNICODE -bool MyCreateDirectory(LPCWSTR pathName); -bool CreateComplexDirectory(LPCWSTR pathName); -#endif +bool MyGetFullPathName(CFSTR path, FString &resFullPath); +bool GetFullPathAndSplit(CFSTR path, FString &resDirPrefix, FString &resFileName); +bool GetOnlyDirPrefix(CFSTR path, FString &resDirPrefix); -bool DeleteFileAlways(LPCTSTR name); -#ifndef _UNICODE -bool DeleteFileAlways(LPCWSTR name); -#endif -bool RemoveDirectoryWithSubItems(const UString &path); - -#ifndef _WIN32_WCE -bool MyGetFullPathName(LPCTSTR fileName, CSysString &resultPath, - int &fileNamePartStartIndex); -bool MyGetFullPathName(LPCTSTR fileName, CSysString &resultPath); -bool GetOnlyName(LPCTSTR fileName, CSysString &resultName); -bool GetOnlyDirPrefix(LPCTSTR fileName, CSysString &resultName); -#ifndef _UNICODE -bool MyGetFullPathName(LPCWSTR fileName, UString &resultPath, - int &fileNamePartStartIndex); -bool MyGetFullPathName(LPCWSTR fileName, UString &resultPath); -#endif - -#endif +#ifndef UNDER_CE -bool MySetCurrentDirectory(LPCWSTR path); -bool MyGetCurrentDirectory(CSysString &resultPath); +bool SetCurrentDir(CFSTR path); +bool GetCurrentDir(FString &resultPath); -bool MySearchPath(LPCWSTR path, LPCWSTR fileName, LPCWSTR extension, UString &resultPath); - -bool MyGetTempPath(CSysString &resultPath); -#ifndef _UNICODE -bool MyGetTempPath(UString &resultPath); #endif +bool MyGetTempPath(FString &resultPath); + class CTempFile { bool _mustBeDeleted; - CSysString _fileName; + FString _path; + void DisableDeleting() { _mustBeDeleted = false; } public: CTempFile(): _mustBeDeleted(false) {} ~CTempFile() { Remove(); } - void DisableDeleting() { _mustBeDeleted = false; } - UINT Create(LPCTSTR dirPath, LPCTSTR prefix, CSysString &resultPath); - bool Create(LPCTSTR prefix, CSysString &resultPath); + const FString &GetPath() const { return _path; } + bool Create(CFSTR pathPrefix, NIO::COutFile *outFile); // pathPrefix is not folder prefix + bool CreateRandomInTempFolder(CFSTR namePrefix, NIO::COutFile *outFile); bool Remove(); + bool MoveTo(CFSTR name, bool deleteDestBefore); }; -#ifdef _UNICODE -typedef CTempFile CTempFileW; -#endif - -bool CreateTempDirectory(LPCWSTR prefixChars, UString &dirName); - -class CTempDirectory +class CTempDir { bool _mustBeDeleted; - CSysString _tempDir; + FString _path; public: - const CSysString &GetPath() const { return _tempDir; } - CTempDirectory(): _mustBeDeleted(false) {} - ~CTempDirectory() { Remove(); } - bool Create(LPCTSTR prefix) ; - bool Remove() - { - if (!_mustBeDeleted) - return true; - _mustBeDeleted = !RemoveDirectoryWithSubItems(_tempDir); - return (!_mustBeDeleted); - } + CTempDir(): _mustBeDeleted(false) {} + ~CTempDir() { Remove(); } + const FString &GetPath() const { return _path; } void DisableDeleting() { _mustBeDeleted = false; } + bool Create(CFSTR namePrefix) ; + bool Remove(); }; -#ifdef _UNICODE -typedef CTempDirectory CTempDirectoryW; -#endif +#if !defined(UNDER_CE) +class CCurrentDirRestorer +{ + FString _path; +public: + bool NeedRestore; + CCurrentDirRestorer(): NeedRestore(true) + { + GetCurrentDir(_path); + } + ~CCurrentDirRestorer() + { + if (!NeedRestore) + return; + FString s; + if (GetCurrentDir(s)) + if (s != _path) + SetCurrentDir(_path); + } +}; +#endif }}} |