Read from file or stdin

This commit is contained in:
jpk 2022-12-13 12:03:03 +01:00
parent c4353a4d03
commit cc2f67dda9
1 changed files with 8 additions and 16 deletions

View File

@ -2,21 +2,12 @@ mod colormap;
use std::env;
use std::fs::File;
use std::io::prelude::*;
use std::io::{self, Read};
use colormap::{map_char_to_color, map_u8_to_color};
const GLOBAL_BUFFER_LENGTH: usize = 16;
fn get_file(filename: String) -> File {
match File::open(filename) {
Ok(f) => f,
Err(e) => {
panic!("{:?}", e);
}
}
}
fn dump_to_hex(bytes: &mut [u8]) -> String {
let out_vec: Vec<String> = bytes
.chunks(2)
@ -38,18 +29,19 @@ fn dump_to_chr(bytes: &mut [u8]) -> String {
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
panic!("Not enough arguments!");
}
let filename = &args[1];
let mut open_file = get_file(filename.to_string());
let mut reader: Box<dyn io::Read> = if args.len() == 1 {
Box::new(io::stdin())
} else {
let filename = &args[1];
Box::new(File::open(filename).expect("Could not open file."))
};
let mut buf = [0; GLOBAL_BUFFER_LENGTH];
let mut offset: usize = 0;
loop {
let bytes_read = open_file.read(&mut buf);
let bytes_read = reader.read(&mut buf);
match bytes_read {
Ok(num) => {
if num == 0 {