xref: /plan9/sys/src/cmd/aux/lines.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 
5 void
cat(int f,char * s)6 cat(int f, char *s)
7 {
8 	Biobuf b;
9 	char *p;
10 
11 	Binit(&b, f, OREAD);
12 	while((p = Brdline(&b, '\n')) != nil)
13 		if(write(1, p, Blinelen(&b)) != Blinelen(&b))
14 			sysfatal("write error copying %s: %r", s);
15 	Bterm(&b);
16 }
17 
18 void
main(int argc,char * argv[])19 main(int argc, char *argv[])
20 {
21 	int f, i;
22 
23 	argv0 = "lines";
24 	if(argc == 1)
25 		cat(0, "<stdin>");
26 	else for(i=1; i<argc; i++){
27 		f = open(argv[i], OREAD);
28 		if(f < 0)
29 			sysfatal("can't open %s: %r", argv[i]);
30 		else{
31 			cat(f, argv[i]);
32 			close(f);
33 		}
34 	}
35 	exits(0);
36 }
37 
38