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.
This commit is contained in:
Fabian Grünbichler 2023-08-04 10:33:15 +02:00
parent c8ed10095d
commit 7d8d4061c5

View File

@ -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!(