From 057b88e5147a27e3cae895f8efb6eda33edf0a6a Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Wed, 21 Jul 2021 20:29:00 +0100 Subject: [PATCH 1/3] align 'header' with async-tar implementation --- src/header.rs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/header.rs b/src/header.rs index 5fe7723c..c0d8b37f 100644 --- a/src/header.rs +++ b/src/header.rs @@ -26,6 +26,7 @@ pub struct Header { /// Declares the information that should be included when filling a Header /// from filesystem metadata. #[derive(Clone, Copy, PartialEq, Eq, Debug)] +#[non_exhaustive] pub enum HeaderMode { /// All supported metadata, including mod/access times and ownership will /// be included. @@ -34,9 +35,6 @@ pub enum HeaderMode { /// Only metadata that is directly relevant to the identity of a file will /// be included. In particular, ownership and mod/access times are excluded. Deterministic, - - #[doc(hidden)] - __Nonexhaustive, } /// Representation of the header of an entry in an archive @@ -615,10 +613,14 @@ impl Header { /// major device number. pub fn set_device_major(&mut self, major: u32) -> io::Result<()> { if let Some(ustar) = self.as_ustar_mut() { - return Ok(ustar.set_device_major(major)); + return { + ustar.set_device_major(major); + Ok(()) + }; } if let Some(gnu) = self.as_gnu_mut() { - Ok(gnu.set_device_major(major)) + gnu.set_device_major(major); + Ok(()) } else { Err(other("not a ustar or gnu archive, cannot set dev_major")) } @@ -647,10 +649,14 @@ impl Header { /// minor device number. pub fn set_device_minor(&mut self, minor: u32) -> io::Result<()> { if let Some(ustar) = self.as_ustar_mut() { - return Ok(ustar.set_device_minor(minor)); + return { + ustar.set_device_minor(minor); + Ok(()) + }; } if let Some(gnu) = self.as_gnu_mut() { - Ok(gnu.set_device_minor(minor)) + gnu.set_device_minor(minor); + Ok(()) } else { Err(other("not a ustar or gnu archive, cannot set dev_minor")) } @@ -755,7 +761,6 @@ impl Header { }; self.set_mode(fs_mode); } - HeaderMode::__Nonexhaustive => panic!(), } // Note that if we are a GNU header we *could* set atime/ctime, except @@ -815,7 +820,6 @@ impl Header { let fs_mode = if meta.is_dir() { 0o755 } else { 0o644 }; self.set_mode(fs_mode); } - HeaderMode::__Nonexhaustive => panic!(), } let ft = meta.file_type(); @@ -940,7 +944,7 @@ impl UstarHeader { } else { let mut bytes = Vec::new(); let prefix = truncate(&self.prefix); - if prefix.len() > 0 { + if !prefix.is_empty() { bytes.extend_from_slice(prefix); bytes.push(b'/'); } @@ -1113,8 +1117,8 @@ impl GnuHeader { fn fullname_lossy(&self) -> String { format!( "{}:{}", - String::from_utf8_lossy(&self.groupname_bytes()), - String::from_utf8_lossy(&self.username_bytes()), + String::from_utf8_lossy(self.groupname_bytes()), + String::from_utf8_lossy(self.username_bytes()), ) } From 6f9bede0bf2848884f8630736ed06134948381ca Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 23 Jul 2021 06:24:36 +0100 Subject: [PATCH 2/3] remove explicit return --- src/header.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/header.rs b/src/header.rs index c0d8b37f..335e1900 100644 --- a/src/header.rs +++ b/src/header.rs @@ -613,12 +613,9 @@ impl Header { /// major device number. pub fn set_device_major(&mut self, major: u32) -> io::Result<()> { if let Some(ustar) = self.as_ustar_mut() { - return { - ustar.set_device_major(major); - Ok(()) - }; - } - if let Some(gnu) = self.as_gnu_mut() { + ustar.set_device_major(major); + Ok(()) + } else if let Some(gnu) = self.as_gnu_mut() { gnu.set_device_major(major); Ok(()) } else { From 3425da09adf0c1d1061ca2e25dd5d4969b0009de Mon Sep 17 00:00:00 2001 From: Daniel Eades Date: Fri, 23 Jul 2021 06:27:24 +0100 Subject: [PATCH 3/3] remove explicit return --- src/header.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/header.rs b/src/header.rs index 335e1900..3cfeca47 100644 --- a/src/header.rs +++ b/src/header.rs @@ -646,12 +646,9 @@ impl Header { /// minor device number. pub fn set_device_minor(&mut self, minor: u32) -> io::Result<()> { if let Some(ustar) = self.as_ustar_mut() { - return { - ustar.set_device_minor(minor); - Ok(()) - }; - } - if let Some(gnu) = self.as_gnu_mut() { + ustar.set_device_minor(minor); + Ok(()) + } else if let Some(gnu) = self.as_gnu_mut() { gnu.set_device_minor(minor); Ok(()) } else {