xref: /inferno-os/utils/echo/echo.c (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1 #include <lib9.h>
2 
3 void
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