implement parsing packer + fix huge bug in match finder

This commit is contained in:
2021-11-24 09:28:18 +01:00
parent 470b778340
commit 11b43f9bc4
7 changed files with 277 additions and 95 deletions

View File

@@ -1,6 +1,6 @@
use std::{fs::File, path::PathBuf};
use std::io::prelude::*;
use anyhow::{bail, Result};
use std::io::prelude::*;
use std::{fs::File, path::PathBuf};
fn main() -> Result<()> {
let mut args = pico_args::Arguments::from_env();
@@ -8,12 +8,18 @@ fn main() -> Result<()> {
match args.subcommand()?.as_ref().map(|s| s.as_str()) {
None => print_help(),
Some("pack") => {
let fast = args.contains("--fast");
let infile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let outfile = args.free_from_os_str::<PathBuf, bool>(|s| Ok(s.into()))?;
let mut data = vec![];
File::open(infile)?.read_to_end(&mut data)?;
let packed_data = upkr::pack(&data);
let packed_data = if fast {
upkr::pack_fast(&data)
} else {
upkr::pack(&data)
};
File::create(outfile)?.write_all(&packed_data)?;
}
Some("unpack") => {