diff --git a/Cargo.toml b/Cargo.toml index bcafdbd7..3aec4eac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ contents are never required to be entirely resident in memory all at once. """ [dependencies] -filetime = "0.2.8" +filetime = { version = "0.2.8", optional = true } [dev-dependencies] tempfile = "3" @@ -29,4 +29,4 @@ xattr = { version = "0.2", optional = true } libc = "0.2" [features] -default = ["xattr"] +default = ["filetime", "xattr"] diff --git a/src/entry.rs b/src/entry.rs index 8f0b62ac..1b34ff48 100644 --- a/src/entry.rs +++ b/src/entry.rs @@ -7,6 +7,7 @@ use std::io::{self, Error, ErrorKind, SeekFrom}; use std::marker; use std::path::{Component, Path, PathBuf}; +#[cfg(feature = "filetime")] use filetime::{self, FileTime}; use crate::archive::ArchiveInner; @@ -617,6 +618,7 @@ impl<'a> EntryFields<'a> { ) })?; + #[cfg(feature = "filetime")] if self.preserve_mtime { if let Ok(mtime) = self.header.mtime() { // For some more information on this see the comments in diff --git a/tests/all.rs b/tests/all.rs index 11103bd6..25920236 100644 --- a/tests/all.rs +++ b/tests/all.rs @@ -1,3 +1,4 @@ +#[cfg(feature = "filetime")] extern crate filetime; extern crate tar; extern crate tempfile; @@ -10,6 +11,7 @@ use std::io::{self, Cursor}; use std::iter::repeat; use std::path::{Path, PathBuf}; +#[cfg(feature = "filetime")] use filetime::FileTime; use tar::{Archive, Builder, Entries, EntryType, Header, HeaderMode}; use tempfile::{Builder as TempBuilder, TempDir}; @@ -686,6 +688,7 @@ fn empty_filename() { assert!(ar.unpack(td.path()).is_ok()); } +#[cfg(feature = "filetime")] #[test] fn file_times() { let td = t!(TempBuilder::new().prefix("tar-rs").tempdir()); @@ -702,6 +705,7 @@ fn file_times() { assert_eq!(atime.nanoseconds(), 0); } +#[cfg(feature = "filetime")] #[test] fn zero_file_times() { let td = t!(TempBuilder::new().prefix("tar-rs").tempdir());