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.
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
causes confusion for the Hungarian translators. Problem reported
by Egmont Koblinger.
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
+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
@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
/* 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
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,
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)
&output_block_size);
print_type = false;
+ file_systems_processed = false;
posix_format = false;
exit_status = EXIT_SUCCESS;
/* 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);
csplit \
date \
date-sec \
+ df \
dirname \
expand \
false-status \
--- /dev/null
+#!/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