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 00CF11FF389 for ; Wed, 5 Jun 2024 13:02:01 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 23500326D9; Wed, 5 Jun 2024 13:02:32 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 5 Jun 2024 12:53:36 +0200 Message-Id: <20240605105416.278748-19-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240605105416.278748-1-c.ebner@proxmox.com> References: <20240605105416.278748-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 T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pbs-devel] [PATCH v9 proxmox-backup 18/58] pxar: bin: cover listing for split archives 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" Allows to list entries of split pxar archives. As the decoder skips over the file payloads, the corresponding payload file has to be provided. Otherwise the decoder would skip inside the metadata archive, leading to incorrect decoding. Signed-off-by: Christian Ebner --- changes since version 8: - prefix patch subject with `pxar: bin` instead of `pxar` only - add missing file completion pxar-bin/src/main.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pxar-bin/src/main.rs b/pxar-bin/src/main.rs index fe5c91c97..2657577dc 100644 --- a/pxar-bin/src/main.rs +++ b/pxar-bin/src/main.rs @@ -454,12 +454,26 @@ async fn mount_archive(archive: String, mountpoint: String, verbose: bool) -> Re archive: { description: "Archive name.", }, + "payload-input": { + description: "'ppxar' payload input data file for split archive.", + optional: true, + }, }, }, )] /// List the contents of an archive. -fn dump_archive(archive: String) -> Result<(), Error> { - for entry in pxar::decoder::Decoder::open(pxar::PxarVariant::Unified(archive))? { +fn dump_archive(archive: String, payload_input: Option) -> Result<(), Error> { + if archive.ends_with(".mpxar") && payload_input.is_none() { + bail!("Payload input required for split pxar archives"); + } + + let input = if let Some(payload_input) = payload_input { + pxar::PxarVariant::Split(archive, payload_input) + } else { + pxar::PxarVariant::Unified(archive) + }; + + for entry in pxar::decoder::Decoder::open(input)? { let entry = entry?; if log::log_enabled!(log::Level::Debug) { @@ -502,7 +516,8 @@ fn main() { "list", CliCommand::new(&API_METHOD_DUMP_ARCHIVE) .arg_param(&["archive"]) - .completion_cb("archive", complete_file_name), + .completion_cb("archive", complete_file_name) + .completion_cb("payload-input", complete_file_name), ); let rpcenv = CliEnvironment::new(); -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel