From 46ea2281800509695aff5d40cfe4a0bb9ded53d3 Mon Sep 17 00:00:00 2001 From: Jonathan Dahan Date: Mon, 16 May 2016 01:18:00 -0400 Subject: [PATCH] read a file, print its title maybe --- src/main.rs | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index e7a11a9..995581b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,40 @@ +use std::env; +use std::fs; +use std::io::Read; + fn main() { - println!("Hello, world!"); + let filename = env::args().nth(1).unwrap(); + let mut file = fs::File::open(&filename).unwrap(); + let mut buffer = Vec::new(); + let _ = file.read_to_end(&mut buffer).unwrap(); + + println!("Opened {}, which is {} bytes", filename, buffer.len()); + + struct Range { + offset: usize, + length: usize + }; + + struct Header { + name: &'static str, + range: Range + }; + + let name_header = Header { + name: "title", + range: Range { + offset: 308, + length: 16 + } + }; + + let headers = vec![name_header]; + + for header in headers { + let start = header.range.offset; + let end = header.range.offset + header.range.length - 1; + let mut header_slice = &buffer[start..end]; + println!("{}: {}", header.name, String::from_utf8_lossy(&mut header_slice)); + } + }