ref: 91fc7321c2b7df934036f7b88ffdd5d6c826e941
dir: /ex/ex1-16.c/
#include <u.h>
#include <libc.h>
#include <bio.h>
/*
Print the length of arbitraryily long input lines
and as much as possible of the text.
*/
void
main(int, char*[])
{
Biobuf *in, *out;
in = Bfdopen(0, OREAD);
out = Bfdopen(1, OWRITE);
u32int len = 0;
while(1){
long r;
int n;
// Read
r = Bgetrune(in);
if(r == Beof)
break;
if(r < 0)
sysfatal("err: could not read rune → %r\n");
len++;
if(r == L'\n'){
Bprint(out, "\n» Line length = %uld\n", len);
len = 0;
}
// Write
n = Bputrune(out, r);
if(n < 0)
sysfatal("err: could not write rune → %r\n");
}
Bterm(in);
Bterm(out);
exits(nil);
}