[pbs-devel] [PATCH v3 pxar 04/58] decoder: factor out skip part from skip_entry

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Apr 3 11:18:00 CEST 2024


On March 28, 2024 1:36 pm, Christian Ebner wrote:
> Make the skip part reusable for a different input.
> 
> In preparation for skipping payload paddings in a separated input.
> 
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> changes since version 2:
> - not present in previous version
> 
>  src/decoder/mod.rs | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs
> index cc50e4f..f439327 100644
> --- a/src/decoder/mod.rs
> +++ b/src/decoder/mod.rs
> @@ -563,15 +563,19 @@ impl<I: SeqRead> DecoderImpl<I> {
>      //
>  
>      async fn skip_entry(&mut self, offset: u64) -> io::Result<()> {
> -        let mut len = self.current_header.content_size() - offset;
> +        let len = (self.current_header.content_size() - offset) as usize;
> +        Self::skip(&mut self.input, len).await
> +    }
> +
> +    async fn skip(input: &mut I, len: usize) -> io::Result<()> {
> +        let mut len = len;

nit: this re-binding could just be part of the fn signature ;)

>          let scratch = scratch_buffer();
> -        while len >= (scratch.len() as u64) {
> -            seq_read_exact(&mut self.input, scratch).await?;
> -            len -= scratch.len() as u64;
> +        while len >= (scratch.len()) {
> +            seq_read_exact(input, scratch).await?;
> +            len -= scratch.len();
>          }
> -        let len = len as usize;
>          if len > 0 {
> -            seq_read_exact(&mut self.input, &mut scratch[..len]).await?;
> +            seq_read_exact(input, &mut scratch[..len]).await?;
>          }
>          Ok(())
>      }
> -- 
> 2.39.2
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
> 
> 
> 




More information about the pbs-devel mailing list