pxar: encoder: fix incorrect goodbye table entries and update displayed path.
If nodes are excluded by feature flags, they must not appear in the goodbye table. This is fixed by continuing with the next entry in the for loop. Further the relative path buffer is now poped in order to correctly display the path. Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
		
				
					committed by
					
						
						Dietmar Maurer
					
				
			
			
				
	
			
			
			
						parent
						
							ec906dcf19
						
					
				
				
					commit
					88cee60bad
				
			@ -843,7 +843,8 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                    Ok(dir) => dir,
 | 
			
		||||
                    Err(nix::Error::Sys(Errno::ENOENT)) => {
 | 
			
		||||
                        self.report_vanished_file(&self.full_path())?;
 | 
			
		||||
                        continue; // fixme!!
 | 
			
		||||
                        self.relative_path.pop();
 | 
			
		||||
                        continue;
 | 
			
		||||
                    }
 | 
			
		||||
                    Err(err) => bail!("open dir {:?} failed - {}", self.full_path(), err),
 | 
			
		||||
                };
 | 
			
		||||
@ -897,6 +898,7 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                        Ok(filefd) => filefd,
 | 
			
		||||
                        Err(nix::Error::Sys(Errno::ENOENT)) => {
 | 
			
		||||
                            self.report_vanished_file(&self.full_path())?;
 | 
			
		||||
                            self.relative_path.pop();
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                        Err(err) => bail!("open file {:?} failed - {}", self.full_path(), err),
 | 
			
		||||
@ -939,6 +941,7 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                    }
 | 
			
		||||
                    Err(nix::Error::Sys(Errno::ENOENT)) => {
 | 
			
		||||
                        self.report_vanished_file(&self.full_path())?;
 | 
			
		||||
                        self.relative_path.pop();
 | 
			
		||||
                        continue;
 | 
			
		||||
                    }
 | 
			
		||||
                    Err(err) => bail!("readlink {:?} failed - {}", self.full_path(), err),
 | 
			
		||||
@ -956,6 +959,8 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                    self.encode_device(&stat)?;
 | 
			
		||||
                } else {
 | 
			
		||||
                    eprintln!("skip device node: {:?}", self.full_path());
 | 
			
		||||
                    self.relative_path.pop();
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
            } else if is_fifo(&stat) {
 | 
			
		||||
                if self.has_features(flags::WITH_FIFOS) {
 | 
			
		||||
@ -966,6 +971,8 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                    self.encode_special(&stat)?;
 | 
			
		||||
                } else {
 | 
			
		||||
                    eprintln!("skip fifo: {:?}", self.full_path());
 | 
			
		||||
                    self.relative_path.pop();
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
            } else if is_socket(&stat) {
 | 
			
		||||
                if self.has_features(flags::WITH_SOCKETS) {
 | 
			
		||||
@ -976,6 +983,8 @@ impl<'a, W: Write, C: BackupCatalogWriter> Encoder<'a, W, C> {
 | 
			
		||||
                    self.encode_special(&stat)?;
 | 
			
		||||
                } else {
 | 
			
		||||
                    eprintln!("skip socket: {:?}", self.full_path());
 | 
			
		||||
                    self.relative_path.pop();
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                bail!(
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user