xref: /plan9/sys/src/cmd/aux/zerotrunc.c (revision 39734e7ed1eb944f5e7b41936007d0d38b560d7f)
1eeca34feSDavid du Colombier /*
2eeca34feSDavid du Colombier  * cat standard input until you get a zero byte
3eeca34feSDavid du Colombier  */
4eeca34feSDavid du Colombier 
5eeca34feSDavid du Colombier #include <u.h>
6eeca34feSDavid du Colombier #include <libc.h>
7eeca34feSDavid du Colombier 
8eeca34feSDavid du Colombier void
main(void)9eeca34feSDavid du Colombier main(void)
10eeca34feSDavid du Colombier {
11*39734e7eSDavid du Colombier 	char buf[4096];
12*39734e7eSDavid du Colombier 	char *p;
13*39734e7eSDavid du Colombier 	int n;
14eeca34feSDavid du Colombier 
15*39734e7eSDavid du Colombier 	while((n = read(0, buf, sizeof(buf))) > 0){
16*39734e7eSDavid du Colombier 		p = memchr(buf, 0, n);
17*39734e7eSDavid du Colombier 		if(p != nil)
18*39734e7eSDavid du Colombier 			n = p-buf;
19*39734e7eSDavid du Colombier 		if(n > 0)
20*39734e7eSDavid du Colombier 			write(1, buf, n);
21*39734e7eSDavid du Colombier 		if(p != nil)
22*39734e7eSDavid du Colombier 			break;
23eeca34feSDavid du Colombier 	}
24eeca34feSDavid du Colombier 	exits(0);
25eeca34feSDavid du Colombier }
26eeca34feSDavid du Colombier 
27