xref: /plan9/sys/src/cmd/echo.c (revision 0809e9a7eb19e11e5c17875a07c90287d0fe3e31)
1 #include <u.h>
2 #include <libc.h>
3 
4 void
main(int argc,char * argv[])5 main(int argc, char *argv[])
6 {
7 	int nflag;
8 	int i, len;
9 	char *buf, *p;
10 
11 	nflag = 0;
12 	if(argc > 1 && strcmp(argv[1], "-n") == 0)
13 		nflag = 1;
14 
15 	len = 1;
16 	for(i = 1+nflag; i < argc; i++)
17 		len += strlen(argv[i])+1;
18 
19 	buf = malloc(len);
20 	if(buf == 0)
21 		exits("no memory");
22 
23 	p = buf;
24 	for(i = 1+nflag; i < argc; i++){
25 		strcpy(p, argv[i]);
26 		p += strlen(p);
27 		if(i < argc-1)
28 			*p++ = ' ';
29 	}
30 
31 	if(!nflag)
32 		*p++ = '\n';
33 
34 	if(write(1, buf, p-buf) < 0){
35 		fprint(2, "echo: write error: %r\n");
36 		exits("write error");
37 	}
38 
39 	exits((char *)0);
40 }
41