From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 3F0431FF15F for ; Mon, 21 Oct 2024 17:47:34 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6A93938047; Mon, 21 Oct 2024 17:48:07 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Mon, 21 Oct 2024 17:47:39 +0200 Message-Id: <20241021154744.325556-6-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241021154744.325556-1-c.ebner@proxmox.com> References: <20241021154744.325556-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.028 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 v4 proxmox-backup 05/10] 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. No functional changes. Signed-off-by: Christian Ebner --- changes since version 3: - Adapt commit message to reflect that there are no functional changes changes since version 2: - only factor out code as is, thereby avoiding issue with relative/absolute paths depending on given prefix pbs-client/src/pxar/tools.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pbs-client/src/pxar/tools.rs b/pbs-client/src/pxar/tools.rs index 1598aeb2e..25500f748 100644 --- a/pbs-client/src/pxar/tools.rs +++ b/pbs-client/src/pxar/tools.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use anyhow::{bail, format_err, Context, Error}; use nix::sys::stat::Mode; -use pxar::accessor::aio::Accessor; +use pxar::accessor::aio::{Accessor, FileEntry}; use pxar::accessor::ReadAt; use pxar::format::{SignedDuration, StatxTimestamp}; use pxar::{mode, Entry, EntryKind, Metadata}; @@ -322,16 +322,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); entries.push(ArchiveEntry::new( entry_path.as_os_str().as_bytes(), Some(&entry_attr), @@ -407,3 +398,20 @@ pub async fn get_remote_pxar_reader( Ok((LocalDynamicReadAt::new(reader), archive_size)) } + +/// Generate entry path for given [`FileEntry`], prefixed by given `path_prefix` component(s). +pub(crate) fn entry_path_with_prefix( + entry: &FileEntry, + path_prefix: Option<&str>, +) -> PathBuf { + 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()) + } +} -- 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel