Article View: gnu.utils.bug
Article #1153fileutils-3.4: diffs to add -l (--local) option to df
From: Mike Rendell
Date: Fri, 11 Dec 1992 11:30
Date: Fri, 11 Dec 1992 11:30
168 lines
5710 bytes
5710 bytes
The following diffs add a -l (--local) flag to df to tell it to only list
local disks. A disk is `local' if its device is a block or character
special device. This is useful when you don't want to see (or hang on) lots
of NFS filesystems.
*** src/df.c.orig Fri Jul 17 01:08:40 1992
--- src/df.c Fri Dec 11 15:10:04 1992
***************
*** 15,27 ****
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
! /* Usage: df [-aikP] [-t fstype] [--all] [--inodes] [--type fstype]
! [--kilobytes] [--portability] [path...]
Options:
-a, --all List all filesystems, even zero-size ones.
-i, --inodes List inode usage information instead of block usage.
-k, --kilobytes Print sizes in 1K blocks instead of 512-byte blocks.
-P, --portability Use the POSIX output format (one line per filesystem).
-t, --type fstype Limit the listing to filesystems of type `fstype'.
Multiple -t options can be given.
--- 15,29 ----
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
! /* Usage: df [-aiklP] [-t fstype] [--all] [--inodes] [--type fstype]
! [--kilobytes] [--local] [--portability] [path...]
Options:
-a, --all List all filesystems, even zero-size ones.
-i, --inodes List inode usage information instead of block usage.
-k, --kilobytes Print sizes in 1K blocks instead of 512-byte blocks.
+ -l, --local Limit the listing to local filesystems, ie, ones whose
+ disk is a block or character special device.
-P, --portability Use the POSIX output format (one line per filesystem).
-t, --type fstype Limit the listing to filesystems of type `fstype'.
Multiple -t options can be given.
***************
*** 60,65 ****
--- 62,70 ----
/* If nonzero, use 1K blocks instead of 512-byte blocks. */
int kilobyte_blocks;
+ /* If nonzero, report only on local disks. */
+ int show_local_only;
+
/* If nonzero, use the POSIX output format. */
int posix_format;
***************
*** 98,103 ****
--- 103,109 ----
{"all", 0, &show_all_fs, 1},
{"inodes", 0, &inode_format, 1},
{"kilobytes", 0, &kilobyte_blocks, 1},
+ {"local", 0, &show_local_only, 1},
{"portability", 0, &posix_format, 1},
{"type", 1, 0, 't'},
{NULL, 0, NULL, 0}
***************
*** 119,125 ****
posix_format = 0;
exit_status = 0;
! while ((i = getopt_long (argc, argv, "aikPt:v", long_options, (int *) 0))
!= EOF)
{
switch (i)
--- 125,131 ----
posix_format = 0;
exit_status = 0;
! while ((i = getopt_long (argc, argv, "aiklPt:v", long_options, (int *) 0))
!= EOF)
{
switch (i)
***************
*** 135,140 ****
--- 141,149 ----
case 'k':
kilobyte_blocks = 1;
break;
+ case 'l':
+ show_local_only = 1;
+ break;
case 'P':
posix_format = 1;
break;
***************
*** 293,298 ****
--- 302,319 ----
long inodes_percent_used;
char *stat_file;
+ /* A filesystem is considered local if DISK is a block/char special device.
+ This means /proc and /fd filesystems, as well as NFS filesystems,
+ are not considered local. */
+ if (show_local_only)
+ {
+ struct stat statb;
+
+ if (stat (disk, &statb) != 0
+ || !(S_ISBLK(statb.st_mode) || S_ISCHR(statb.st_mode)))
+ return;
+ }
+
if (!fs_to_list (fstype))
return;
***************
*** 391,398 ****
usage ()
{
fprintf (stderr, "\
! Usage: %s [-aikPv] [-t fstype] [--all] [--inodes] [--type fstype]\n\
! [--kilobytes] [--portability] [path...]\n",
program_name);
exit (1);
}
--- 412,419 ----
usage ()
{
fprintf (stderr, "\
! Usage: %s [-aiklPv] [-t fstype] [--all] [--inodes] [--type fstype]\n\
! [--kilobytes] [--local] [--portability] [path...]\n",
program_name);
exit (1);
}
*** man/df.1.orig Fri Jul 17 01:13:12 1992
--- man/df.1 Mon Nov 30 13:49:34 1992
***************
*** 3,9 ****
df \- summarize free disk space
.SH SYNOPSIS
.B df
! [\-aikPv] [\-t fstype] [\-\-all] [\-\-inodes] [\-\-type fstype]
[\-\-kilobytes] [\-\-portability] [path...]
.SH DESCRIPTION
This manual page
--- 3,9 ----
df \- summarize free disk space
.SH SYNOPSIS
.B df
! [\-aiklPv] [\-t fstype] [\-\-all] [\-\-inodes] [\-\-type fstype]
[\-\-kilobytes] [\-\-local] [\-\-portability] [path...]
.SH DESCRIPTION
This manual page
***************
*** 45,50 ****
--- 45,55 ----
.I "\-k, \-\-kilobytes"
Print sizes in 1K blocks instead of 512-byte blocks. This overrides
the environment variable POSIXLY_CORRECT.
+ .TP
+ .I "\-l, \-\-local"
+ Limit the listing to `local' filesystems, where a `local' filesystem
+ is one that is mounted from block or character device. This is a
+ simple way of not listing filesystems mounted over NFS.
.TP
.I "\-P, \-\-portability"
Use the POSIX output format. This is like the default format except
--
Michael Rendell - Dept. of Comp. Sci., Memorial University of Newfoundland
Technical Details
Message-ID:
<9212111848.AA19958@mercury.cs.mun.ca>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!mercury.cs.mun.ca!michaelShow Full Headers
Complete Article Headers
Newsgroups: gnu.utils.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!mercury.cs.mun.ca!michael From: michael@mercury.cs.mun.ca (Mike Rendell) Subject: fileutils-3.4: diffs to add -l (--local) option to df Message-ID: <9212111848.AA19958@mercury.cs.mun.ca> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Fri, 11 Dec 1992 11:30:04 GMT Approved: bug-gnu-utils@prep.ai.mit.edu Lines: 169