dia_files/file_system.rs
1/*
2==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--
3
4Dia-Files
5
6Copyright (C) 2019-2025 Anonymous
7
8There are several releases over multiple years,
9they are listed as ranges, such as: "2019-2025".
10
11This program is free software: you can redistribute it and/or modify
12it under the terms of the GNU Lesser General Public License as published by
13the Free Software Foundation, either version 3 of the License, or
14(at your option) any later version.
15
16This program is distributed in the hope that it will be useful,
17but WITHOUT ANY WARRANTY; without even the implied warranty of
18MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19GNU Lesser General Public License for more details.
20
21You should have received a copy of the GNU Lesser General Public License
22along with this program. If not, see <https://www.gnu.org/licenses/>.
23
24::--::--::--::--::--::--::--::--::--::--::--::--::--::--::--::--
25*/
26
27//! # File System
28
29/// # File System
30///
31/// ## References
32///
33/// - `statfs(2)`
34#[derive(Debug, Hash, Eq, PartialEq)]
35pub enum FileSystem {
36
37 /// # `libc::ADFS_SUPER_MAGIC`
38 ADFSSuper,
39
40 /// # `libc::AFFS_SUPER_MAGIC`
41 AFFSSuper,
42
43 /// # `libc::AFS_SUPER_MAGIC`
44 AFSSuper,
45
46 /// # `libc::AUTOFS_SUPER_MAGIC`
47 AutoFSSuper,
48
49 /// # `libc::BPF_FS_MAGIC`
50 BpfFS,
51
52 /// # `libc::BTRFS_SUPER_MAGIC`
53 BtrFSSuper,
54
55 /// # `libc::CGROUP_SUPER_MAGIC`
56 CgroupSuper,
57
58 /// # `libc::CGROUP2_SUPER_MAGIC`
59 Cgroup2Super,
60
61 /// # `libc::CODA_SUPER_MAGIC`
62 CodaSuper,
63
64 /// # `libc::CRAMFS_MAGIC`
65 CramFS,
66
67 /// # `libc::DEBUGFS_MAGIC`
68 DebugFS,
69
70 /// # `libc::DEVPTS_SUPER_MAGIC`
71 DevPtsSuper,
72
73 /// # `libc::ECRYPTFS_SUPER_MAGIC`
74 EcryptFSSuper,
75
76 /// # `libc::EFS_SUPER_MAGIC`
77 EFSSuper,
78
79 /// # `libc::EXT4_SUPER_MAGIC`
80 Ext234Super,
81
82 /// # `libc::F2FS_SUPER_MAGIC`
83 F2FSSuper,
84
85 /// # `libc::FUSE_SUPER_MAGIC`
86 FuseSuper,
87
88 /// # `libc::FUTEXFS_SUPER_MAGIC`
89 FutexFSSuper,
90
91 /// # `libc::HOSTFS_SUPER_MAGIC`
92 HostFSSuper,
93
94 /// # `libc::HPFS_SUPER_MAGIC`
95 HPFSSuper,
96
97 /// # `libc::HUGETLBFS_MAGIC`
98 HugeTLBFS,
99
100 /// # `libc::ISOFS_SUPER_MAGIC`
101 IsoFSSuper,
102
103 /// # `libc::JFFS2_SUPER_MAGIC`
104 JFFS2Super,
105
106 /// # `libc::MINIX_SUPER_MAGIC`
107 MINIXSuper,
108
109 /// # `libc::MINIX_SUPER_MAGIC2`
110 MINIXSuper2,
111
112 /// # `libc::MINIX2_SUPER_MAGIC`
113 MINIX2Super,
114
115 /// # `libc::MINIX2_SUPER_MAGIC2`
116 MINIX2Super2,
117
118 /// # `libc::MINIX3_SUPER_MAGIC`
119 MINIX3Super,
120
121 /// # `libc::MSDOS_SUPER_MAGIC`
122 MSDOSSuper,
123
124 /// # `libc::NCP_SUPER_MAGIC`
125 NCPSuper,
126
127 /// # `libc::NFS_SUPER_MAGIC`
128 NFSSuper,
129
130 /// # `libc::NILFS_SUPER_MAGIC`
131 NILFSSuper,
132
133 /// # `libc::NSFS_MAGIC`
134 NSFS,
135
136 /// # `libc::OCFS2_SUPER_MAGIC`
137 OCFS2Super,
138
139 /// # `libc::OPENPROM_SUPER_MAGIC`
140 OpenPROMSuper,
141
142 /// # `libc::OVERLAYFS_SUPER_MAGIC`
143 OverlayFSSuper,
144
145 /// # `libc::PROC_SUPER_MAGIC`
146 ProcSuper,
147
148 /// # `libc::QNX4_SUPER_MAGIC`
149 QNX4Super,
150
151 /// # `libc::QNX6_SUPER_MAGIC`
152 QNX6Super,
153
154 /// # `libc::REISERFS_SUPER_MAGIC`
155 ReiserFSSuper,
156
157 /// # `libc::SECURITYFS_MAGIC`
158 SecurityFS,
159
160 /// # `libc::SELINUX_MAGIC`
161 SELinux,
162
163 /// # `libc::SMACK_MAGIC`
164 Smack,
165
166 /// # `libc::SMB_SUPER_MAGIC`
167 SMBSuper,
168
169 /// # `libc::SYSFS_MAGIC`
170 SysFS,
171
172 /// # `libc::TMPFS_MAGIC`
173 TmpFS,
174
175 /// # `libc::TRACEFS_MAGIC`
176 TraceFS,
177
178 /// # `libc::UDF_SUPER_MAGIC`
179 UDFSuper,
180
181 /// # `libc::USBDEVICE_SUPER_MAGIC`
182 USBDeviceSuper,
183
184 /// # `libc::XENFS_SUPER_MAGIC`
185 XENFSSuper,
186
187 /// # `libc::XFS_SUPER_MAGIC`
188 XFSSuper,
189
190 /// # Unknown
191 Unknown,
192
193}
194
195impl FileSystem {
196
197 /// # Magic ID from `libc`
198 #[cfg(all(feature="libc", unix))]
199 #[doc(cfg(all(feature="libc", unix)))]
200 pub const fn magic_id(&self) -> i64 {
201 match self {
202 Self::ADFSSuper => libc::ADFS_SUPER_MAGIC,
203 Self::AFFSSuper => libc::AFFS_SUPER_MAGIC,
204 Self::AFSSuper => libc::AFS_SUPER_MAGIC,
205 Self::AutoFSSuper => libc::AUTOFS_SUPER_MAGIC,
206 Self::BpfFS => libc::BPF_FS_MAGIC,
207 Self::BtrFSSuper => libc::BTRFS_SUPER_MAGIC,
208 Self::CgroupSuper => libc::CGROUP_SUPER_MAGIC,
209 Self::Cgroup2Super => libc::CGROUP2_SUPER_MAGIC,
210 Self::CodaSuper => libc::CODA_SUPER_MAGIC,
211 Self::CramFS => libc::CRAMFS_MAGIC,
212 Self::DebugFS => libc::DEBUGFS_MAGIC,
213 Self::DevPtsSuper => libc::DEVPTS_SUPER_MAGIC,
214 Self::EcryptFSSuper => libc::ECRYPTFS_SUPER_MAGIC,
215 Self::EFSSuper => libc::EFS_SUPER_MAGIC,
216 Self::Ext234Super => libc::EXT4_SUPER_MAGIC,
217 Self::F2FSSuper => libc::F2FS_SUPER_MAGIC,
218 Self::FuseSuper => libc::FUSE_SUPER_MAGIC,
219 Self::FutexFSSuper => libc::FUTEXFS_SUPER_MAGIC,
220 Self::HostFSSuper => libc::HOSTFS_SUPER_MAGIC,
221 Self::HPFSSuper => libc::HPFS_SUPER_MAGIC,
222 Self::HugeTLBFS => libc::HUGETLBFS_MAGIC,
223 Self::IsoFSSuper => libc::ISOFS_SUPER_MAGIC,
224 Self::JFFS2Super => libc::JFFS2_SUPER_MAGIC,
225 Self::MINIXSuper => libc::MINIX_SUPER_MAGIC,
226 Self::MINIXSuper2 => libc::MINIX_SUPER_MAGIC2,
227 Self::MINIX2Super => libc::MINIX2_SUPER_MAGIC,
228 Self::MINIX2Super2 => libc::MINIX2_SUPER_MAGIC2,
229 Self::MINIX3Super => libc::MINIX3_SUPER_MAGIC,
230 Self::MSDOSSuper => libc::MSDOS_SUPER_MAGIC,
231 Self::NCPSuper => libc::NCP_SUPER_MAGIC,
232 Self::NFSSuper => libc::NFS_SUPER_MAGIC,
233 Self::NILFSSuper => libc::NILFS_SUPER_MAGIC,
234 Self::NSFS => libc::NSFS_MAGIC,
235 Self::OCFS2Super => libc::OCFS2_SUPER_MAGIC,
236 Self::OpenPROMSuper => libc::OPENPROM_SUPER_MAGIC,
237 Self::OverlayFSSuper => libc::OVERLAYFS_SUPER_MAGIC,
238 Self::ProcSuper => libc::PROC_SUPER_MAGIC,
239 Self::QNX4Super => libc::QNX4_SUPER_MAGIC,
240 Self::QNX6Super => libc::QNX6_SUPER_MAGIC,
241 Self::ReiserFSSuper => libc::REISERFS_SUPER_MAGIC,
242 Self::SecurityFS => libc::SECURITYFS_MAGIC,
243 Self::SELinux => libc::SELINUX_MAGIC,
244 Self::Smack => libc::SMACK_MAGIC,
245 Self::SMBSuper => libc::SMB_SUPER_MAGIC,
246 Self::SysFS => libc::SYSFS_MAGIC,
247 Self::TmpFS => libc::TMPFS_MAGIC,
248 Self::TraceFS => libc::TRACEFS_MAGIC,
249 Self::UDFSuper => libc::UDF_SUPER_MAGIC,
250 Self::USBDeviceSuper => libc::USBDEVICE_SUPER_MAGIC,
251 Self::XENFSSuper => libc::XENFS_SUPER_MAGIC,
252 Self::XFSSuper => libc::XFS_SUPER_MAGIC,
253 Self::Unknown => 0,
254 }
255 }
256
257}