shithub: kandr

ref: 91fc7321c2b7df934036f7b88ffdd5d6c826e941
dir: /ex/ex1-17.c/

View raw version
#include <u.h>
#include <libc.h>
#include <bio.h>

const MIN = 80;

/* 
Print lines greater than 80 runes. 
*/
void
main(int, char*[])
{
	Biobuf	*in, *out;
	in = Bfdopen(0, OREAD);
	out = Bfdopen(1, OWRITE);

	u32int len = 0;
	while(1){
		char *line;
		int len, n;

		// Read
		line = Brdline(in, '\n');
		len = Blinelen(in);
		if(line == 0)
			break;
		if(len < 0)
			sysfatal("err: could not read line → %r\n");

		if(len <= 80)
			continue;

		// Write
		n = Bwrite(out, line, len);
		if(n < 0)
			sysfatal("err: could not write rune → %r\n");
	}

	Bterm(in);
	Bterm(out);

	exits(nil);
}