@@ -157,6 +157,80 @@ mod stat { |
157 | 157 | } |
158 | 158 | }; |
159 | 159 |
|
| 160 | + // Windows file attributes (if on Windows) |
| 161 | + |
| 162 | + #[cfg(windows)] |
| 163 | + #[pyattr] |
| 164 | + pub use windows_sys::Win32::Storage::FileSystem::{ |
| 165 | + FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_COMPRESSED, FILE_ATTRIBUTE_DEVICE, |
| 166 | + FILE_ATTRIBUTE_DIRECTORY, FILE_ATTRIBUTE_ENCRYPTED, FILE_ATTRIBUTE_HIDDEN, |
| 167 | + FILE_ATTRIBUTE_INTEGRITY_STREAM, FILE_ATTRIBUTE_NO_SCRUB_DATA, FILE_ATTRIBUTE_NORMAL, |
| 168 | + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, FILE_ATTRIBUTE_OFFLINE, FILE_ATTRIBUTE_READONLY, |
| 169 | + FILE_ATTRIBUTE_REPARSE_POINT, FILE_ATTRIBUTE_SPARSE_FILE, FILE_ATTRIBUTE_SYSTEM, |
| 170 | + FILE_ATTRIBUTE_TEMPORARY, FILE_ATTRIBUTE_VIRTUAL, |
| 171 | + }; |
| 172 | + |
| 173 | + // Unix file flags (if on Unix) |
| 174 | + |
| 175 | + #[pyattr] |
| 176 | + pub const UF_NODUMP: u32 = macos_libc_get!(UF_NODUMP, 0x00000001); |
| 177 | + |
| 178 | + #[pyattr] |
| 179 | + pub const UF_IMMUTABLE: u32 = macos_libc_get!(UF_IMMUTABLE, 0x00000002); |
| 180 | + |
| 181 | + #[pyattr] |
| 182 | + pub const UF_APPEND: u32 = macos_libc_get!(UF_APPEND, 0x00000004); |
| 183 | + |
| 184 | + #[pyattr] |
| 185 | + pub const UF_OPAQUE: u32 = macos_libc_get!(UF_OPAQUE, 0x00000008); |
| 186 | + |
| 187 | + #[pyattr] |
| 188 | + pub const UF_COMPRESSED: u32 = macos_libc_get!(UF_COMPRESSED, 0x00000020); |
| 189 | + |
| 190 | + #[pyattr] |
| 191 | + pub const UF_HIDDEN: u32 = macos_libc_get!(UF_HIDDEN, 0x00008000); |
| 192 | + |
| 193 | + #[pyattr] |
| 194 | + pub const SF_ARCHIVED: u32 = macos_libc_get!(SF_ARCHIVED, 0x00010000); |
| 195 | + |
| 196 | + #[pyattr] |
| 197 | + pub const SF_IMMUTABLE: u32 = macos_libc_get!(SF_IMMUTABLE, 0x00020000); |
| 198 | + |
| 199 | + #[pyattr] |
| 200 | + pub const SF_APPEND: u32 = macos_libc_get!(SF_APPEND, 0x00040000); |
| 201 | + |
| 202 | + #[pyattr] |
| 203 | + pub const SF_SETTABLE: u32 = if cfg!(target_os = "macos") { |
| 204 | + 0x3fff0000 |
| 205 | + } else { |
| 206 | + 0xffff0000 |
| 207 | + }; |
| 208 | + |
| 209 | + #[pyattr] |
| 210 | + pub const UF_NOUNLINK: u32 = 0x00000010; |
| 211 | + |
| 212 | + #[pyattr] |
| 213 | + pub const SF_NOUNLINK: u32 = 0x00100000; |
| 214 | + |
| 215 | + #[pyattr] |
| 216 | + pub const SF_SNAPSHOT: u32 = 0x00200000; |
| 217 | + |
| 218 | + #[pyattr] |
| 219 | + pub const SF_FIRMLINK: u32 = 0x00800000; |
| 220 | + |
| 221 | + #[pyattr] |
| 222 | + pub const SF_DATALESS: u32 = 0x40000000; |
| 223 | + |
| 224 | + // MacOS specific |
| 225 | + |
| 226 | + #[cfg(target_os = "macos")] |
| 227 | + #[pyattr] |
| 228 | + pub const SF_SUPPORTED: u32 = 0x009f0000; |
| 229 | + |
| 230 | + #[cfg(target_os = "macos")] |
| 231 | + #[pyattr] |
| 232 | + pub const SF_SYNTHETIC: u32 = 0xc0000000; |
| 233 | + |
160 | 234 | // Stat result indices |
161 | 235 |
|
162 | 236 | #[pyattr] |
@@ -333,80 +407,6 @@ mod stat { |
333 | 407 |
|
334 | 408 | result |
335 | 409 | } |
336 | | - |
337 | | - // Windows file attributes (if on Windows) |
338 | | - |
339 | | - #[cfg(windows)] |
340 | | - #[pyattr] |
341 | | - pub use windows_sys::Win32::Storage::FileSystem::{ |
342 | | - FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_COMPRESSED, FILE_ATTRIBUTE_DEVICE, |
343 | | - FILE_ATTRIBUTE_DIRECTORY, FILE_ATTRIBUTE_ENCRYPTED, FILE_ATTRIBUTE_HIDDEN, |
344 | | - FILE_ATTRIBUTE_INTEGRITY_STREAM, FILE_ATTRIBUTE_NO_SCRUB_DATA, FILE_ATTRIBUTE_NORMAL, |
345 | | - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, FILE_ATTRIBUTE_OFFLINE, FILE_ATTRIBUTE_READONLY, |
346 | | - FILE_ATTRIBUTE_REPARSE_POINT, FILE_ATTRIBUTE_SPARSE_FILE, FILE_ATTRIBUTE_SYSTEM, |
347 | | - FILE_ATTRIBUTE_TEMPORARY, FILE_ATTRIBUTE_VIRTUAL, |
348 | | - }; |
349 | | - |
350 | | - // Unix file flags (if on Unix) |
351 | | - |
352 | | - #[pyattr] |
353 | | - pub const UF_NODUMP: u32 = macos_libc_get!(UF_NODUMP, 0x00000001); |
354 | | - |
355 | | - #[pyattr] |
356 | | - pub const UF_IMMUTABLE: u32 = macos_libc_get!(UF_IMMUTABLE, 0x00000002); |
357 | | - |
358 | | - #[pyattr] |
359 | | - pub const UF_APPEND: u32 = macos_libc_get!(UF_APPEND, 0x00000004); |
360 | | - |
361 | | - #[pyattr] |
362 | | - pub const UF_OPAQUE: u32 = macos_libc_get!(UF_OPAQUE, 0x00000008); |
363 | | - |
364 | | - #[pyattr] |
365 | | - pub const UF_COMPRESSED: u32 = macos_libc_get!(UF_COMPRESSED, 0x00000020); |
366 | | - |
367 | | - #[pyattr] |
368 | | - pub const UF_HIDDEN: u32 = macos_libc_get!(UF_HIDDEN, 0x00008000); |
369 | | - |
370 | | - #[pyattr] |
371 | | - pub const SF_ARCHIVED: u32 = macos_libc_get!(SF_ARCHIVED, 0x00010000); |
372 | | - |
373 | | - #[pyattr] |
374 | | - pub const SF_IMMUTABLE: u32 = macos_libc_get!(SF_IMMUTABLE, 0x00020000); |
375 | | - |
376 | | - #[pyattr] |
377 | | - pub const SF_APPEND: u32 = macos_libc_get!(SF_APPEND, 0x00040000); |
378 | | - |
379 | | - #[pyattr] |
380 | | - pub const SF_SETTABLE: u32 = if cfg!(target_os = "macos") { |
381 | | - 0x3fff0000 |
382 | | - } else { |
383 | | - 0xffff0000 |
384 | | - }; |
385 | | - |
386 | | - #[pyattr] |
387 | | - pub const UF_NOUNLINK: u32 = 0x00000010; |
388 | | - |
389 | | - #[pyattr] |
390 | | - pub const SF_NOUNLINK: u32 = 0x00100000; |
391 | | - |
392 | | - #[pyattr] |
393 | | - pub const SF_SNAPSHOT: u32 = 0x00200000; |
394 | | - |
395 | | - #[pyattr] |
396 | | - pub const SF_FIRMLINK: u32 = 0x00800000; |
397 | | - |
398 | | - #[pyattr] |
399 | | - pub const SF_DATALESS: u32 = 0x40000000; |
400 | | - |
401 | | - // MacOS specific |
402 | | - |
403 | | - #[cfg(target_os = "macos")] |
404 | | - #[pyattr] |
405 | | - pub const SF_SUPPORTED: u32 = 0x009f0000; |
406 | | - |
407 | | - #[cfg(target_os = "macos")] |
408 | | - #[pyattr] |
409 | | - pub const SF_SYNTHETIC: u32 = 0xc0000000; |
410 | 410 | } |
411 | 411 |
|
412 | 412 | pub fn make_module(vm: &VirtualMachine) -> PyRef<PyModule> { |
|