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}