From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id C064A1FF2D6 for ; Mon, 22 Jul 2024 12:30:47 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9A729305DB; Mon, 22 Jul 2024 12:31:21 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Mon, 22 Jul 2024 12:30:29 +0200 Message-Id: <20240722103034.343303-3-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240722103034.343303-1-c.ebner@proxmox.com> References: <20240722103034.343303-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.021 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH v2 proxmox-backup 2/7] client: tools: factor out entry path prefix helper X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" 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 --- 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( 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 { } }) } + +/// Generate entry path for given [`FileEntry`], prefixed by given `path_prefix` component(s). +fn entry_path_with_prefix(entry: &FileEntry, 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 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel