From 0d0087053f615505221721773ea72ad6c16e25b2 Mon Sep 17 00:00:00 2001 From: Zephiris Date: Sat, 5 Nov 2016 01:29:55 -0700 Subject: [PATCH] ls: Fix '-aR' recursion. ls with -aR was recursing infinitely becacuse it added ./.. to every node. I don't see a way to avoid this except by cloning when that option is used. --- src/ls/ls.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ls/ls.rs b/src/ls/ls.rs index dcf52ae81..e6716a03b 100644 --- a/src/ls/ls.rs +++ b/src/ls/ls.rs @@ -236,15 +236,21 @@ fn enter_directory(dir: &PathBuf, options: &getopts::Matches) { } let mut entries: Vec<_> = entries.iter().map(DirEntry::path).collect(); - - if options.opt_present("a") { - entries.push(dir.join(".")); - entries.push(dir.join("..")); - } - sort_entries(&mut entries, options); - display_items(&entries, Some(dir), options); + + + if options.opt_present("a") { + let mut display_entries = entries.clone(); + display_entries.insert(0, dir.join("..")); + display_entries.insert(0, dir.join(".")); + display_items(&display_entries, Some(dir), options); + } + else + { + display_items(&entries, Some(dir), options); + } + if options.opt_present("R") { for e in entries.iter().filter(|p| p.is_dir()) {