diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-03-12 12:31:49 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-03-12 12:32:47 +0200 |
commit | 989b50a633ad285b86c3549ea9ac6f62c0a13273 (patch) | |
tree | fdc9a7ebf3c689ec4377f4dc237dbea8a46a3355 /src/fsiter.rs | |
parent | 0fcb8f314a054e4c92e49461f1ae2d9392756638 (diff) | |
download | obnam2-989b50a633ad285b86c3549ea9ac6f62c0a13273.tar.gz |
feat: handle files in directories that can be read but not executed
Diffstat (limited to 'src/fsiter.rs')
-rw-r--r-- | src/fsiter.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/fsiter.rs b/src/fsiter.rs index 57b6fd5..b778cf3 100644 --- a/src/fsiter.rs +++ b/src/fsiter.rs @@ -1,6 +1,6 @@ use crate::fsentry::{FilesystemEntry, FsEntryError}; -use log::{debug, error}; -use std::path::Path; +use log::{debug, warn}; +use std::path::{Path, PathBuf}; use walkdir::{DirEntry, IntoIter, WalkDir}; /// Iterator over file system entries in a directory tree. @@ -13,8 +13,8 @@ pub enum FsIterError { #[error(transparent)] WalkError(#[from] walkdir::Error), - #[error(transparent)] - IoError(#[from] std::io::Error), + #[error("I/O error on {0}: {1}")] + IoError(PathBuf, #[source] std::io::Error), #[error(transparent)] FsEntryError(#[from] FsEntryError), @@ -50,8 +50,8 @@ fn new_entry(e: &DirEntry) -> FsIterResult<FilesystemEntry> { let meta = match meta { Ok(meta) => meta, Err(err) => { - error!("failed to get metadata: {}", err); - return Err(err.into()); + warn!("failed to get metadata for {}: {}", path.display(), err); + return Err(FsIterError::IoError(path.to_path_buf(), err)); } }; let entry = FilesystemEntry::from_metadata(path, &meta)?; |