xref: /inferno-os/utils/echo/echo.c (revision ecc9caba0e344ed50c05ee8156b2734f4d76e463)
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