tput(1) manpage, add -b buflen option, exit status

This commit is contained in:
cinap_lenrek 2012-07-05 14:52:38 +02:00
parent acce478d8e
commit 7c197c8e73
2 changed files with 65 additions and 9 deletions

39
sys/man/1/tput Normal file
View file

@ -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 </dev/zero
.EE
.SH SOURCE
.B /sys/src/cmd/tput.c
.SH SEE ALSO
.IR iostats (4)
.SH DIAGNOSTICS
.I Tput
sets error status on read error.

View file

@ -1,23 +1,41 @@
#include <u.h>
#include <libc.h>
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);
}