I guess this is a better address to send patches to instead of
[EMAIL PROTECTED]  My apologies to whomever reads that account...

Wil
-- 
W. Reilly Cooley                           [EMAIL PROTECTED]
The LNX System: Linux/GNU for a 2U case.       http://lnxs.org

---------- Forwarded message ----------
Date: Mon, 31 Jan 2000 12:38:00 -0800 (PST)
From: Wil Cooley <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: fileutils - df --histogram patch


I made this little patch because I get df output in my cron reports, and I
get lots of cron reports, so having a visual report is helpful.  Anyway,
it adds an '--histogram' option to df.  I'm not sure if it's unnecessary
bells & whistles or a genuinely useful feature.  Anyway, I thought I'd
offer it and let you decide.

Wil
-- 
W. Reilly Cooley                           [EMAIL PROTECTED]
The LNX System: Linux for a 2U case.           http://lnxs.org
diff -urN fileutils-4.0/doc/fileutils.texi fileutils-4.0-work/doc/fileutils.texi
--- fileutils-4.0/doc/fileutils.texi    Sun Nov  8 08:12:07 1998
+++ fileutils-4.0-work/doc/fileutils.texi       Mon Jan 31 11:55:57 2000
@@ -2597,6 +2597,11 @@
 type ``ignore'' or ``auto'', supported by some operating systems, are
 only included if this option is specified.
 
+@itemx --histogram
+@opindex --histogram
+@cindex draw a histogram
+Draw a histogram for each filesystem.
+
 @item -h
 @itemx --human-readable
 @opindex -h
diff -urN fileutils-4.0/src/df.c fileutils-4.0-work/src/df.c
--- fileutils-4.0/src/df.c      Sat Sep 19 10:09:23 1998
+++ fileutils-4.0-work/src/df.c Mon Jan 31 11:19:33 2000
@@ -17,7 +17,8 @@
 
 /* Written by David MacKenzie <[EMAIL PROTECTED]>.
    --human-readable and --megabyte options added by [EMAIL PROTECTED]
-   --si and large file support added by [EMAIL PROTECTED]  */
+   --si and large file support added by [EMAIL PROTECTED]  
+   --histogram added by [EMAIL PROTECTED] */
 
 #include <config.h>
 #if HAVE_INTTYPES_H
@@ -71,6 +72,9 @@
    SunOs4.1.3, for one.  It is *not* necessary on Linux.  */
 static int require_sync = 0;
 
+/* If nonzero, print a histogram for each filesystem. */
+static int show_histogram;
+
 /* Nonzero if errors have occurred. */
 static int exit_status;
 
@@ -128,6 +132,7 @@
   {"no-sync", no_argument, NULL, CHAR_MAX + 2},
   {"type", required_argument, NULL, 't'},
   {"exclude-type", required_argument, NULL, 'x'},
+  {"histogram", no_argument, NULL, CHAR_MAX + 4},
   {"help", no_argument, &show_help, 1},
   {"version", no_argument, &show_version, 1},
   {NULL, 0, NULL, 0}
@@ -218,6 +223,8 @@
 {
   struct fs_usage fsu;
   const char *stat_file;
+  double blocks_percent_used; /* Needs to be available outside of previous scope */
+
 
   if (me_remote && show_local_fs)
     return;
@@ -306,7 +313,7 @@
       char buf[2][LONGEST_HUMAN_READABLE + 1];
       char availbuf[LONGEST_HUMAN_READABLE + 2];
       char *avail;
-      double blocks_percent_used;
+
       uintmax_t blocks_used;
 
       if (fsu.fsu_blocks == -1 || fsu.fsu_blocks < fsu.fsu_bfree)
@@ -363,6 +370,22 @@
       printf (" %s", mount_point);
     }
   putchar ('\n');
+
+  if (show_histogram)
+    {
+        int i;
+       printf ("0%% |") ;
+       /* Use 20 chars */
+       for ( i = 1 ; i <= 50 ; i++) 
+          {
+               if (blocks_percent_used - (i*2) >= 0)
+                 putchar ('#') ;
+                else
+                  putchar (' ') ;
+         }
+       printf ("| 100%%\n") ;
+   }
+
 }
 
 /* Identify the directory, if any, that device
@@ -589,6 +612,7 @@
 \n\
   -a, --all             include filesystems having 0 blocks\n\
       --block-size=SIZE use SIZE-byte blocks\n\
+      --histogram       show histogram of percentage\n\
   -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)\n\
   -H, --si              likewise, but use powers of 1000 not 1024\n\
   -i, --inodes          list inode information instead of block usage\n\
@@ -679,6 +703,9 @@
          human_block_size (optarg, 1, &output_block_size);
          break;
 
+       case CHAR_MAX + 4:
+         show_histogram = 1 ;
+         break;
        case 'F':
          /* Accept -F as a synonym for -t for compatibility with Solaris.  */
        case 't':

Reply via email to