diff --git a/src/main.rs b/src/main.rs index 078e5df..ecb3139 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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 = bytes .chunks(2) @@ -38,18 +29,19 @@ fn dump_to_chr(bytes: &mut [u8]) -> String { fn main() { let args: Vec = 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 = 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 {