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