From 03a517a310294cc1c3d4f085f88d058e41180aad Mon Sep 17 00:00:00 2001 From: bootandy Date: Thu, 22 Mar 2018 14:29:59 -0400 Subject: [PATCH 1/3] block size is always 512 on rust --- src/utils/platform.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/utils/platform.rs b/src/utils/platform.rs index bf876f1..402d8ae 100644 --- a/src/utils/platform.rs +++ b/src/utils/platform.rs @@ -1,12 +1,8 @@ use std; -#[cfg(not(any(target_os = "macos", target_os = "linux")))] -pub fn get_block_size() -> u64 { - 1024 -} - -#[cfg(any(target_os = "macos", target_os = "linux"))] -pub fn get_block_size() -> u64 { +fn get_block_size() -> u64 { + // All os specific implementations of MetatdataExt seem to define a block as 512 bytes + // https://doc.rust-lang.org/std/os/linux/fs/trait.MetadataExt.html#tymethod.st_blocks 512 } From cce656ab4ca296da70ff221efb9c83b2c2c84620 Mon Sep 17 00:00:00 2001 From: bootandy Date: Thu, 22 Mar 2018 14:30:30 -0400 Subject: [PATCH 2/3] rm dead code --- src/utils/mod.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 0e7cdd7..6e3cdc5 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -209,8 +209,6 @@ fn print_this_node(node_to_print: &Node, is_biggest: bool, depth: u8, indentatio fn human_readable_number(size: u64) -> (String) { let units = vec!["T", "G", "M", "K"]; //make static - //return format!("{}B", size); - for (i, u) in units.iter().enumerate() { let marker = 1024u64.pow((units.len() - i) as u32); if size >= marker { From 4944d517f40ddabd2f5db8d4c091323adc7c4dd5 Mon Sep 17 00:00:00 2001 From: bootandy Date: Thu, 22 Mar 2018 14:36:17 -0400 Subject: [PATCH 3/3] Apparent size mode: handle hard links. If we are viewing apparent size then each hard linked file should be counted. Not just the first one. --- src/utils/mod.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 6e3cdc5..b8dc156 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -56,11 +56,13 @@ fn examine_dir( match (file_type, maybe_size_and_inode) { (Some(file_type), Some((size, inode))) => { let s = d.path().to_string_lossy().to_string(); - if let Some(inode_dev_pair) = inode { - if inodes.contains(&inode_dev_pair) { - continue; + if !apparent_size { + if let Some(inode_dev_pair) = inode { + if inodes.contains(&inode_dev_pair) { + continue; + } + inodes.insert(inode_dev_pair); } - inodes.insert(inode_dev_pair); } if d.path().is_dir() && !file_type.is_symlink() {