]>
git.proxmox.com Git - rustc.git/blob - vendor/filetime/src/unix/mod.rs
2 use libc
::{time_t, timespec}
;
4 use std
::os
::unix
::prelude
::*;
7 if #[cfg(target_os = "linux")] {
10 pub use self::linux
::*;
11 } else if #[cfg(target_os = "macos")] {
14 pub use self::macos
::*;
15 } else if #[cfg(any(target_os = "android",
16 target_os
= "solaris",
17 target_os
= "illumos",
18 target_os
= "emscripten",
19 target_os
= "freebsd",
21 target_os
= "openbsd",
22 target_os
= "haiku"))] {
24 pub use self::utimensat
::*;
27 pub use self::utimes
::*;
32 fn to_timespec(ft
: &Option
<FileTime
>) -> timespec
{
34 if #[cfg(target_os = "macos")] {
35 // https://github.com/apple/darwin-xnu/blob/a449c6a3b8014d9406c2ddbdc81795da24aa7443/bsd/sys/stat.h#L541
36 const UTIME_OMIT
: i64 = -2;
38 const UTIME_OMIT
: i64 = 1_073_741_822;
42 if let &Some(ft
) = ft
{
44 tv_sec
: ft
.seconds() as time_t
,
45 tv_nsec
: ft
.nanoseconds() as _
,
50 tv_nsec
: UTIME_OMIT
as _
,
55 pub fn from_last_modification_time(meta
: &fs
::Metadata
) -> FileTime
{
57 seconds
: meta
.mtime(),
58 nanos
: meta
.mtime_nsec() as u32,
62 pub fn from_last_access_time(meta
: &fs
::Metadata
) -> FileTime
{
64 seconds
: meta
.atime(),
65 nanos
: meta
.atime_nsec() as u32,
69 pub fn from_creation_time(meta
: &fs
::Metadata
) -> Option
<FileTime
> {
70 macro_rules
! birthtim
{
71 ($
(($e
:expr
, $i
:ident
)),*) => {
72 #[cfg(any($(target_os = $e),*))]
73 fn imp(meta
: &fs
::Metadata
) -> Option
<FileTime
> {
75 #[cfg(target_os = $e)]
76 use std
::os
::$i
::fs
::MetadataExt
;
79 seconds
: meta
.st_birthtime(),
80 nanos
: meta
.st_birthtime_nsec() as u32,
84 #[cfg(all($(not(target_os = $e)),*))]
85 fn imp(_meta
: &fs
::Metadata
) -> Option
<FileTime
> {