Can compress raw files
This commit is contained in:
		@@ -212,6 +212,45 @@ impl DiskFileInfo {
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Render raw file non sparse
 | 
			
		||||
            (DiskFileFormat::Raw { is_sparse: true }, DiskFileFormat::Raw { is_sparse: false }) => {
 | 
			
		||||
                let mut cmd = Command::new(constants::COPY_PROGRAM);
 | 
			
		||||
                cmd.arg("--sparse=never")
 | 
			
		||||
                    .arg(&self.file_path)
 | 
			
		||||
                    .arg(&temp_file);
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Render raw file sparse
 | 
			
		||||
            (DiskFileFormat::Raw { is_sparse: false }, DiskFileFormat::Raw { is_sparse: true }) => {
 | 
			
		||||
                let mut cmd = Command::new(constants::COPY_PROGRAM);
 | 
			
		||||
                cmd.arg("--sparse=always")
 | 
			
		||||
                    .arg(&self.file_path)
 | 
			
		||||
                    .arg(&temp_file);
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Compress Raw
 | 
			
		||||
            (DiskFileFormat::Raw { .. }, DiskFileFormat::CompressedRaw) => {
 | 
			
		||||
                let mut cmd = Command::new(constants::GZIP_PROGRAM);
 | 
			
		||||
                cmd.arg("--keep")
 | 
			
		||||
                    .arg("--to-stdout")
 | 
			
		||||
                    .arg(&self.file_path)
 | 
			
		||||
                    .stdout(File::create(&temp_file)?);
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Decompress Raw to not sparse file
 | 
			
		||||
            (DiskFileFormat::CompressedRaw, DiskFileFormat::Raw { is_sparse: false }) => {
 | 
			
		||||
                let mut cmd = Command::new(constants::GZIP_PROGRAM);
 | 
			
		||||
                cmd.arg("--keep")
 | 
			
		||||
                    .arg("--decompress")
 | 
			
		||||
                    .arg("--to-stdout")
 | 
			
		||||
                    .arg(&self.file_path)
 | 
			
		||||
                    .stdout(File::create(&temp_file)?);
 | 
			
		||||
                cmd
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Dumb copy of file
 | 
			
		||||
            (a, b) if a == b => {
 | 
			
		||||
                let mut cmd = Command::new(constants::COPY_PROGRAM);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user