[pbs-devel] [PATCH v2 proxmox-backup 2/7] client: tools: factor out entry path prefix helper
Christian Ebner
c.ebner at proxmox.com
Mon Jul 22 12:30:29 CEST 2024
Move the logic to generate `FileEntry` paths with a given prefix to
its own helper function for it to be reusable for the catalog shell
implementation of split pxar archives.
Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
changes since version 1:
- not present in pervious version
pbs-client/src/tools/mod.rs | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/pbs-client/src/tools/mod.rs b/pbs-client/src/tools/mod.rs
index 8c634ba76..e6e548403 100644
--- a/pbs-client/src/tools/mod.rs
+++ b/pbs-client/src/tools/mod.rs
@@ -1,4 +1,5 @@
//! Shared tools useful for common CLI clients.
+use pxar::accessor::aio::FileEntry;
use std::collections::HashMap;
use std::env::VarError::{NotPresent, NotUnicode};
use std::ffi::OsStr;
@@ -742,16 +743,7 @@ pub async fn pxar_metadata_catalog_lookup<T: Clone + ReadAt>(
EntryKind::Socket => DirEntryAttribute::Socket,
};
- let entry_path = if let Some(prefix) = path_prefix {
- let mut entry_path = PathBuf::from(prefix);
- match entry.path().strip_prefix("/") {
- Ok(path) => entry_path.push(path),
- Err(_) => entry_path.push(entry.path()),
- }
- entry_path
- } else {
- PathBuf::from(entry.path())
- };
+ let entry_path = entry_path_with_prefix(&entry, path_prefix.unwrap_or_default());
entries.push(ArchiveEntry::new(
entry_path.as_os_str().as_bytes(),
Some(&entry_attr),
@@ -790,3 +782,13 @@ pub fn create_tmp_file() -> std::io::Result<std::fs::File> {
}
})
}
+
+/// Generate entry path for given [`FileEntry`], prefixed by given `path_prefix` component(s).
+fn entry_path_with_prefix<T: Clone + ReadAt>(entry: &FileEntry<T>, path_prefix: &str) -> PathBuf {
+ let mut entry_path = PathBuf::from(&path_prefix);
+ match entry.path().strip_prefix("/") {
+ Ok(path) => entry_path.push(path),
+ Err(_) => entry_path.push(entry.path()),
+ }
+ entry_path
+}
--
2.39.2
More information about the pbs-devel
mailing list