From 10a9f86719d73c4f64abce25970388cbe644e372 Mon Sep 17 00:00:00 2001 From: maggicl Date: Sun, 18 Nov 2018 19:56:35 +0000 Subject: [PATCH] bonus: bonus1 is optimized git-svn-id: svn+ssh://atelier.inf.usi.ch/home/bevilj/group-1@252 a672b425-5310-4d7a-af5c-997e18724b81 --- bonus1/src/main.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bonus1/src/main.rs b/bonus1/src/main.rs index 36b37b0..59820f7 100644 --- a/bonus1/src/main.rs +++ b/bonus1/src/main.rs @@ -72,6 +72,8 @@ fn main() { process::exit(127); } else { let dir = &args[1]; + let mut working = Vec::new(); + for entry in WalkDir::new(dir) { match entry { Ok(en) => { @@ -93,9 +95,15 @@ fn main() { let urls: Vec = find_urls(contents.as_str()); for url in urls { - if is_external_url(&url) { + if working.contains(&url) { + continue; + } + + if is_external_url(&url) && !working.contains(&url) { if !is_external_url_working(&url) { println!("{}: '{}' is a broken link.", path, url); + } else { + working.push(url); } } else { if url.starts_with("mailto:") || url.eq("#") || url.eq("{url}") { @@ -104,9 +112,12 @@ fn main() { let lpath = format!("{}{}", dir, url); if !path_exists(&lpath) { println!("{}: '{}' is a broken link ({} does not exist).", path, url, lpath); + } else { + working.push(url); } } else { - let lpath = format!("{}/{}", en.path().parent().unwrap_or(Path::new("/")).to_str().unwrap(), url); + let lpath = format!("{}/{}", en.path().parent() + .unwrap_or(Path::new("/")).to_str().unwrap(), url); if !path_exists(&lpath) { println!("{}: '{}' is a broken link ({} does not exist).", path, url, lpath); }