ref: 91fc7321c2b7df934036f7b88ffdd5d6c826e941
dir: /ex/ex1-18.c/
#include <u.h>
#include <libc.h>
#include <bio.h>
const MIN = 80;
/*
Skip blank lines and trim trailing whitespace.
*/
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, i, last;
// 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 < 2)
continue;
last = 0;
for(i = 0; i < len-1; i++){
switch(line[i]){
case ' ':
case '\t':
break;
default:
last = i;
}
}
if(last != len-1){
len = last+2;
line[last+1] = '\n';
}
// Write
n = Bwrite(out, line, len);
if(n < 0)
sysfatal("err: could not write line → %r\n");
}
Bterm(in);
Bterm(out);
exits(nil);
}