Update README.md
[nemesis.git] / Platform / FilesystemPath.h
1 /*
2  Copyright (c) 2008 TrueCrypt Developers Association. All rights reserved.
3
4  Governed by the TrueCrypt License 3.0 the full text of which is contained in
5  the file License.txt included in TrueCrypt binary and source code distribution
6  packages.
7 */
8
9 #ifndef TC_HEADER_Platform_FilesystemPath
10 #define TC_HEADER_Platform_FilesystemPath
11
12 #include "PlatformBase.h"
13 #include "Platform/User.h"
14 #include "SharedPtr.h"
15 #include "StringConverter.h"
16
17 namespace TrueCrypt
18 {
19         struct FilesystemPathType
20         {
21                 enum Enum
22                 {
23                         Unknown,
24                         File,
25                         Directory,
26                         SymbolickLink,
27                         BlockDevice,
28                         CharacterDevice
29                 };
30         };
31
32         class FilesystemPath 
33         {
34         public:
35                 FilesystemPath () { }
36                 FilesystemPath (const char *path) : Path (StringConverter::ToWide (path)) { }
37                 FilesystemPath (string path) : Path (StringConverter::ToWide (path)) { }
38                 FilesystemPath (const wchar_t *path) : Path (path) { }
39                 FilesystemPath (wstring path) : Path (path) { }
40                 virtual ~FilesystemPath () { }
41
42                 bool operator== (const FilesystemPath &other) const { return Path == other.Path; }
43                 bool operator!= (const FilesystemPath &other) const { return Path != other.Path; }
44                 operator string () const { return StringConverter::ToSingle (Path); }
45                 operator wstring () const { return Path; }
46
47                 void Delete () const;
48                 UserId GetOwner () const;
49                 FilesystemPathType::Enum GetType () const;
50                 bool IsBlockDevice () const throw () { try { return GetType() == FilesystemPathType::BlockDevice; } catch (...) { return false; }; }
51                 bool IsCharacterDevice () const throw () { try { return GetType() == FilesystemPathType::CharacterDevice; } catch (...) { return false; }; }
52                 bool IsDevice () const throw () { return IsBlockDevice() || IsCharacterDevice(); }
53                 bool IsDirectory () const throw () { try { return GetType() == FilesystemPathType::Directory; } catch (...) { return false; } }
54                 bool IsEmpty () const throw () { try { return Path.empty(); } catch (...) { return false; } }
55                 bool IsFile () const throw () { try { return GetType() == FilesystemPathType::File; } catch (...) { return false; } }
56                 FilesystemPath ToBaseName () const;
57                 FilesystemPath ToHostDriveOfPartition () const;
58                 
59                 static const int MaxSize = 260;
60
61         protected:
62                 wstring Path;
63         };
64
65         typedef FilesystemPath DevicePath;
66         typedef FilesystemPath DirectoryPath;
67         typedef FilesystemPath FilePath;
68
69         typedef list < shared_ptr <DirectoryPath> > DirectoryPathList;
70         typedef list < shared_ptr <FilePath> > FilePathList;
71 }
72
73 #endif // TC_HEADER_Platform_FilesystemPath
This page took 0.018668 seconds and 3 git commands to generate. Download a nemesis OSX (sierra+high sierra, tested/working) binary, with fuse-ext3 via e2fsprogs, at this link. application and installer are signed by screwjack, llc. must install fuse with macFUSE layer first.