Source code
Revision control
Copy as Markdown
Other Tools
// Windows/FileDir.h↩
↩
#ifndef __WINDOWS_FILE_DIR_H↩
#define __WINDOWS_FILE_DIR_H↩
↩
#include "../Common/MyString.h"↩
↩
#include "FileIO.h"↩
↩
namespace NWindows {↩
namespace NFile {↩
namespace NDir {↩
↩
bool GetWindowsDir(FString &path);↩
bool GetSystemDir(FString &path);↩
↩
bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime);↩
↩
↩
bool SetFileAttrib(CFSTR path, DWORD attrib);↩
↩
/*↩
Some programs store posix attributes in high 16 bits of windows attributes field.↩
Also some programs use additional flag markers: 0x8000 or 0x4000.↩
SetFileAttrib_PosixHighDetect() tries to detect posix field, and it extracts only attribute↩
bits that are related to current system only.↩
*/↩
↩
bool SetFileAttrib_PosixHighDetect(CFSTR path, DWORD attrib);↩
↩
↩
bool MyMoveFile(CFSTR existFileName, CFSTR newFileName);↩
↩
#ifndef UNDER_CE↩
bool MyCreateHardLink(CFSTR newFileName, CFSTR existFileName);↩
#endif↩
↩
bool RemoveDir(CFSTR path);↩
bool CreateDir(CFSTR path);↩
↩
/* CreateComplexDir returns true, if directory can contain files after the call (two cases):↩
1) the directory already exists (network shares and drive paths are supported)↩
2) the directory was created↩
path can be WITH or WITHOUT trailing path separator. */↩
↩
bool CreateComplexDir(CFSTR path);↩
↩
bool DeleteFileAlways(CFSTR name);↩
bool RemoveDirWithSubItems(const FString &path);↩
↩
bool MyGetFullPathName(CFSTR path, FString &resFullPath);↩
bool GetFullPathAndSplit(CFSTR path, FString &resDirPrefix, FString &resFileName);↩
bool GetOnlyDirPrefix(CFSTR path, FString &resDirPrefix);↩
↩
#ifndef UNDER_CE↩
↩
bool SetCurrentDir(CFSTR path);↩
bool GetCurrentDir(FString &resultPath);↩
↩
#endif↩
↩
bool MyGetTempPath(FString &resultPath);↩
↩
class CTempFile↩
{↩
bool _mustBeDeleted;↩
FString _path;↩
void DisableDeleting() { _mustBeDeleted = false; }↩
public:↩
CTempFile(): _mustBeDeleted(false) {}↩
~CTempFile() { Remove(); }↩
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);↩
};↩
↩
class CTempDir↩
{↩
bool _mustBeDeleted;↩
FString _path;↩
public:↩
CTempDir(): _mustBeDeleted(false) {}↩
~CTempDir() { Remove(); }↩
const FString &GetPath() const { return _path; }↩
void DisableDeleting() { _mustBeDeleted = false; }↩
bool Create(CFSTR namePrefix) ;↩
bool Remove();↩
};↩
↩
#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↩
↩
}}}↩
↩
#endif↩