From 7c197c8e730a3040d9718f9d2c3ad5f44a988a57 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 5 Jul 2012 14:52:38 +0200 Subject: tput(1) manpage, add -b buflen option, exit status --- sys/man/1/tput | 39 +++++++++++++++++++++++++++++++++++++++ sys/src/cmd/tput.c | 35 ++++++++++++++++++++++++++--------- 2 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 sys/man/1/tput diff --git a/sys/man/1/tput b/sys/man/1/tput new file mode 100644 index 000000000..6828a56b6 --- /dev/null +++ b/sys/man/1/tput @@ -0,0 +1,39 @@ +.TH TPUT 1 +.SH NAME +tput \- measure read throughput +.SH SYNOPSIS +.B tput +[ +.B -b +.I buflen +] [ +.B -p +] +.SH DESCRIPTION +.I Tput +continuously reads standard input writing throughput statistics +to standard error. The throughput value is calculated and written +once per second and automatically scaled to kilo-, mega- or gigabytes. +.PP +When the +.B -p +flag is specified, +.I tput +will write the data read to standard output (the default is to +discard the data). +.PP +A read blocksize (default is 8192) in bytes can be given with the +.B -b +.I buflen +option. +.SH EXAMPLE +.EX +tput #include -enum {buflen = 4096}; +int dopipe; +int buflen = 8192; +uvlong bc, sec; + +void +usage(void) +{ + fprint(2, "usage: %s [-b buflen] [-p]\n", argv0); + exits("usage"); +} void main(int argc, char **argv) { - int rc, cpid, fd, dopipe; - static char buf[buflen]; - static uvlong bc, sec; double speed; + int rc, cpid; + char *buf; - dopipe = 0; ARGBEGIN { - case 'p': dopipe = 1; + case 'b': + buflen = atoi(EARGF(usage())); + break; + case 'p': + dopipe = 1; + break; + default: + usage(); } ARGEND + + if(argc != 0) + usage(); bc = 0; sec = 0; + buf = sbrk(buflen); cpid = rfork(RFPROC | RFMEM); if(cpid == 0) { while(1) { @@ -35,8 +53,7 @@ main(int argc, char **argv) if(dopipe) write(1, buf, rc); bc += rc; } - sprint(buf, "/proc/%d/note", cpid); - fd = open(buf, OWRITE); - write(fd, "kill", 4); + postnote(PNPROC, cpid, "kill"); if(rc < 0) sysfatal("%r"); + exits(0); } -- cgit v1.2.3