[git commit] du: don't count duplicate arguments. Closes 5288

Denys Vlasenko vda.linux at googlemail.com
Tue Feb 19 16:08:39 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=e563f9e851c78f5c13cb9828ddb11ca981fd6331
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Since coreutils 8.6 (2010-10-15) du no longer counts duplicate arguments.

Revert the relevant part of commit 618a3027ed (du: fix "du /dir /dir"
case).

function                                             old     new   delta
du_main                                              302     297      -5
reset_ino_dev_hashtable                               78       -     -78
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-83)             Total: -83 bytes

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/du.c     | 4 ++--
 libbb/inode_hash.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/coreutils/du.c b/coreutils/du.c
index 6d737fbfb..d14d9e4ea 100644
--- a/coreutils/du.c
+++ b/coreutils/du.c
@@ -290,11 +290,11 @@ int du_main(int argc UNUSED_PARAM, char **argv)
 	total = 0;
 	do {
 		total += du(*argv);
-		/* otherwise du /dir /dir won't show /dir twice: */
-		reset_ino_dev_hashtable();
 		G.slink_depth = slink_depth_save;
 	} while (*++argv);
 
+	if (ENABLE_FEATURE_CLEAN_UP)
+		reset_ino_dev_hashtable();
 	if (opt & OPT_c_total)
 		print(total, "total");
 
diff --git a/libbb/inode_hash.c b/libbb/inode_hash.c
index 4142813e3..a125244ca 100644
--- a/libbb/inode_hash.c
+++ b/libbb/inode_hash.c
@@ -77,7 +77,7 @@ void FAST_FUNC add_to_ino_dev_hashtable(const struct stat *statbuf, const char *
 	ino_dev_hashtable[i] = bucket;
 }
 
-#if ENABLE_DU || ENABLE_FEATURE_CLEAN_UP
+#if ENABLE_FEATURE_CLEAN_UP
 /* Clear statbuf hash table */
 void FAST_FUNC reset_ino_dev_hashtable(void)
 {


More information about the busybox-cvs mailing list