// Windows/FileDir.h #ifndef __WINDOWS_FILEDIR_H #define __WINDOWS_FILEDIR_H #include "../Common/MyString.h" #include "Defs.h" /* GetFullPathName for 7zAES.cpp */ DWORD WINAPI GetFullPathName( LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart ); namespace NWindows { namespace NFile { namespace NDirectory { bool SetDirTime(LPCWSTR fileName, const FILETIME *creationTime, const FILETIME *lastAccessTime, const FILETIME *lastWriteTime); bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes); #ifndef _UNICODE bool MySetFileAttributes(LPCWSTR fileName, DWORD fileAttributes); #endif bool MyMoveFile(LPCTSTR existFileName, LPCTSTR newFileName); #ifndef _UNICODE bool MyMoveFile(LPCWSTR existFileName, LPCWSTR newFileName); #endif bool MyRemoveDirectory(LPCTSTR pathName); #ifndef _UNICODE bool MyRemoveDirectory(LPCWSTR pathName); #endif bool MyCreateDirectory(LPCTSTR pathName); bool CreateComplexDirectory(LPCTSTR pathName); #ifndef _UNICODE bool MyCreateDirectory(LPCWSTR pathName); bool CreateComplexDirectory(LPCWSTR pathName); #endif 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 bool MySetCurrentDirectory(LPCWSTR path); bool MyGetCurrentDirectory(CSysString &resultPath); bool MySearchPath(LPCWSTR path, LPCWSTR fileName, LPCWSTR extension, UString &resultPath); bool MyGetTempPath(CSysString &resultPath); #ifndef _UNICODE bool MyGetTempPath(UString &resultPath); #endif class CTempFile { bool _mustBeDeleted; CSysString _fileName; public: CTempFile(): _mustBeDeleted(false) {} ~CTempFile() { Remove(); } void DisableDeleting() { _mustBeDeleted = false; } UINT Create(LPCTSTR dirPath, LPCTSTR prefix, CSysString &resultPath); bool Create(LPCTSTR prefix, CSysString &resultPath); bool Remove(); }; #ifdef _UNICODE typedef CTempFile CTempFileW; #endif bool CreateTempDirectory(LPCWSTR prefixChars, UString &dirName); class CTempDirectory { bool _mustBeDeleted; CSysString _tempDir; 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); } void DisableDeleting() { _mustBeDeleted = false; } }; #ifdef _UNICODE typedef CTempDirectory CTempDirectoryW; #endif }}} #endif