From 7d8d4061c5a9372a3ab8b7677e85fa5c48e97013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Fri, 4 Aug 2023 10:33:15 +0200 Subject: [PATCH] Revert "fix #4380: stat() is run when file is executed" this actually affected the matcher's ability to differentiate between directory and file patterns, and the alternative would require matching patterns twice for full coverage, so let's try a different approach altogether. This reverts commit c8ed10095d4cdc01705e5f01f849f8850a0b7395. --- pbs-client/src/pxar/create.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs index c573c2a3..2577cf98 100644 --- a/pbs-client/src/pxar/create.rs +++ b/pbs-client/src/pxar/create.rs @@ -434,15 +434,6 @@ impl Archiver { assert_single_path_component(os_file_name)?; let full_path = self.path.join(os_file_name); - let match_path = PathBuf::from("/").join(full_path.clone()); - if self - .patterns - .matches(match_path.as_os_str().as_bytes(), None) - == Some(MatchType::Exclude) - { - continue; - } - let stat = match nix::sys::stat::fstatat( dir_fd, file_name.as_c_str(), @@ -453,6 +444,15 @@ impl Archiver { Err(err) => return Err(err).context(format!("stat failed on {:?}", full_path)), }; + let match_path = PathBuf::from("/").join(full_path.clone()); + if self + .patterns + .matches(match_path.as_os_str().as_bytes(), Some(stat.st_mode)) + == Some(MatchType::Exclude) + { + continue; + } + self.entry_counter += 1; if self.entry_counter > self.entry_limit { bail!(