From: Jim Meyering Date: Sun, 28 Mar 2004 21:43:50 +0000 (+0000) Subject: Minor optimization: X-Git-Tag: v5.3.0~1925 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca6d256f125ea496cdb059a201f92f77f1ce0c69;p=thirdparty%2Fcoreutils.git Minor optimization: (process_file): Don't record dev/inode for directories. Under some circumstances, without -c, du would mistakenly count the space of hard-linked files, not just the first one it encountered. Reported by Anthony Thyssen. (du_files): Don't ever clear the set of `seen' dev/inodes. --- diff --git a/src/du.c b/src/du.c index eb02122496..bd1d7c5c73 100644 --- a/src/du.c +++ b/src/du.c @@ -377,6 +377,7 @@ process_file (FTS *fts, FTSENT *ent) via a hard link, then don't let it contribute to the sums. */ if (skip || (!opt_count_all + && ! S_ISDIR (sb->st_mode) && 1 < sb->st_nlink && hash_ins (sb->st_ino, sb->st_dev))) { @@ -518,12 +519,6 @@ du_files (char **files, int bit_flags) } FTS_CROSS_CHECK (fts); - /* This is a space optimization. If we aren't printing totals, - then it's ok to clear the duplicate-detection tables after - each command line hierarchy has been processed. */ - if (ent->fts_level == 0 && ent->fts_info == FTS_D && !print_grand_total) - hash_clear (htab); - process_file (fts, ent); }