From baa881b4fa28df1ed04f0ee30232665e6a81098d Mon Sep 17 00:00:00 2001 From: specCon18 Date: Fri, 1 Sep 2023 15:58:45 -0400 Subject: [PATCH] added empty extractor functions & imported to main --- src/extractors.rs | 47 ++++--- src/main.rs | 320 +++++++++++++++++++++++----------------------- 2 files changed, 184 insertions(+), 183 deletions(-) diff --git a/src/extractors.rs b/src/extractors.rs index 1e75d67..d1f4f15 100644 --- a/src/extractors.rs +++ b/src/extractors.rs @@ -1,30 +1,5 @@ use std::{fs, io, path::Path}; use unrar::Archive; -use xz2::bufread::XzDecoder; - -// pub fn extract_xz(xz_file: &Path) -> io::Result<()> { -// let file = fs::File::open(xz_file)?; -// let decompressor = XzDecoder::new(file); -// let mut archive = tar::Archive::new(decompressor); - -// for entry in archive.entries()? { -// let mut entry = entry?; - -// let entry_path = entry.path()?; -// let full_path = Path::new("output_directory/").join(entry_path); - -// if entry.header().entry_type().is_dir() { -// fs::create_dir_all(&full_path)?; -// } else { -// fs::create_dir_all(&full_path.parent().unwrap())?; - -// let mut file = fs::File::create(&full_path)?; -// io::copy(&mut entry, &mut file)?; -// } -// } - -// Ok(()) -// } pub fn extract_zip(zip_file: &Path) -> io::Result<()> { let file = fs::File::open(zip_file)?; @@ -119,3 +94,25 @@ pub fn extract_rar(rar_file: &Path) -> Result<(), Box> { Ok(()) } + pub fn extract_bz2(){} + pub fn extract_tbz2(){} + pub fn extract_tgz(){} + pub fn extract_txz(){} + pub fn extract_lzma(){} + pub fn extract_gz(){} + pub fn extract_xz(){} + pub fn extract_z(){} + pub fn extract_7z(){} + pub fn extract_arj(){} + pub fn extract_cab(){} + pub fn extract_chm(){} + pub fn extract_deb(){} + pub fn extract_dmg(){} + pub fn extract_iso(){} + pub fn extract_lzh(){} + pub fn extract_msi(){} + pub fn extract_rpm(){} + pub fn extract_udf(){} + pub fn extract_wim(){} + pub fn extract_xar(){} + pub fn extract_exe(){} diff --git a/src/main.rs b/src/main.rs index 1e36cbd..1ad5e5e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,32 @@ mod extractors; -use extractors::{extract_zip, extract_rar, extract_tar}; +use extractors::{ + extract_zip, + extract_rar, + extract_tar, + extract_bz2, + extract_tbz2, + extract_tgz, + extract_txz, + extract_lzma, + extract_gz, + extract_gz, + extract_xz, + extract_z, + extract_7z, + extract_arj, + extract_cab, + extract_chm, + extract_deb, + extract_dmg, + extract_iso, + extract_lzh, + extract_msi, + extract_rpm, + extract_udf, + extract_wim, + extract_xar, + extract_exe +}; fn main() { std::process::exit(run()); } @@ -12,31 +39,6 @@ fn main() { TODO: [ ] Write for loop to iter over all extensions of a file to handle files that are tared and then compressed ex: foo.tar.gz, foo.tar.gz */ - /* - TODO: [ ] add support for decompression of: - [] bz2 - [] tbz2 - [] tgz - [] txz - [] lzma - [] gz - [] xz - [] z - [] 7z - [] arj - [] cab - [] chm - [] deb - [] dmg - [] iso - [] lzh - [] msi - [] rpm - [] udf - [] wim - [] xar - [] exe - */ fn run() -> i32 { let args: Vec<_> = std::env::args().collect(); if args.len() < 2 { @@ -64,138 +66,140 @@ fn run() -> i32 { return 1; } } - // "xz" => { - // if let Err(err) = extract_xz(&fname) { - // println!("Error extracting XZ: {}", err); - // return 1; - // } - // } - // "gz" => { - // if let Err(err) = extract_gz(&fname) { - // println!("Error extracting GZ: {}", err); - // return 1; - // } - // } - // "bz2" => { - // if let Err(err) = extract_bz2(&fname) { - // println!("Error extracting BZ2: {}", err); - // return 1; - // } - // } - // "tbz2" => { - // if let Err(err) = extract_tbz2(&fname) { - // println!("Error extracting TBZ2: {}", err); - // return 1; - // } - // } - // "txz" => { - // if let Err(err) = extract_txz(&fname) { - // println!("Error extracting TXZ: {}", err); - // return 1; - // } - // } - // "tgz" => { - // if let Err(err) = extract_tgz(&fname) { - // println!("Error extracting TGZ: {}", err); - // return 1; - // } - // } - // "lzma" => { - // if let Err(err) = extract_lzma(&fname) { - // println!("Error extracting LZMA: {}", err); - // return 1; - // } - // } - // "z" => { - // if let Err(err) = extract_z(&fname) { - // println!("Error extracting Z: {}", err); - // return 1; - // } - // } - // "7z" => { - // if let Err(err) = extract_7z(&fname) { - // println!("Error extracting 7Z: {}", err); - // return 1; - // } - // } - // "arj" => { - // if let Err(err) = extract_arj(&fname) { - // println!("Error extracting ARJ: {}", err); - // return 1; - // } - // } - // "cab" => { - // if let Err(err) = extract_cab(&fname) { - // println!("Error extracting CAB: {}", err); - // return 1; - // } - // } - // "chm" => { - // if let Err(err) = extract_chm(&fname) { - // println!("Error extracting CHM: {}", err); - // return 1; - // } - // } - // "deb" => { - // if let Err(err) = extract_deb(&fname) { - // println!("Error extracting DEB: {}", err); - // return 1; - // } - // } - // "dmg" => { - // if let Err(err) = extract_dmg(&fname) { - // println!("Error extracting DMG: {}", err); - // return 1; - // } - // } - // "iso" => { - // if let Err(err) = extract_iso(&fname) { - // println!("Error extracting ISO: {}", err); - // return 1; - // } - // } - // "lzh" => { - // if let Err(err) = extract_lzh(&fname) { - // println!("Error extracting LZH: {}", err); - // return 1; - // } - // } - // "msi" => { - // if let Err(err) = extract_msi(&fname) { - // println!("Error extracting MSI: {}", err); - // return 1; - // } - // } - // "rpm" => { - // if let Err(err) = extract_rpm(&fname) { - // println!("Error extracting RPM: {}", err); - // return 1; - // } - // } - // "udf" => { - // if let Err(err) = extract_udf(&fname) { - // println!("Error extracting UDF: {}", err); - // return 1; - // } - // } - // "wim" => { - // if let Err(err) = extract_wim(&fname) { - // println!("Error extracting WIM: {}", err); - // return 1; - // } - // } - // "xar" => { - // if let Err(err) = extract_udf(&fname) { - // println!("Error extracting XAR: {}", err); - // return 1; - // } - // } - // "exe" => { - // if let Err(err) = extract_exe(&fname) { - // println!("Error extracting EXE: {}", err); - // return 1; - // } - // } + /* + "xz" => { + if let Err(err) = extract_xz(&fname) { + println!("Error extracting XZ: {}", err); + return 1; + } + } + "gz" => { + if let Err(err) = extract_gz(&fname) { + println!("Error extracting GZ: {}", err); + return 1; + } + } + "bz2" => { + if let Err(err) = extract_bz2(&fname) { + println!("Error extracting BZ2: {}", err); + return 1; + } + } + "tbz2" => { + if let Err(err) = extract_tbz2(&fname) { + println!("Error extracting TBZ2: {}", err); + return 1; + } + } + "txz" => { + if let Err(err) = extract_txz(&fname) { + println!("Error extracting TXZ: {}", err); + return 1; + } + } + "tgz" => { + if let Err(err) = extract_tgz(&fname) { + println!("Error extracting TGZ: {}", err); + return 1; + } + } + "lzma" => { + if let Err(err) = extract_lzma(&fname) { + println!("Error extracting LZMA: {}", err); + return 1; + } + } + "z" => { + if let Err(err) = extract_z(&fname) { + println!("Error extracting Z: {}", err); + return 1; + } + } + "7z" => { + if let Err(err) = extract_7z(&fname) { + println!("Error extracting 7Z: {}", err); + return 1; + } + } + "arj" => { + if let Err(err) = extract_arj(&fname) { + println!("Error extracting ARJ: {}", err); + return 1; + } + } + "cab" => { + if let Err(err) = extract_cab(&fname) { + println!("Error extracting CAB: {}", err); + return 1; + } + } + "chm" => { + if let Err(err) = extract_chm(&fname) { + println!("Error extracting CHM: {}", err); + return 1; + } + } + "deb" => { + if let Err(err) = extract_deb(&fname) { + println!("Error extracting DEB: {}", err); + return 1; + } + } + "dmg" => { + if let Err(err) = extract_dmg(&fname) { + println!("Error extracting DMG: {}", err); + return 1; + } + } + "iso" => { + if let Err(err) = extract_iso(&fname) { + println!("Error extracting ISO: {}", err); + return 1; + } + } + "lzh" => { + if let Err(err) = extract_lzh(&fname) { + println!("Error extracting LZH: {}", err); + return 1; + } + } + "msi" => { + if let Err(err) = extract_msi(&fname) { + println!("Error extracting MSI: {}", err); + return 1; + } + } + "rpm" => { + if let Err(err) = extract_rpm(&fname) { + println!("Error extracting RPM: {}", err); + return 1; + } + } + "udf" => { + if let Err(err) = extract_udf(&fname) { + println!("Error extracting UDF: {}", err); + return 1; + } + } + "wim" => { + if let Err(err) = extract_wim(&fname) { + println!("Error extracting WIM: {}", err); + return 1; + } + } + "xar" => { + if let Err(err) = extract_udf(&fname) { + println!("Error extracting XAR: {}", err); + return 1; + } + } + "exe" => { + if let Err(err) = extract_exe(&fname) { + println!("Error extracting EXE: {}", err); + return 1; + } + } + */ _ => { println!("Unsupported file extension: {}", extension); return 1;