|
|
1.1 ! root 1: /* ! 2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved. ! 3: ! 4: Governed by the TrueCrypt License 2.4 the full text of which is contained ! 5: in the file License.txt included in TrueCrypt binary and source code ! 6: distribution packages. ! 7: */ ! 8: ! 9: #ifndef TC_HEADER_Platform_FilesystemPath ! 10: #define TC_HEADER_Platform_FilesystemPath ! 11: ! 12: #include "PlatformBase.h" ! 13: #include "SharedPtr.h" ! 14: #include "StringConverter.h" ! 15: ! 16: namespace TrueCrypt ! 17: { ! 18: struct FilesystemPathType ! 19: { ! 20: enum Enum ! 21: { ! 22: Unknown, ! 23: File, ! 24: Directory, ! 25: SymbolickLink, ! 26: BlockDevice, ! 27: CharacterDevice ! 28: }; ! 29: }; ! 30: ! 31: class FilesystemPath ! 32: { ! 33: public: ! 34: FilesystemPath () { } ! 35: FilesystemPath (const char *path) : Path (StringConverter::ToWide (path)) { } ! 36: FilesystemPath (string path) : Path (StringConverter::ToWide (path)) { } ! 37: FilesystemPath (const wchar_t *path) : Path (path) { } ! 38: FilesystemPath (wstring path) : Path (path) { } ! 39: virtual ~FilesystemPath () { } ! 40: ! 41: bool operator== (const FilesystemPath &other) const { return Path == other.Path; } ! 42: bool operator!= (const FilesystemPath &other) const { return Path != other.Path; } ! 43: operator string () const { return StringConverter::ToSingle (Path); } ! 44: operator wstring () const { return Path; } ! 45: ! 46: void Delete () const; ! 47: FilesystemPathType::Enum GetType () const; ! 48: bool IsBlockDevice () const throw () { try { return GetType() == FilesystemPathType::BlockDevice; } catch (...) { return false; }; } ! 49: bool IsCharacterDevice () const throw () { try { return GetType() == FilesystemPathType::CharacterDevice; } catch (...) { return false; }; } ! 50: bool IsDevice () const throw () { return IsBlockDevice() || IsCharacterDevice(); } ! 51: bool IsDirectory () const throw () { try { return GetType() == FilesystemPathType::Directory; } catch (...) { return false; } } ! 52: bool IsEmpty () const throw () { try { return Path.empty(); } catch (...) { return false; } } ! 53: bool IsFile () const throw () { try { return GetType() == FilesystemPathType::File; } catch (...) { return false; } } ! 54: ! 55: static const int MaxSize = 260; ! 56: ! 57: protected: ! 58: wstring Path; ! 59: }; ! 60: ! 61: typedef FilesystemPath DevicePath; ! 62: typedef FilesystemPath DirectoryPath; ! 63: typedef FilesystemPath FilePath; ! 64: ! 65: typedef list < shared_ptr <DirectoryPath> > DirectoryPathList; ! 66: typedef list < shared_ptr <FilePath> > FilePathList; ! 67: } ! 68: ! 69: #endif // TC_HEADER_Platform_FilesystemPath
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.