summaryrefslogtreecommitdiff
path: root/src/df.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-08-15 23:41:24 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-08-15 23:41:24 +0000
commit9e2b97bf352ad1a04ee6c28e2cd2668b63bfec84 (patch)
tree308cea2257cc1665e4fc5e2d33f93a7a78cd1c1d /src/df.c
parent5ce0b45a43fc2de8862a439b6e6281fdd55e27ed (diff)
downloadcoreutils-9e2b97bf352ad1a04ee6c28e2cd2668b63bfec84.tar.xz
* NEWS: Mention that df exits with nonzero status if it generates
no output. This change was in 6.0 but inadvertently unmentioned. * doc/coreutils.texi (df invocation): df exits nonzero if it outpus nothing. * src/df.c (file_systems_processed): Renamed from n_valid_args, and now a boolean. (show_dev): Don't set it until we actually output something. Print the header if this is the first output. (main): Don't print a header, as that is now show_dev's job. * tests/misc/Makefile.am (TESTS): Add df. * tests/misc/df: New file.
Diffstat (limited to 'src/df.c')
-rw-r--r--src/df.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/df.c b/src/df.c
index 45fcad854..7cbc5229a 100644
--- a/src/df.c
+++ b/src/df.c
@@ -68,8 +68,8 @@ static uintmax_t output_block_size;
/* If true, use the POSIX output format. */
static bool posix_format;
-/* Count the number of valid arguments. */
-static unsigned int n_valid_args;
+/* True if a file system has been processed for output. */
+static bool file_systems_processed;
/* If true, invoke the `sync' system call before getting any usage data.
Using this option can make df very slow, especially with many or very
@@ -295,8 +295,6 @@ show_dev (char const *disk, char const *mount_point,
if (!selected_fstype (fstype) || excluded_fstype (fstype))
return;
- ++n_valid_args;
-
/* If MOUNT_POINT is NULL, then the file system is not mounted, and this
program reports on the file system that the special file is on.
It would be better to report on the unmounted file system,
@@ -314,6 +312,12 @@ show_dev (char const *disk, char const *mount_point,
if (fsu.fsu_blocks == 0 && !show_all_fs && !show_listed_fs)
return;
+ if (! file_systems_processed)
+ {
+ file_systems_processed = true;
+ print_header ();
+ }
+
if (! disk)
disk = "-"; /* unknown */
if (! fstype)
@@ -786,6 +790,7 @@ main (int argc, char **argv)
&output_block_size);
print_type = false;
+ file_systems_processed = false;
posix_format = false;
exit_status = EXIT_SUCCESS;
@@ -928,20 +933,14 @@ main (int argc, char **argv)
/* Display explicitly requested empty file systems. */
show_listed_fs = true;
- if (n_valid_args > 0)
- print_header ();
-
for (i = optind; i < argc; ++i)
if (argv[i])
show_entry (argv[i], &stats[i - optind]);
}
else
- {
- print_header ();
- show_all_entries ();
- }
+ show_all_entries ();
- if (n_valid_args == 0)
+ if (! file_systems_processed)
error (EXIT_FAILURE, 0, _("no file systems processed"));
exit (exit_status);