pstat/swapinfo -h flag
Giorgos Keramidas
keramida at freebsd.org
Sat Oct 23 11:30:08 PDT 2004
Hello all,
I've added a -h flag to pstat(8)/swapinfo(8) that works much like the -h
flag of du(1), ls(1) and other tools. Does anyone see something that is
obviously wrong with this, or have a better idea about implementing it?
The diff is against pstat in 6.0-CURRENT.
--- pstat-humanize.patch starts here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/usr.sbin/pstat/Makefile,v
retrieving revision 1.12
diff -u -r1.12 Makefile
--- Makefile 4 Apr 2003 17:49:17 -0000 1.12
+++ Makefile 23 Oct 2004 17:50:21 -0000
@@ -9,6 +9,6 @@
WARNS?= 2
DPADD= ${LIBKVM}
-LDADD= -lkvm
+LDADD= -lkvm -lutil
.include <bsd.prog.mk>
Index: pstat.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/pstat/pstat.c,v
retrieving revision 1.91
diff -u -r1.91 pstat.c
--- pstat.c 7 Aug 2004 04:27:52 -0000 1.91
+++ pstat.c 23 Oct 2004 18:06:53 -0000
@@ -64,6 +64,7 @@
#include <err.h>
#include <fcntl.h>
#include <kvm.h>
+#include <libutil.h>
#include <limits.h>
#include <nlist.h>
#include <stdio.h>
@@ -86,6 +87,7 @@
{ "" }
};
+static int humanflag;
static int usenumflag;
static int totalflag;
static int swapflag;
@@ -119,11 +121,11 @@
opts = argv[0];
if (!strcmp(opts, "swapinfo")) {
swapflag = 1;
- opts = "kM:N:";
- usagestr = "swapinfo [-k] [-M core [-N system]]";
+ opts = "hkM:N:";
+ usagestr = "swapinfo [-h] [-k] [-M core [-N system]]";
} else {
- opts = "TM:N:fknst";
- usagestr = "pstat [-Tfknst] [-M core [-N system]]";
+ opts = "TM:N:hfknst";
+ usagestr = "pstat [-Tfhknst] [-M core [-N system]]";
}
while ((ch = getopt(argc, argv, opts)) != -1)
@@ -131,6 +133,9 @@
case 'f':
fileflag = 1;
break;
+ case 'h':
+ humanflag = 1;
+ break;
case 'k':
putenv("BLOCKSIZE=1K");
break;
@@ -489,6 +494,8 @@
static void
print_swap(struct kvm_swap *ksw)
{
+ char usedbuf[5];
+ char totalbuf[5];
int hlen, pagesize;
long blocksize;
@@ -501,10 +508,21 @@
(void)printf("%-15s %*d ",
ksw->ksw_devname, hlen,
CONVERT(ksw->ksw_total));
- (void)printf("%8d %8d %5.0f%%\n",
- CONVERT(ksw->ksw_used),
- CONVERT(ksw->ksw_total - ksw->ksw_used),
- (ksw->ksw_used * 100.0) / ksw->ksw_total);
+ if (humanflag) {
+ humanize_number(usedbuf, sizeof(usedbuf),
+ CONVERT(blocksize * ksw->ksw_used), "",
+ HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
+ humanize_number(totalbuf, sizeof(totalbuf),
+ CONVERT(blocksize * ksw->ksw_total), "",
+ HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
+ printf("%8s %8s %5.0f%%\n", usedbuf, totalbuf,
+ (ksw->ksw_used * 100.0) / ksw->ksw_total);
+ } else {
+ printf("%8d %8d %5.0f%%\n",
+ CONVERT(ksw->ksw_used),
+ CONVERT(ksw->ksw_total - ksw->ksw_used),
+ (ksw->ksw_used * 100.0) / ksw->ksw_total);
+ }
}
}
--- pstat-humanize.patch ends here ---
More information about the freebsd-hackers
mailing list