* 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.
This commit is contained in:
Paul Eggert 2006-08-15 23:41:24 +00:00
parent 5ce0b45a43
commit 9e2b97bf35
7 changed files with 66 additions and 16 deletions

View File

@ -1,3 +1,21 @@
2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
* NEWS: Mention that df exits with nonzero status if it generates
no output. This change was in 6.0 but inadvertently unmentioned.
* 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.
2006-08-15 Eric Blake <ebb9@byu.net>
* src/stat.c (USE_STATVFS): Define to 0 if f_type is needed, but
statvfs.f_type not present. See
<http://savannah.gnu.org/bugs/?func=detailitem&item_id=16325>.
2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
* src/dd.c (print_stats): Don't substitute "1" for number, as this

14
NEWS
View File

@ -59,10 +59,16 @@ GNU coreutils NEWS -*- outline -*-
date: a command like date -d '2006-04-23 21 days ago' would print
the wrong date in some time zones. (see the test for an example)
df now considers "none" and "proc" file systems to be dummies and
therefore does not normally display them. Also, inaccessible file
systems (which can be caused by shadowed mount points or by chrooted
bind mounts) are now dummies, too.
df changes:
df now considers "none" and "proc" file systems to be dummies and
therefore does not normally display them. Also, inaccessible file
systems (which can be caused by shadowed mount points or by
chrooted bind mounts) are now dummies, too.
df now fails if it generates no output, so you can inspect the
exit status of a command like "df -t ext3 -t reiserfs DIR" to test
whether DIR is on a file system of type "ext3" or "reiserfs".
expr no longer complains about leading ^ in a regular expression
(the anchor is ignored), or about regular expressions like A** (the

View File

@ -1,3 +1,8 @@
2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
* coreutils.texi (df invocation): df exits nonzero if it outpus
nothing.
2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
* coreutils.texi (dd invocation): Warn about oflag=append without

View File

@ -9426,6 +9426,10 @@ Ignored; for compatibility with System V versions of @command{df}.
@end table
@exitstatus
Failure includes the case where no output is generated, so you can
inspect the exit status of a command like @samp{df -t ext3 -t reiserfs
@var{dir}} to test whether @var{dir} is on a file system of type
@samp{ext3} or @samp{reiserfs}.
@node du invocation

View File

@ -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);

View File

@ -27,6 +27,7 @@ TESTS = \
csplit \
date \
date-sec \
df \
dirname \
expand \
false-status \

17
tests/misc/df Executable file
View File

@ -0,0 +1,17 @@
#!/bin/sh
# Ensure that "df ." outputs a header.
if test "$VERBOSE" = yes; then
set -x
df --version
fi
case `df .` in
*'
'*)
fail=0;;
*)
fail=1;;
esac
(exit $fail); exit $fail