xref: /inferno-os/utils/echo/echo.c (revision 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a)
1 #include <lib9.h>
2 
3 void
main(int argc,char * argv[])4 main(int argc, char *argv[])
5 {
6 	int nflag;
7 	int i, len;
8 	char *buf, *p;
9 
10 	nflag = 0;
11 	if(argc > 1 && strcmp(argv[1], "-n") == 0)
12 		nflag = 1;
13 
14 	len = 1;
15 	for(i = 1+nflag; i < argc; i++)
16 		len += strlen(argv[i])+1;
17 
18 	buf = malloc(len);
19 	if(buf == 0)
20 		exits("no memory");
21 
22 	p = buf;
23 	for(i = 1+nflag; i < argc; i++)
24 		p += sprint(p, i == argc-1 ? "%s":"%s ", argv[i]);
25 
26 	if(!nflag)
27 		sprint(p, "\n");
28 
29 	if(write(1, buf, strlen(buf)) < 0)
30 		fprint(2, "echo: write error: %r\n");
31 
32 	exits((char *)0);
33 }
34