From baf9f9572fe626c6fa05ab080c44ac8123e27d47 Mon Sep 17 00:00:00 2001 From: Ben S Date: Thu, 26 Jun 2014 12:46:40 +0100 Subject: [PATCH] Highlight link number for files with multiple links Curiously enough, this turned out to be helpful today... Git can't traverse symlinks, so I had to use hard links instead, and then I had to work out which files had more than one link at a glance. If I hadn't already had most of exa written, I'd be stuck using find! --- colours.rs | 2 +- file.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/colours.rs b/colours.rs index 4494315..317633d 100644 --- a/colours.rs +++ b/colours.rs @@ -36,7 +36,7 @@ impl Colour { Black => "40".to_string(), Red => "41".to_string(), Green => "42".to_string(), - Yellow => "44".to_string(), + Yellow => "43".to_string(), Blue => "44".to_string(), Purple => "45".to_string(), Cyan => "46".to_string(), diff --git a/file.rs b/file.rs index 8e7b653..f591292 100644 --- a/file.rs +++ b/file.rs @@ -94,7 +94,15 @@ impl<'a> File<'a> { Permissions => self.permissions_string(), FileName => self.file_name(), FileSize(use_iec) => self.file_size(use_iec), - HardLinks => Red.paint(self.stat.unstable.nlink.to_str().as_slice()), + + // A file with multiple links is interesting, but + // directories and suchlike can have multiple links all + // the time. + HardLinks => { + let style = if self.stat.kind == io::TypeFile && self.stat.unstable.nlink > 1 { Red.on(Yellow) } else { Red.normal() }; + style.paint(self.stat.unstable.nlink.to_str().as_slice()) + }, + Inode => Purple.paint(self.stat.unstable.inode.to_str().as_slice()), Blocks => { if self.stat.kind == io::TypeFile || self.stat.kind == io::TypeSymlink {