diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa8d85a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +Cargo.lock +target diff --git a/src/.main.rs.swp b/src/.main.rs.swp new file mode 100644 index 0000000..ff1a7bb Binary files /dev/null and b/src/.main.rs.swp differ diff --git a/src/main.rs b/src/main.rs index 7c682c4..e735c58 100644 --- a/src/main.rs +++ b/src/main.rs @@ -245,12 +245,14 @@ fn main() { // 'previous // host' let mut load_page: bool = true; + let mut links: Vec = Vec::new(); + 'mainloop: loop { - let mut links: Vec = Vec::new(); if load_page { + links = Vec::new(); links = render_page(host.clone(), port.clone(), path.clone()); - println!("Enter reference number to follow, h for help, or q to quit"); + println!("Enter reference number to follow, h for help, or q to quit "); } load_page = true; @@ -268,14 +270,25 @@ fn main() { } else if link_to_follow.chars().nth(0).unwrap() == 'o' { let number_str = &link_to_follow[1..]; - let number: usize = number_str.parse::().unwrap(); - println!("{}",links[number]); + if let Ok(number) = number_str.parse::() { + println!("{}", links[number]); + } else { + println!("error"); + } load_page = false; } else { - let number: usize = link_to_follow.parse::().unwrap(); - - (host, port, path) = parse_url(links[number].clone(), &host); + if let Ok(number) = link_to_follow.parse::() { + if number < links.len() { + (host, port, path) = parse_url(links[number].clone(), &host); + } else { + println!("Invalid reference id"); + load_page = false; + } + } else { + println!("Invalid input"); + load_page = false; + } } } }