summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2003-07-09 10:00:42 +0000
committerJim Meyering <jim@meyering.net>2003-07-09 10:00:42 +0000
commit859428bfaae6efbc911b0585b7ceb17ad24ac9a3 (patch)
treead2a9400f655a0cf755b612ac7a5fb6b5e0901e3 /lib
parent4ad6473e4f0ff2575efd219e8a884c088c479a2e (diff)
downloadcoreutils-859428bfaae6efbc911b0585b7ceb17ad24ac9a3.tar.xz
Fix the bug that would make `du /' omit the `/' on the last line.
E.g., `du --exclude '[^/]*' -x /' would print only "4\t\n" for me. (ftw_dir): Don't clobber the leading `/'. Reported by Chris Lesniewski as http://bugs.debian.org/200542.
Diffstat (limited to 'lib')
-rw-r--r--lib/ftw.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/ftw.c b/lib/ftw.c
index 16b8bfb2a..5d26b4a1f 100644
--- a/lib/ftw.c
+++ b/lib/ftw.c
@@ -605,8 +605,9 @@ ftw_dir (struct ftw_data *data, struct FTW_STAT *st)
__set_errno (save_err);
}
- /* Prepare the return, revert the `struct FTW' information. */
- data->dirbuf[data->ftw.base - 1] = '\0';
+ /* Prepare the return, revert the `struct FTW' information.
+ If ftw.base is 1, be careful to preserve the `/'. */
+ data->dirbuf[data->ftw.base == 1 ? 1 : data->ftw.base - 1] = '\0';
--data->ftw.level;
data->ftw.base = previous_base;