Author: pluknet
Date: Thu Jun 30 09:20:26 2011
New Revision: 223690
URL: http://svn.freebsd.org/changeset/base/223690

Log:
  Fix quota(1) output.
  
  - Fix calculation of 1024-byte sized blocks from disk blocks shown when -h
  option isn't specified. It was broken with quota64 integration.
  - In prthumanval(): limit the size of a buffer passed to humanize_number()
  to a width of 5 bytes but allow a shorter length if requested. That's what
  users expect.
  
  PR:           bin/150151
  Reviewed by:  Kirk McKusick

Modified:
  head/usr.bin/quota/quota.c

Modified: head/usr.bin/quota/quota.c
==============================================================================
--- head/usr.bin/quota/quota.c  Thu Jun 30 05:28:10 2011        (r223689)
+++ head/usr.bin/quota/quota.c  Thu Jun 30 09:20:26 2011        (r223690)
@@ -264,8 +264,11 @@ prthumanval(int len, u_int64_t bytes)
 {
        char buf[len + 1];
 
-       humanize_number(buf, sizeof(buf), bytes, "", HN_AUTOSCALE,
-           HN_B | HN_NOSPACE | HN_DECIMAL);
+       /*
+        * Limit the width to 5 bytes as that is what users expect.
+        */
+       humanize_number(buf, sizeof(buf) < 5 ? sizeof(buf) : 5, bytes, "",
+           HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
 
        (void)printf(" %*s", len, buf);
 }
@@ -352,10 +355,13 @@ showquotas(int type, u_long id, const ch
                        prthumanval(7, dbtob(qup->dqblk.dqb_bhardlimit));
                } else {
                        printf(" %7ju%c %7ju %7ju",
-                           dbtob(1024) * (uintmax_t)qup->dqblk.dqb_curblocks,
+                           (uintmax_t)dbtob(qup->dqblk.dqb_curblocks)
+                               / 1024,
                            (msgb == NULL) ? ' ' : '*',
-                           dbtob(1024) * (uintmax_t)qup->dqblk.dqb_bsoftlimit,
-                           dbtob(1024) * (uintmax_t)qup->dqblk.dqb_bhardlimit);
+                           (uintmax_t)dbtob(qup->dqblk.dqb_bsoftlimit)
+                               / 1024,
+                           (uintmax_t)dbtob(qup->dqblk.dqb_bhardlimit)
+                               / 1024);
                }
                if (msgb != NULL)
                        bgrace = timeprt(qup->dqblk.dqb_btime);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to