|
Ondřej Vašík |
161877 |
diff --git a/src/du.c b/src/du.c
|
|
Ondřej Vašík |
161877 |
index e4e36df..41c9535 100644
|
|
Ondřej Vašík |
161877 |
--- a/src/du.c
|
|
Ondřej Vašík |
161877 |
+++ b/src/du.c
|
|
Ondřej Vašík |
161877 |
@@ -443,7 +443,14 @@ process_file (FTS *fts, FTSENT *ent)
|
|
Ondřej Vašík |
161877 |
return false;
|
|
Ondřej Vašík |
161877 |
}
|
|
Ondřej Vašík |
161877 |
|
|
Ondřej Vašík |
161877 |
- if (fts->fts_options & FTS_XDEV && fts->fts_dev != sb->st_dev)
|
|
Ondřej Vašík |
161877 |
+ /* The --one-file-system (-x) option cannot exclude anything
|
|
Ondřej Vašík |
161877 |
+ specified on the command-line. By definition, it can exclude
|
|
Ondřej Vašík |
161877 |
+ a file or directory only when its device number is different
|
|
Ondřej Vašík |
161877 |
+ from that of its just-processed parent directory, and du does
|
|
Ondřej Vašík |
161877 |
+ not process the parent of a command-line argument. */
|
|
Ondřej Vašík |
161877 |
+ if (fts->fts_options & FTS_XDEV
|
|
Ondřej Vašík |
161877 |
+ && FTS_ROOTLEVEL < ent->fts_level
|
|
Ondřej Vašík |
161877 |
+ && fts->fts_dev != sb->st_dev)
|
|
Ondřej Vašík |
161877 |
excluded = true;
|
|
Ondřej Vašík |
161877 |
}
|
|
Ondřej Vašík |
161877 |
|
|
Ondřej Vašík |
161877 |
diff --git a/tests/du/one-file-system b/tests/du/one-file-system
|
|
Ondřej Vašík |
161877 |
index f0d264a..110080f 100755
|
|
Ondřej Vašík |
161877 |
--- a/tests/du/one-file-system
|
|
Ondřej Vašík |
161877 |
+++ b/tests/du/one-file-system
|
|
Ondřej Vašík |
161877 |
@@ -43,7 +43,15 @@ compare exp out || fail=1
|
|
Ondřej Vašík |
161877 |
du -xL d > u || fail=1
|
|
Ondřej Vašík |
161877 |
sed 's/^[0-9][0-9]* //' u > out1
|
|
Ondřej Vašík |
161877 |
echo d > exp1 || fail=1
|
|
Ondřej Vašík |
161877 |
-
|
|
Ondřej Vašík |
161877 |
compare exp1 out1 || fail=1
|
|
Ondřej Vašík |
161877 |
|
|
Ondřej Vašík |
161877 |
+# With coreutils-8.15, "du -xs FILE" would print no output.
|
|
Ondřej Vašík |
161877 |
+touch f
|
|
Ondřej Vašík |
161877 |
+for opt in -x -xs; do
|
|
Ondřej Vašík |
161877 |
+ du $opt f > u || fail=1
|
|
Ondřej Vašík |
161877 |
+ sed 's/^[0-9][0-9]* //' u > out2
|
|
Ondřej Vašík |
161877 |
+ echo f > exp2 || fail=1
|
|
Ondřej Vašík |
161877 |
+ compare exp2 out2 || fail=1
|
|
Ondřej Vašík |
161877 |
+done
|
|
Ondřej Vašík |
161877 |
+
|
|
Ondřej Vašík |
161877 |
Exit $fail
|
|
Ondřej Vašík |
161877 |
--
|
|
Ondřej Vašík |
161877 |
cgit v0.9.0.2
|