From: Paul Eggert Date: Tue, 15 Aug 2006 23:41:24 +0000 (+0000) Subject: * NEWS: Mention that df exits with nonzero status if it generates X-Git-Tag: COREUTILS-6_1~45 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9e2b97bf352ad1a04ee6c28e2cd2668b63bfec84;p=platform%2Fupstream%2Fcoreutils.git * 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. --- diff --git a/ChangeLog b/ChangeLog index 5225e29..3321ef0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,23 @@ 2006-08-15 Paul Eggert + * 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 + + * src/stat.c (USE_STATVFS): Define to 0 if f_type is needed, but + statvfs.f_type not present. See + . + +2006-08-15 Paul Eggert + * src/dd.c (print_stats): Don't substitute "1" for number, as this causes confusion for the Hungarian translators. Problem reported by Egmont Koblinger. diff --git a/NEWS b/NEWS index fc90431..766dfb9 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/doc/ChangeLog b/doc/ChangeLog index 6cdf374..85be546 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2006-08-15 Paul Eggert + + * coreutils.texi (df invocation): df exits nonzero if it outpus + nothing. + 2006-08-09 Paul Eggert * coreutils.texi (dd invocation): Warn about oflag=append without diff --git a/doc/coreutils.texi b/doc/coreutils.texi index bf4d32f..12215c3 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -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 diff --git a/src/df.c b/src/df.c index 45fcad8..7cbc522 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); diff --git a/tests/misc/Makefile.am b/tests/misc/Makefile.am index 60d5745..5c01b43 100644 --- a/tests/misc/Makefile.am +++ b/tests/misc/Makefile.am @@ -27,6 +27,7 @@ TESTS = \ csplit \ date \ date-sec \ + df \ dirname \ expand \ false-status \ diff --git a/tests/misc/df b/tests/misc/df new file mode 100755 index 0000000..b1efe61 --- /dev/null +++ b/tests/misc/df @@ -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