]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
* src/df.c (main): Fail and don't print the headers if no
authorJim Meyering <jim@meyering.net>
Thu, 20 Jul 2006 15:42:26 +0000 (15:42 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 20 Jul 2006 15:42:26 +0000 (15:42 +0000)
file system is processed.  This makes it easy to test whether
a specified directory is on a file system of a given type or types.
Otherwise, applications would have had to parse df's output.
E.g., is "." either ext3 or reiserfs: df -t ext3 -t reiserfs .

ChangeLog
src/df.c

index 81233d4bd51f89a2002a94783410a4e4548fd840..2f4a20ee9b9ce6f5ee6eb645d3590ea26fa77c17 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2006-07-20  Jim Meyering  <jim@meyering.net>
 
+       * src/df.c (main): Fail and don't print the headers if no
+       file system is processed.  This makes it easy to test whether
+       a specified directory is on a file system of a given type or types.
+       Otherwise, applications would have had to parse df's output.
+       E.g., is "." either ext3 or reiserfs: df -t ext3 -t reiserfs .
+
        Fix a bug: ls --file-type worked like --indicator-style=slash,
        rather than like --indicator-style=file-type.
        * src/ls.c (FILE_TYPE_INDICATOR_OPTION): New enum member.
index 2eece1b46f59f18721a300f29b4212b39602fca7..b6983650506d5c4730f89772946048ee6e832f14 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -68,6 +68,9 @@ static uintmax_t output_block_size;
 /* If true, use the POSIX output format.  */
 static bool posix_format;
 
+/* Count the number of valid arguments.  */
+unsigned int n_valid_args;
+
 /* 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
    busy disks.  Note that this may make a difference on some systems --
@@ -292,6 +295,8 @@ 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,
@@ -762,7 +767,6 @@ main (int argc, char **argv)
 {
   int c;
   struct stat *stats IF_LINT (= 0);
-  int n_valid_args = 0;
 
   initialize_main (&argc, &argv);
   program_name = argv[0];
@@ -894,10 +898,6 @@ main (int argc, char **argv)
              exit_status = EXIT_FAILURE;
              argv[i] = NULL;
            }
-         else
-           {
-             ++n_valid_args;
-           }
        }
     }
 
@@ -941,5 +941,8 @@ main (int argc, char **argv)
       show_all_entries ();
     }
 
+  if (n_valid_args == 0)
+    error (EXIT_FAILURE, 0, _("no file systems processed"));
+
   exit (exit_status);
 }